IaaS/퍼블릭클라우드

(AWS) CloudFormatoin의 Parameter-SSM, Public Parameter-SSM, DependsOn 이란?

armyost 2022. 1. 27. 06:38
728x90

Parameter-SSM이란?

 

AWS System Manager의 Parameter저장소를 CF에 연결해보자. 

SSM을 이용한 Parameter관리는 중앙집중식으로 관리하는데 유용하다. 많은 리소스들이 공통으로 사용하는 Parameter가 있다면 이것을 SSM에 등록해서 일괄 관리하는것은 효율적이다.

 

사용법

 

1. SSM Parameter적용된 Template 준비

Parameters:
  InstanceType:
    Type: 'AWS::SSM::Parameter::Value<String>'
    Default: /EC2/InstanceType

  ImageId: 
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: /EC2/AMI_ID

 

2. [AWS System Manager]-[Parameter Store] 메뉴 클릭

 

3. 'Create Parameter'버튼을 클릭

 

4. Name에 '/EC2/InstanceType'입력. 필자는 String 값으로 입력하여 Type을 String으로 그대로 둠. Value란에 사용할 값 입력. 필자는 't2.micro'입력. Create Parameter 클릭하여 완성

 

5. AMI ID Parameter도 2~4번을 반복하여 SSM에 Parameter 생성

 

6. [CloudFormation]에서 Stack을 생성한다. 디폴트 값으로 쭉 진행해서 생성한다. 그러면 정상적으로 리소스가 생성된다.

 

7. 다시 [AWS System Manager]-[Parameter Store]로 가서 '/EC2/InstanceType'을 다른 값으로 변경해보자.

 

8. 그리고 다시 [CloudFormation]-[Stack]에서 'Update Stack'을 수행하면 SSM에서 새로입력한 값으로 업데이트를 진행한다.

 

 

Public SSM Parameter사용하기

위에서 다룬 SSM Parameter는 사용자가 직접 입력한 값이지만, AWS자체에서 제공하는 Parameter를 사용해도 된다. 최신 AMI ID라던지 공통적으로 접근이가능한 파라미터가 있다. 

 

Parameters:
  LatestAmiId:
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'

Resources:
 Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !Ref LatestAmiId

 

 

DependsOn 이란?

리소스간의 종속 관계를 부여해 생성, 삭제의 순서를 만듭니다. 아래 예시에서는 Resources:Ec2Instance는 Resource:MyDB가 생성되고 나서 생성되게 DependsOn을 설정하였습니다.

 

Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', HVM64]
    DependsOn: MyDB

  MyDB:
    Type: AWS::RDS::DBInstance
    Properties:
      AllocatedStorage: '5'
      DBInstanceClass: db.t2.micro
      Engine: MySQL
      EngineVersion: "5.7.22"
      MasterUsername: MyName
      MasterUserPassword: MyPassword