IaaS/퍼블릭클라우드

(AWS) CloudFormation Resource, Parameter, Mapping에 대해

armyost 2022. 1. 18. 17:19
728x90

Parameter 사용하기

Parameter는 AWS CloudFormation template에 입력값을 제공하는 방법이다. 

당신이 여러 사이트에서 해당 템플릿을 재사용하고 싶을때 사용한다. 

Parameters:
  SecurityGroupDescription:
    Description: Security Group Description
    Type: String

 

Parameter는 아래와 같은 세팅으로 컨트롤 된다. 

  • Type
Type
String
Number
CommaDelimitedList
List<Type>
AWS Parameter (to help catch invalid values - match against existing values in the AWS Account)
  • Description
  • Constraints
  • ConstarintDescription (String)
  • Min/MaxLength
  • Min/MaxValue
  • Defaults
  • AllowedValues (array)
  • AllowedPattern (regexp)
  • NoEcho (Boolean)

 

Parameter를 호출하려면 Fn::Ref (!Ref)함수로 참조가 가능하다. 그리고 템플릿 내 어디서나 호출할 수 있다. 

DbSubnet1:
  Type: AWS::EC2::Subnet
  Properties:
    VpcId: !Ref MyVPC

 

Pseudo(가상) Parameter

가상 파라미터는 AWS CloudFormation에서 사전 정의된 파라미터입니다. 따라서 템플릿에서 가상 파라미터를 선언할 필요가 없습니다. 가상 파라미터는 Ref 함수의 인수로 파라미터를 사용하는 것과 동일한 방식으로 사용합니다.

 

AWS::AccountId

스택이 생성되는 계정의 AWS 계정 ID를 반환합니다(예: 123456789012).

 

AWS::NotificationARNs 현재 스택에 대한 알림 Amazon 리소스 이름(ARN) 목록을 반환합니다. 목록에서 단일 ARN을 가져오려면 Fn::Select를 사용합니다.

 

AWS::NoValue

Fn::If 내장 함수에 반환 값으로 지정된 경우 해당 리소스 속성을 제거합니다. AWS::Partition 리소스가 있는 파티션을 반환합니다. 표준 AWS 리전에서 파티션은 aws입니다. 

 

AWS::Region

포괄 리소스를 생성하는 리전을 나타내는 문자열을 반환합니다(예: us-west-2).

 

AWS::StackId

aws cloudformation create-stack 명령으로 지정된 스택의 ID를 반환합니다(예: arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123).

 

AWS::StackName

aws cloudformation create-stack 명령으로 지정된 스택의 이름을 반환합니다(예: teststack).

 

AWS::URLSuffix

도메인에 대한 접미사를 반환합니다. 접미사는 일반적으로 amazonaws.com이지만 리전에 따라 다를 수 있습니다. 예를 들어 중국(베이징) 리전의 접미사는 amazonaws.com.cn입니다.

 

 

Resource 사용하기

 

Resource는 AWS의 자원을 뜻하며 CF Template의 필수요소이다. 
아래와 같은 form으로 정의된다. 

service-provider::service-name::data-type-name

 

 

https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html

 

AWS 리소스 및 속성 유형 참조 - AWS CloudFormation

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

Mapping 사용하기

 

Mappping은 CF Template내에서 고정된 값이다. 다른 환경마다 구분하여 사용할때 유용하다. 가령 환경적 요소(Prod VS Dev) 또는 Region, AMI타입 등이 해당된다.

아래와 같은 format을 띈다.

Mappings:
  Mapping01:
    Key01:
      Name: Value01
    Key02:
      Name: Value02
    Key03:
      Name: Value03
RegionMap:
  us-east-1:
    "32": "ami-00000000"
    "64": "ami-00000001"
  us-west-1:
    "32": "ami-00000010"
    "64": "ami-00000011"

 

 

 

Mappings와 Parameters의 적절한 사용


Mapping은 다음 사례와 같이 템플릿 사용에 앞서서 모든 값들을 알고 있는 경우에 적절하다. 이것들은 템플릿 전반적으로 안정적인 컨트롤을 해준다.

  • Region
  • Availability Zone
  • AWS Account
  • Environment(dev or Prod)

 

※ Parameter는 정말 사용자 특수성이 있을때 사용해라

 


Mapping 사용법


Fn::FindInMap 을 통해 특정 Key에 대한 값을 Return받는다. 

!FindInMap [MapName, TopLevelKey, SecondLevelKey]