골든래빗은 더 탁월한 가치를 제공하는 콘텐츠 프로덕션 & 프로바이더 입니다. 골든래빗은 취미, 경제, 수험서, 만화, IT 등 다양한 분야에서 책을 제작하고 있습니다.골든래빗은 더 탁월한 가치를 제공하는 콘텐츠 프로덕션 & 프로바이더 입니다. 골든래빗은 취미, 경제, 수험서, 만화, IT 등 다양한 분야에서 책을 제작하고 있습니다.

[아마존 EC2 02] 아마존 EC2 구축하기

2026년 4월 10일조회 1

이 글은 《AWS 잘하는 개발자 되기》에서 발췌했습니다.

AWS 잘하는 개발자 되기

AWS 잘하는 개발자 되기

ISBN 9791194383512지은이 김재욱40,000
교보문고예스24알라딘

[아마존 EC2 02] 아마존 EC2 구축하기

이번에는 앞서 살펴본 내용을 바탕으로 EC2 인스턴스를 구축하겠습니다. EC2 인스턴스를 구축한 다음, EC2 인스턴스로 접속할 수 있는 다양한 접속 패턴을 알아보겠습니다.

1. 클라우드포메이션으로 EC2 인스턴스 구축하기

01 단계 EC2 인스턴스를 생성하는 클라우드포메이션의 yml 파일은 다음과 같습니다.

```EC2 생성하는 클라우드포메이션 yml 파일

파일 이름 : VPC.yml, Security_Group.yml, EC2.yml

클라우드포메이션 스택 생성 순서 : VPC.yml → Security_Group.yml → EC2.yml

```

클라우드포메이션 전체 코드는 깃허브 리포지터리 [chapter4] → [EC2] → [chapter4.3-Create-EC2] 폴더에서 확인할 수 있습니다. 이번에 구축할 구성은 다음과 같습니다.

네트워크 구성은 2개의 퍼블릭 서브넷과 4개의 프라이빗 서브넷으로 구성되며, 퍼블릭 서브넷에 EC2 인스턴스를 배치하고 인터넷 게이트웨이를 통해 EC2 인스턴스로 접속합니다.

02 단계 Security_Group.yml 파일에 보안 그룹 생성에 필요한 리소스를 추가하겠습니다.

```Security_Group.yml

Type: AWS::EC2::SecurityGroup # ➊

Properties: # ➋

GroupDescription: !Sub ${SystemName}-${EnvName}-ec2-sg

GroupName: !Sub ${SystemName}-${EnvName}-ec2-sg

SecurityGroupIngress:

- IpProtocol: tcp

FromPort: 22

ToPort: 22

CidrIp: 0.0.0.0/0

VpcId:

Fn::ImportValue: !Sub ${EnvName}-vpc

```

➊ 타입에는 AWS::ec2::SecurityGroup을 입력하여, 보안 그룹을 생성합니다. ➋ 보안 그룹 속성을 설정합니다. GroupName에 보안 그룹의 이름을 지정합니다. GroupDescription에 보안 그룹 설명을 입력합니다. SecurityGroupIngress는 인바운드 규칙으로 접속을 허용할 IP 주소와 포트를 입력합니다. 마지막으로 보안 그룹이 생성될 VPC를 지정합니다.

03 단계 EC2.yml 파일에 EC2 인스턴스 생성에 필요한 파라미터를 추가하겠습니다.

```EC2.yml

KeyPairName: # ➊

Description: gr-product-ec2 EC2 Key Pair

Type: String

Default: gr-product-ec2-key

EC2AMI: # ➋

Description: gr-product-ec2 EC2 AMI

Type: String

Default: ami-02d081c743d676996

InstanceType: # ➌

Description: gr-product-ec2 EC2 instance type

Type: String

Default: t2.micro

```

➊ EC2 인스턴스 생성에 필요한 파라미터로는 키 페어 이름을 지정하는 KeyPairName과 ➋ AMI를 지정하는 EC2 AMI ➌ 인스턴스 유형을 지정하는 InstanceType으로 구성되어 있습니다. AMI와 인스턴스 유형은 아마존 리눅스 2와 저렴한 비용으로 이용할 수 있는 인스턴스 유형 t2.micro를 선택했습니다.

04 단계 EC2.yml 파일에 EC2 인스턴스 키 페어 생성에 필요한 리소스를 추가하겠습니다.

```EC2.yml

NewKeyPair:

Type: AWS::EC2::KeyPair # ➊

Properties:

KeyName: !Ref KeyPairName

```

➊ EC2 인스턴스 키 페어를 생성합니다. 키 페어는 AWS 관리 콘솔에서 직접 생성할 필요가 있었으나, 2022년 업데이트를 통해 클라우드포메이션으로도 생성할 수 있게 되었습니다. AWS 관리 콘솔로 키 페어를 생성하면, 생성한 키 페어가 로컬 PC로 즉시 다운로드되지만 클라우드포메이션으로 키 페어를 생성하면 파라미터 스토어에 저장됩니다.

05 단계 EC2.yml 파일에 EC2 인스턴스 생성을 위한 Resources를 추가하겠습니다.

```EC2.yml

Type: AWS::EC2::Instance # ➊

Properties: # ➋

ImageId: !Ref EC2AMI

InstanceType: !Ref InstanceType

KeyName: !Ref NewKeyPair

NetworkInterfaces: # ➌

- DeviceIndex: 0

SubnetId: { "Fn::ImportValue": !Sub "${EnvName}-public-subnet-1a" }

GroupSet:

- Fn::ImportValue: !Sub ${EnvName}-ec2-sg

AssociatePublicIpAddress: true

BlockDeviceMappings: # ➍

- DeviceName: /dev/xvda

Ebs:

VolumeSize: 100

VolumeType: gp3

Encrypted : true

```

➊ EC2 인스턴스 생성을 위해 AWS::ec2::Instance 타입을 입력합니다. ➌ EC2 인스턴스 속성을 설정합니다. 먼저 AMI 지정을 위한 ImageId와, 인스턴스 유형을 지정하기 위한 InstanceType, 키 페어 사용을 위한 KeyName을 설정합니다. ➌ EC2 인스턴스의 네트워크를 설정을 위해 NetworkInterfaces를 이용합니다. NetworkInterfaces에는 EC2 인스턴스를 배치할 서브넷과 사용할 보안 그룹을 지정할 수 있습니다. 이번에는 인터넷 게이트웨이를 통해 EC2 인스턴스에 접속할 생각이므로 AssociatePublicIpAddress을 이용해 퍼블릭 IP 주소를 할당합니다. ➍ EBS 볼륨을 사용하기 위해 BlockDeviceMappings 속성을 추가합니다. 해당 속성에서 EBS 볼륨 크기와 타입, 암호화를 설정할 수 있습니다.

디바이스 이름은 리눅스 OS에 HVM 전가상화이므로 /dev/sda1 혹은 /dev/xvda 사용할 수 있지만, AMI에 따라 디바이스 이름이 나누어질수 있으며, 이번에 선택한 AMI는 /dev/xvda 디바이스 이름을 지정해야 합니다. 디바이스 이름으로 /dev/sda1를 지정한다면, 루트 볼륨을 인식하지 못하고, EC2 인스턴스가 중지됩니다.

UI로 불러와 EC2 인스턴스 리소스 생성하기

다음은 EC2 인스턴스 생성을 어떻게 하는지 UI를 통해 확인해봅시다.

01 단계 우선 클라우드포메이션 스택을 생성합니다. EC2.yml 스택을 생성하면 다음과 같은 파라미터 값이 입력되어 있으며, 별다른 수정 없이 스택을 생성합니다.

02 단계 EC2 콘솔 화면에서 보안 그룹으로 들어와 보면, 생성된 보안 그룹을 확인할 수 있습니다.

03 단계 인바운드 규칙에서는 개방한 22번 포트와 IP 주소를 확인할 수 있습니다.

04 단계 클라우드포메이션으로 키 페어를 생성하면 파라미터 스토어에 키 페어가 저장됩니다.

05 단계 파라미터 스토어에 저장된 파라미터를 클릭하면, 파라미터에 대한 정보를 확인할 수 있으며, 여기에 키 페어를 사용하는 복호화된 암호를 확인할 수 있습니다.

복호화된 암호는 ‘BEGIN RSA PRIVATE KEY’부터 시작하여 ‘END RSA PRIVATE KEY’까지 텍스트 형식으로 지정되어 있습니다. 키 페어를 사용하려면 별도로 파일을 생성해야 하며, 맥OS은 vi 명령어를 사용하여 vi gr-product-ec2-key.pem 형식으로 파일을 만든 다음, 복호화된 암호를 붙여넣습니다.

06 단계 gr-product-ec2-key.pem 파일을 생성한 다음, 다음과 같이 복호화된 암호를 넣으면 키 페어를 이용하여 EC2 인스턴스에 접속할 수 있습니다.

윈도우의 경우 텍스트 파일을 생성하여 암호를 입력하고, 확장자를 pem으로 바꾸어주면 됩니다.

07 단계 마지막으로 EC2 콘솔 화면에서 생성한 EC2 인스턴스를 확인할 수 있습니다.

EC2 인스턴스의 상태는 실행, 중지, 종료(삭제) 3가지 상태로 나눌 수 있으며, 인스턴스 상태를 클릭해서 인스턴스를 실행, 중지, 종료(삭제) 할 수 있습니다.

2. 맥OS 환경에서 EC2 인스턴스 접속

맥OS 환경은 터미널을 이용해서 EC2 인스턴스에 접속합니다.

01 단계 ➊ 접속할는 대상 EC2 인스턴스를 선택합니다. ➋ [연결]을 클릭합니다.

02 단계 ➊ [SSH 클라이언트]를 클릭합니다. ➋ SSH 클라이언트로 접속하는 방법을 확인합니다.

▼키 페어 권한 할당 명령어

```

// ➊ 키 페어 권한 할당

chmod 400 gr-product-ec2-key.pem

```

03 단계 초기 키 페어는 너무 많은 권한을 가지고 있기 때문에, 이 상태에서 접속을 시도한다면 접속이 거부될 수 있습니다. 따라서 키 페어의 권한을 축소시킨 후에 접속을 시도해야 합니다. 터미널을 열고 키 페어가 있는 경로에서 chmod 명령어를 실행합니다.

▼SSH 접속 명령어

```

// ➊ SSH 접속

ssh -i “gr-product-ec2-key.pem” ec2-user@ec2-x-xx-xxx-xxx.ap-northeast-2.compute.amazonaws.com

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

```

➊ SSH 명령어 중에서 -i 옵션을 사용하여 내려받은 키 페어를 지정하고 EC2 인스턴스에 접속을 시도합니다. 이 명령어를 사용하여 원격 인스턴스에 접속할 수 있습니다. ‘Are you sure you want to continue connecting‘라는 문구가 나온다면 ‘yes’를 입력합니다.

04 단계 맥OS 환경에서 EC2 인스턴스로의 접속이 성공적으로 확인되었습니다. 이제 원격 인스턴스에 접속하여 필요한 작업을 수행할 수 있습니다.

▼멕OS 환경에서 EC2 인스턴스에 접속에 성공한 화면 예

3. 윈도우 환경에서 EC2 인스턴스 접속

01 단계 ➊ URL로 들어가서 https://tera-term.softonic.kr/ 테라텀 설치 파일을 다운로드합니다. 윈도우에서는 SSH 접속을 위해 테라텀(Tera Term)이라는 프로그램을 사용합니다.

02 단계 언어 설정에는 한국어를 선택하고, 나머지는 기본값을 유지한 채로 [Next]를 클릭하여 테라텀 설치를 끝마칩니다. ➊ 설치가 완료되었다면 테라텀을 실행하고, 호스트에는 접속할 EC2 인스턴스의 IP 주소(퍼블릭 IP 주소)를 입력합니다. ➋ IP를 입력했다면 [확인]을 클릭합니다.

03 단계 ➊ 처음으로 접속하는 EC2 인스턴스에 접속 시, ‘이 컴퓨터와 키를 known-host 목록에 추가(A)’라는 경고 문구가 표시됩니다. 이는 접속하고자 하는 EC2 인스턴스의 정보가 테라텀에 없다는 문구로 ‘known-host 목록에 추가’의 [계속] 버튼을 클릭합니다. 이처럼 EC2 인스턴스 정보를 테라텀에 추가하면 다음 접속을 시도할 때는 경고 문구가 뜨지 않습니다.

04 단계 ➊ 사용자 이름을 입력합니다. EC2 리눅스 환경의 기본 이름은 ec2-user입니다. ➋ 접속 EC2 인스턴스의 키 페어를 업로드합니다. ➌ 접속을 위해 [확인]을 클릭합니다.

05 단계 윈도우 환경에서 테라텀을 이용해 EC2 인스턴스로의 접속을 시도합니다. 다음과 같은 텍스트가 출력되면 성공입니다.

▼테라텀에서 EC2 인스턴스에 접속에 성공한 화면 예

📚 더 읽기

저자 소개

📚AWS 잘하는 개발자 되기》 자주 묻는 질문

Q.AWS를 시작하려는데, 어디서부터 시작해야 할지 막막합니다. 이 책이 도움이 될까요?

AWS 입문을 망설이는 분들을 위해 이 책은 매우 훌륭한 길잡이가 될 수 있습니다. AWS는 방대한 서비스 집합체이기 때문에, 처음 접하는 사람에게는 어디서부터 시작해야 할지 막막하게 느껴질 수 있습니다. 이 책은 바로 이러한 어려움을 해소하기 위해 'AWS를 쓰려면 알아야 하는 넓고 얕은 배경지식'과 'AWS를 잘 쓰려면 반드시 필요한 네트워크 지식'을 체계적으로 정리하여 제공합니다. AWS의 기본적인 개념부터 필수적인 네트워크 지식까지, 탄탄한 기초를 다질 수 있도록 돕는 것이죠. 특히, 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 노하우가 담겨 있어, 이론적인 설명뿐만 아니라 실제 개발 현장에서 마주칠 수 있는 문제들을 해결하는 데에도 큰 도움이 될 것입니다. 입문자뿐만 아니라, 기본을 다시 다지고 싶은 초보 개발자, 대규모 서비스 운영 경험을 엿보고 싶은 중급 개발자 모두에게 유용한 책입니다. AWS 여정을 시작하는 데 든든한 동반자가 되어줄 것입니다. 《AWS 잘하는 개발자 되기》를 통해 AWS 전문가로 발돋움해보세요.

Q.이 책은 어떤 개발자에게 가장 적합한가요? 백엔드 개발 경험이 없어도 괜찮을까요?

《AWS 잘하는 개발자 되기》는 AWS를 처음 접하는 개발자뿐만 아니라, AWS를 사용하고 있지만 더욱 깊이 있는 이해를 원하는 개발자 모두에게 적합합니다. 특히, 백엔드 개발 경험이 부족하더라도 AWS의 기본적인 개념과 네트워크 지식을 쌓을 수 있도록 구성되어 있어, 충분히 따라갈 수 있습니다. 책에서는 AWS를 사용하기 위한 넓고 얕은 배경지식부터 시작하여, AWS를 효율적으로 활용하기 위한 네트워크 지식을 자세하게 설명합니다. 200여 개의 시스템 구성과 도표를 통해 시각적으로 이해를 돕고 있어, 개념을 더욱 명확하게 파악할 수 있습니다. 백엔드 개발 경험이 없더라도, 책에서 제시하는 로드맵을 따라 차근차근 학습하면 AWS를 활용한 개발 능력을 향상시킬 수 있습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 경험과 노하우가 담겨 있어, 실제 개발 현장에서 마주할 수 있는 문제들을 해결하는 데에도 큰 도움이 될 것입니다. 백엔드 개발 경험이 없더라도 AWS를 배우고 싶다면, 《AWS 잘하는 개발자 되기》가 훌륭한 입문서가 될 것입니다.

Q.이 책에서 다루는 AWS 서비스는 어떤 것들이 있나요? 주요 서비스 위주로 설명되어 있나요?

《AWS 잘하는 개발자 되기》는 AWS의 핵심적인 서비스들을 폭넓게 다루면서도, 각 서비스의 깊이 있는 이해를 돕는 데 초점을 맞추고 있습니다. 단순히 나열하는 것이 아니라, 실제 개발 현장에서 자주 사용되는 주요 서비스들을 중심으로 설명하고, 각 서비스가 어떻게 연동되어 시너지를 내는지 보여줍니다. 이 책은 AWS 입문자와 초급 개발자를 대상으로 하기 때문에, 복잡하고 난해한 고급 기능보다는 기본적인 사용법과 핵심 개념을 중심으로 설명합니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자는, AWS 서비스를 효과적으로 활용하기 위한 실질적인 팁과 노하우를 아낌없이 공유합니다. 200여 개의 시스템 구성과 도표는 독자들의 이해도를 높이는 데 크게 기여합니다. AWS의 주요 서비스들을 체계적으로 학습하고, 실제 개발에 적용할 수 있는 능력을 키우고 싶다면, 《AWS 잘하는 개발자 되기》가 좋은 선택이 될 것입니다.

Q.책에서 설명하는 네트워크 지식은 어느 정도 수준인가요? 네트워크 기초가 부족해도 이해할 수 있을까요?

《AWS 잘하는 개발자 되기》는 AWS를 효과적으로 사용하기 위해 반드시 필요한 네트워크 지식을 상세하게 다룹니다. 네트워크 기초가 부족한 분들도 쉽게 이해할 수 있도록, 기본적인 개념부터 차근차근 설명합니다. IP 주소, 서브넷, 라우팅, 방화벽 등 네트워크의 핵심 요소들을 그림과 함께 설명하여 시각적인 이해를 돕고, AWS 환경에서 이러한 요소들이 어떻게 적용되는지 명확하게 보여줍니다. 또한, AWS의 Virtual Private Cloud (VPC)와 같은 네트워크 서비스를 설정하고 관리하는 방법을 단계별로 안내하여, 실제 환경에서 네트워크를 구축하고 운영하는 데 필요한 실질적인 능력을 키울 수 있도록 돕습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 경험을 바탕으로, 네트워크 기초가 부족한 개발자도 AWS를 능숙하게 사용할 수 있도록 돕는 것이 이 책의 목표입니다. 《AWS 잘하는 개발자 되기》를 통해 네트워크 기초를 다지고 AWS 전문가로 거듭나세요.

Q.스터디 모임 '내코부'는 무엇인가요? 책을 읽고 스터디에 참여하면 어떤 도움이 되나요?

'내코부, 내 코드를 부탁해'는 골든래빗에서 운영하는 개발자 성장 프로젝트의 일환으로, 함께 공부하고 토론하며 성장하는 스터디 모임입니다. 《AWS 잘하는 개발자 되기》를 읽고 내코부 스터디에 참여하면, 책의 내용을 더욱 깊이 있게 이해하고 실질적인 활용 능력을 키울 수 있습니다. 스터디에서는 책에서 다루는 AWS 서비스들을 직접 사용해보고, 서로의 경험을 공유하며 배우는 시간을 갖습니다. 또한, AWS 전문가의 멘토링을 통해 어려운 문제를 해결하고, 자신의 프로젝트에 AWS를 적용하는 방법을 배울 수 있습니다. 혼자 공부할 때는 놓치기 쉬운 부분을 스터디 멤버들과 함께 토론하며 보완하고, 다양한 관점을 접할 수 있다는 장점도 있습니다. 스터디를 통해 얻은 지식과 경험은 실제 개발 현장에서 문제를 해결하고, 더 나은 코드를 작성하는 데 큰 도움이 될 것입니다. 내코부 디스코드 채널(discord.com/invite/BYRpaDrfbH)에서 스터디에 참여하고, 함께 성장하는 기회를 잡아보세요. 《AWS 잘하는 개발자 되기》와 내코부 스터디를 통해 AWS 전문가로 도약하세요.

Q.책에 200여 개의 시스템 구성과 도표가 있다고 하는데, 그림 자료가 많은 편인가요? 시각적으로 이해하기 쉬운가요?

네, 《AWS 잘하는 개발자 되기》는 200여 개의 시스템 구성과 도표를 사용하여 AWS의 복잡한 개념을 시각적으로 명확하게 전달하는 데 중점을 두고 있습니다. 단순히 텍스트로만 설명하는 것이 아니라, 그림과 도표를 통해 AWS 서비스의 작동 방식, 아키텍처 구성, 데이터 흐름 등을 한눈에 파악할 수 있도록 돕습니다. 특히, AWS의 다양한 서비스를 조합하여 복잡한 시스템을 구축하는 과정을 그림으로 보여주기 때문에, 전체적인 구조를 이해하는 데 매우 효과적입니다. 또한, 각 도표에는 상세한 설명이 덧붙여져 있어, 그림만으로는 이해하기 어려울 수 있는 부분까지 명확하게 해소해줍니다. 그림 자료가 풍부하고 시각적으로 이해하기 쉽기 때문에, AWS를 처음 접하는 사람도 부담 없이 학습할 수 있습니다. 3년 연속 〈Japan AWS All Certifications Engineer〉를 수상한 저자의 노하우가 담긴 시각 자료들은, 독자들의 AWS 이해도를 높이는 데 크게 기여할 것입니다. 《AWS 잘하는 개발자 되기》로 시각적인 학습을 통해 AWS를 마스터하세요.

Q.이 책을 읽고 AWS Certified Cloud Practitioner 자격증 시험 준비에도 도움이 될까요?

《AWS 잘하는 개발자 되기》는 AWS Certified Cloud Practitioner 자격증 시험 준비에도 충분히 도움이 될 수 있습니다. 이 책은 AWS의 기본적인 개념과 서비스들을 폭넓게 다루고 있으며, 시험에서 자주 출제되는 핵심 내용들을 자세하게 설명합니다. 특히, AWS의 주요 서비스들에 대한 설명은 시험 준비에 필수적인 지식을 제공하며, 200여 개의 시스템 구성과 도표는 AWS 아키텍처에 대한 이해도를 높여줍니다. 또한, 책에서 다루는 네트워크 지식은 시험의 네트워크 관련 문제 해결에 도움이 될 것입니다. 물론, 이 책만으로 모든 시험 문제를 완벽하게 대비할 수는 없지만, AWS Certified Cloud Practitioner 시험의 기본적인 내용을 이해하고 합격에 필요한 기반 지식을 쌓는 데 매우 효과적입니다. 추가적으로 AWS에서 제공하는 공식 문서나 모의고사를 함께 활용하면 더욱 효과적인 시험 준비가 될 것입니다. 《AWS 잘하는 개발자 되기》로 AWS Certified Cloud Practitioner 자격증 취득에 한 걸음 더 다가가세요.