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를 돌리기위해 설정해야할것들을 알아보았고 왜 설정해야하는지 그리고 어떻게 정리해야하는지 알아봤습니다.

그 외 깊게 들어가면 많은 내용들이 있지만 처음 정리하는 내용이다보니 쉽게 정리하기위해 이 정도로 첫 글을 마칩니다.

필요한 글이 있다면 요청주시면 준비해보겠습니다.

© 2024 Coding Stairs. All rights reserved.