리소스 - AWS CloudFormation

리소스

필수 Resources 섹션은 Amazon EC2 인스턴스 또는 Amazon S3 버킷 등 스택에 포함시킬 AWS 리소스를 선언합니다.

조건

Resources 섹션은 키 이름 Resources로 이루어집니다. 다음 가상 템플릿에는 Resources 섹션이 요약되어 있습니다.

JSON

"Resources" : { "Logical ID" : { "Type" : "Resource type", "Properties" : { Set of properties } } }

YAML

Resources: Logical ID: Type: Resource type Properties: Set of properties

리소스 필드

Logical ID

논리적 ID는 영숫자(A-Za-z0-9)여야 하며 템플릿 내에서 고유해야 합니다. 논리적 이름을 사용하여 템플릿의 다른 부분에 있는 리소스를 참조합니다. 예를 들어 Amazon Elastic Block Store 볼륨을 Amazon EC2 인스턴스로 매핑하려는 경우 논리적 ID를 참조하여 인스턴스와 블록 스토어를 연결할 수 있습니다.

논리적 ID 외에도, 특정 리소스에는 EC2 인스턴스 ID 또는 S3 버킷 이름 같은 해당 리소스에 대해 실제 할당된 이름인 물리적 ID도 지정됩니다. 물리적 ID를 사용하여 AWS CloudFormation 템플릿 외부에 있는 리소스를 식별할 수 있지만, 리소스가 생성된 후에만 가능합니다. 예를 들어 EC2 인스턴스에 논리적 ID MyEC2Instance의 리소스를 제공한다고 가정하겠습니다. AWS CloudFormation에서 인스턴스를 생성할 때 AWS CloudFormation은 자동적으로 물리적 ID(예: i-28f9ba55)를 생성하여 인스턴스에 할당합니다. 이 물리적 ID를 사용하면 Amazon EC2 콘솔에서 인스턴스를 식별하고 인스턴스의 속성(예: DNS 이름)을 볼 수 있습니다. 사용자 지정 이름을 지원하는 리소스의 경우, 고유한 이름(물리적 ID)를 할당하면 리소스를 보다 신속하게 식별할 수 있습니다. 예를 들면 로그를 저장하는 S3 버킷에 MyPerformanceLogs 이름을 지정할 수 있습니다. 자세한 내용은 이름 유형 섹션을 참조하세요.

리소스 유형

리소스 유형은 선언하려는 리소스의 유형을 식별합니다. 예를 들면 AWS::EC2::Instance는 EC2 인스턴스를 선언합니다. 모든 리소스 유형 목록을 보려면 AWS 리소스 및 속성 유형 참조 단원을 참조하십시오.

리소스 속성

Resource 속성은 리소스에 지정할 수 있는 추가 옵션입니다. 예를 들면 각 EC2 인스턴스에 대해 해당 리소스에 대한 Amazon 머신 이미지(AMI) ID를 지정해야 합니다. 다음 예제에서처럼 AMI ID를 인스턴스의 속성으로 선언합니다.

예 JSON
"Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867" } } }
예 YAML
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867"

리소스에 대해 해당 속성을 선언할 필요가 없으면 해당 리소스의 속성 섹션을 생략합니다.

속성 값은 리터럴 문자열, 문자열 목록, 부울, 파라미터 참조, 가상 참조 또는 함수가 반환하는 값 중 하나일 수 있습니다. 다음 예제에서는 다양한 속성 값 유형을 선언하는 방법을 보여줍니다.

예 JSON
"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }
예 YAML
Properties: String: OneStringValue String: A longer string value Number: 123 LiteralList: - "[first]-string-value with a special characters" - "[second]-string-value with a special characters" Boolean: true ReferenceForOneValue: Ref: MyLogicalResourceName ReferenceForOneValueShortCut: !Ref MyLogicalResourceName FunctionResultWithFunctionParams: !Sub | Key=%${MyParameter}

조건을 연결하여 리소스를 조건부로 생성할 수 있습니다. 템플릿의 Conditions 섹션에서 조건을 정의해야 합니다.

예시

다음 예제에서는 리소스 선언을 보여줍니다. 이 예제에서는 두 가지 리소스를 정의합니다. MyInstance 리소스는 MyQueue 리소스를 UserData 속성의 일부로서 포함합니다.

JSON

"Resources" : { "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Queue=", { "Ref" : "MyQueue" } ] ] } }, "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-0ff8a91507f77f867" } }, "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { } } }

YAML

Resources: MyInstance: Type: "AWS::EC2::Instance" Properties: UserData: "Fn::Base64": !Sub | Queue=${MyQueue} AvailabilityZone: "us-east-1a" ImageId: "ami-0ff8a91507f77f867" MyQueue: Type: "AWS::SQS::Queue" Properties: {}