AWS_Cloudformation으로 환경 구축해 보았다②

5040 단어 CloudFormationAWS
마지막 기사
htps : // 코 m / 시니 _ 요시 오카 / ms / 487662c0749 7b1 또는 8c

전회의 계속으로, Network 레이어는 작성 완료.
다음과 같은 간단한 구성으로 이번에는 CloudFormation에서 EC2 인스턴스와 보안 그룹을 만듭니다.


템플릿 만들기



① CloudFormation의 yml을 작성할 때 CloudFormation의 Rain(CLI 실행 툴)을 사용하여 템플릿(EC2용 yml과 보안 그룹용 yml)을 출력한다.
Rain 사용법에 대한 자세한 내용은 아래 URL을 참조하십시오.
htps : //에서 v.ぁsss d. jp / 아 rc c ぇ s / 아 ws-c ぉ d d ぉ r 마치 온 - 라인 /

② 출력된 yml 각각을 크로스 스택 참조하도록 파라미터를 넣는다.
Secutiry.yml
AWSTemplateFormatVersion: "2010-09-09"

Description: Template generated by rain

Resources:
  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow SSH from ALL
      SecurityGroupEgress:
        - Description: Outbound
          CidrIp: 0.0.0.0/0
          IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          #CidrIpv6: CHANGEME # Optional
          #DestinationPrefixListId: CHANGEME # Optional
          #DestinationSecurityGroupId: CHANGEME # Optional

      SecurityGroupIngress:
        - Description: Inbound
          CidrIp: 0.0.0.0/0
          IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          #CidrIpv6: CHANGEME # Optional
          #SourcePrefixListId: CHANGEME # Optional
          #SourceSecurityGroupId: CHANGEME # Optional
          #SourceSecurityGroupName: CHANGEME # Optional
          #SourceSecurityGroupOwnerId: CHANGEME # Optional

      Tags:
        - Key: Name
          Value: TEST-SG
      VpcId: vpc-0af10c6c61fb430cc

Outputs:
  MySecurityGroupGroupId:
    Value: !GetAtt MySecurityGroup.GroupId
    Export:
      Name: TEST-SGfromCF

파라미터 메모
SecurityGroupEgress : 보안 그룹 아웃 바운드
SecurityGroupIngress : 보안 그룹 인바운드
Outputs : GetAtt 함수를 사용하여 MySecurityGroup의 GroupId를 "TEST-SGfromCF"의 이름 태그로 내보내기

Application.yml (EC2 인스턴스 생성)
AWSTemplateFormatVersion: "2010-09-09"

Description: Template generated by rain

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      KeyName: Secret-key
      AvailabilityZone: ap-northeast-1a
      ImageId: ami-0f27d081df46f326c
      InstanceType: t2.micro
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          #DeleteOnTermination: false # Optional
          #Description: CHANGEME # Optional
          DeviceIndex: "0"
          GroupSet:
            - !ImportValue TEST-SGfromCF
          SubnetId: subnet-068305cddc05d01bd
      #SecurityGroupIds:
        #- !ImportValue TEST-SGfromCF
      #SecurityGroups:
        #- !ImportValue TEST-SGfromCF
      #SubnetId: subnet-068305cddc05d01bd
      Tags:
        - Key: Name
          Value: TEST-EC2_fromCF
      #UserData: CHANGEME # Optional
      #Volumes:
        #- Device: CHANGEME
          #VolumeId: CHANGEME

파라미터 메모
KeyName : 개인 키의 이름 (.pem은 필요 없음)
ImageId: ami-0f27d081df46f326c←AmazonLinux
AssociatePublicIpAddress: true ← 공용 IP 주소를 자동으로 할당
DeviceIndex: "0"← 자동으로 공용 IP 주소를 할당할 때는 "0"으로 설정
GroupSet: Import 함수로 보안 그룹 탐색

스택 만들기



관리 콘솔 - CloudFormation에서 스택 만들기를 클릭하고,
Application.yml과 Secutiry.yml을 업로드하여 스택을 만듭니다.


이벤트 탭의 스테이터스가 CREATE_COMPLETE가 되어 있으면, 정상적으로 작성된 것을 확인할 수 있다.
작성한 EC2에 보안 그룹이 적용되어 EC2에 비밀 키를 사용하여 SSH 연결할 수 있음을 확인했다.



마지막으로



EC2의 보안 그룹과 관련하여 혼란스러운 부분이 있으므로 아래에 메모를 남겨 둡니다.
①NetworkInterfaces하하의 GroupSet・・・EC2 인스턴스 기동시에 새롭게 네트워크 인터페이스를 작성하는 경우에 보안 그룹의 ID를 참조할 때에 사용
②SecurityGroups・・・기본 VPC의 보안 그룹을 작성할 때에 사용
③SecurityGroupIds・・・권장. 참조하는 보안 그룹(AWS::EC2::SecurityGroup)을 생성하여 참조할 때 사용



이 기사는 AWS 초학자를 안내하는 체계적인 동영상 학습 서비스
AWS CloudTech 과제 커리큘럼에서 만들었습니다.
h tps : // 아 ws-c ぉ 우 ㅇ ch. 이 m

좋은 웹페이지 즐겨찾기