AWS-EC2
1. EC2에 대한 이야기
간단히 말해서 컴퓨터입니다.
컴퓨터는 사거나 관리할 필요없이 인터넷으로 접속해서 활용할 수 있도록 AWS에서 제공하는 가상 컴퓨터를 빌려쓴다고 생각하면 됩니다.
내가 원하는 사양(CPU, 메모리, 저장공간)으로 만든 클라우드 컴퓨터를 필요할때마다 생성해서 사용할 수 있습니다.
Resources:
AWSVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: Name
Value: AWSVPC
AWSPublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref AWSVPC
CidrBlock: 10.0.1.0/24
AvailabilityZone: ap-northeast-2a
Tags:
- Key: Name
Value: AWSpublicsubnet1
AWSInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: AWSinternetgateway
AWSVPCGatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref AWSVPC
InternetGatewayId: !Ref AWSInternetGateway
AWSPublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref AWSVPC
Tags:
- Key: Name
Value: AWSpublicroutetable
AWSPublicRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref AWSPublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref AWSInternetGateway
AWSPublicSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref AWSPublicRouteTable
SubnetId: !Ref AWSPublicSubnet1
AWSSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: 22, 80, 443
VpcId: !Ref AWSVPC
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
Description: ssh
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
Description: http
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
Description: https
Outputs:
AWSPublicSubnet1Id:
Description: AWSPublicSubnet1Id
Value: !Ref AWSPublicSubnet1
Export:
Name: AWSPublicSubnet1Id
AWSSecurityGroupId:
Description: AWSSecurityGroupId
Value: !Ref AWSSecurityGroup
Export:
Name: AWSSecurityGroupId
2. 키 페어 생성
우선 키페어를 생성해야합니다. 생성되는 EC2에 공개키가 저장되고 개인키를 소유하여 해당 EC2에 접근할 수 있게됩니다.
우선 키페어 생성를 생성하겠습니다.
EC2 콘솔에서 네크워크 및 보안 - 키 페어 메뉴가 있습니다.
- 이름 : AWS_KEY
- 키페어유형 : RSA
- 프라이빗 키 파일 형식 : .ppk
프라이빗 키의 경우 pem과 ppk를 putty를 이용하여 서로 변환하여 만들수 있으니 편한걸로 만드시되 생성 후 다운로드되는 프라이빗 키는 꼭 분실되지 않도록 보관합니다.
2. EC2 - Console(콘솔)
이전 클라우드포메이션의 Outputs까지 적용한 상태로 인프라를 생성합니다.
생성이 완료되면 출력에서 제대로 Outputs까지 생성되었는지 확인합니다.
인스턴스 시작을 눌러서 인스턴스를 생성해봅니다. 프리티거 기준으로 사양을 잡아보겠습니다.
- 이름 : AWS-public-instance-1
- 애플리캐이션 및 OS 이미지 : Ubuntu
- 저는 Ubuntu를 좋아하는데 다른걸 원하시면 다른걸 사용하셔도 됩니다.
- 버전이 계속 올라감으로 AMI ID가 계속 변합니다
- 지금 기준 24.04 LTS 버전으로 64비트 기반은 ami-024ea438ab0376a47로 확인됩니다.
- 인스턴스 유형 : t2.micro
- 키 페어 : AWS_KEY
- 네트워크 설정은 편집을 눌러야 VPC를 변경이 가능합니다
- VPC : AWSVPC
- 서브넷 : AWSpublicsubnet1
- 퍼블릭 IP 자동 할당 : 활성화
- 활성화를 해야 외부에서 접근이 가능합니다.
- 방화벽(보안그룹) : 기존 보안그룹선택(AWSSecurityGroup)
- 고급 네트워크 구성 : 기본 IP -> 10.0.1.10
- 내부에서 사용될 IP를 고정하여 관리합니다.
- 이 작업은 EC2하나를 사용할떈 안하셔도되긴합니다.
- 스토리지 : 8GiB gp3
그럼 인스턴스를 시작하고 생성되서 완료될때까지 잠시 대기합니다.
해당 서버를 어떻게 사용할지에따라 재부팅마다 초기화되는 퍼블릭 IP를 부여받아 사용하셔도되고 ALB나 Route53등을 이용해서 처리해도됩니다만 탄력적 IP를 부여하셔도되고 이 부분은 추후 AWS글을 다시 작성할때 정리해보겠습니다.
생성이 완료되면 연결을 눌러서 연결을 시도해봅니다.
EC2 인스턴스 연결을 이용하여 부여된 퍼블릭 주소로 ubuntu user를 이용해 연결을 합니다.
putty나 파일질라 등으로 연결을 테스트해보셔도 좋습니다.
3. EC2 - cloud formation(클라우드포메이션)
Parameters:
KeyNameParameter:
Type: String
Description: Key Pair
Default: AWS_KEY
Resources:
AWSPublicSubnet1EC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-05d2438ca66594916
KeyName: !Ref KeyNameParameter
NetworkInterfaces:
- AssociatePublicIpAddress: true
DeviceIndex: "0"
SubnetId: !ImportValue AWSPublicSubnet1Id
GroupSet:
- !ImportValue AWSSecurityGroupId
PrivateIpAddress: 10.0.1.10
BlockDeviceMappings:
- DeviceName: /dev/sda1
Ebs:
VolumeSize: 12
VolumeType: gp3
Tags:
- Key: Name
Value: AWS-public-instance-1
새로운 스택을 생성해줍니다.
분리하지 않고 하나의 리소스로 관리하셔도되나 저는 EC2는 별도로 분리해서 사용하고 있습니다.
Parameters기능을 이용해 AWS에 생성해놓은 키페어를 정의해줍니다.
그리고 나머진 위 콘솔을 이해하셨다면 1:1 매칭이 될 내용들입니다.
스택이름을 AWS-EC2로 정의하고 생성하여 제대로 연결까지 되는지 확인합니다.
하고픈 말
최대한 쉽게 AWS를 접근할 수 있도록 설명을 해봤습니다.
프리티어 기준으로 일년동안 가벼운 EC2를 돌리기위해 설정해야할것들을 알아보았고 왜 설정해야하는지 그리고 어떻게 정리해야하는지 알아봤습니다.
그 외 깊게 들어가면 많은 내용들이 있지만 처음 정리하는 내용이다보니 쉽게 정리하기위해 이 정도로 첫 글을 마칩니다.
필요한 글이 있다면 요청주시면 준비해보겠습니다.
Related Pages
- 1. VPC
- 2. Subnet
- 3. InternetGateway
- 4. RouteTable
- 5. SecurityGroup
- 6. EC2