결과 - AWS CloudFormation

결과

선택적 Outputs 섹션은 다른 스택으로 가져오거나(교차 스택 참조를 생성하기 위해), 응답으로 반환하거나(스택 호출을 설명하기 위해), 또는 AWS CloudFormation 콘솔에서 볼 수 있는 출력 값을 선언합니다. 예를 들면 스택의 S3 버킷 이름을 출력하면 버킷을 보다 쉽게 찾을 수 있습니다.

중요

CloudFormation은 출력 섹션에 포함된 정보를 삭제하거나 난독화하지 않습니다. 이 섹션을 사용하여 암호나 보안 암호와 같은 민감한 정보를 출력하지 않는 것이 좋습니다.

출력 값은 스택 작업이 완료된 후에 사용할 수 있습니다. 스택 상태가 IN_PROGRESS 상태 중 하나인 경우에는 스택 출력 값을 사용할 수 없습니다. 출력 값을 항상 사용할 수 있는 것은 아니므로 서비스 런타임과 스택 출력 값 간에 종속성을 설정하지 않는 것이 좋습니다.

구문

Outputs 섹션은 키 이름 Outputs와 그 뒤에 이어지는 공백 및 콜론 하나로 구성됩니다. 템플릿 안에 최대 60개 출력을 선언할 수 있습니다.

다음 예제에서는 Outputs 섹션의 구조를 보여줍니다.

JSON

모든 출력 선언을 괄호 안에 포함합니다. 출력이 여러 개인 경우 쉼표로 구분합니다.

"Outputs" : { "Logical ID" : { "Description" : "Information about the value", "Value" : "Value to return", "Export" : { "Name" : "Name of resource to export" } } }

YAML

Outputs: Logical ID: Description: Information about the value Value: Value to return Export: Name: Name of resource to export

출력 필드

Outputs 섹션은 다음 필드를 포함할 수 있습니다.

Logical ID

현재 출력의 식별자입니다. 논리적 ID는 영숫자(a–z, A–Z, 0–9)여야 하며 템플릿 내에서 고유해야 합니다.

설명(선택 사항)

출력 값을 설명하는 String 유형입니다. 설명 선언 값은 0~1023바이트 길이의 리터럴 문자열이어야 합니다. 파라미터나 함수를 사용하여 설명을 지정할 수 없습니다.

Value(필수)

aws cloudformation describe-stacks 명령에 의해 반환되는 속성의 값입니다. 출력의 값에는 리터럴, 파라미터 참조, 가상 파라미터, 매핑 값 또는 내장 함수가 포함될 수 있습니다.

Export(선택 사항)

교차 스택 참조를 위해 내보낼 리소스 출력의 이름입니다.

참고

교차 스택 참조에 적용되는 제한은 다음과 같습니다.

  • 각 AWS 계정의 Export 이름은 한 리전 내에서 고유해야 합니다.

  • 여러 리전 간에 교차 스택 참조를 생성할 수 없습니다. Fn::ImportValue 내장 함수는 동일 리전 안에서 내보냈던 값을 가져오는 데만 사용할 수 있습니다.

  • 출력의 경우, 리소스에 의존하는 Name 또는 Export 함수를 RefGetAtt 속성 값으로 사용할 수 없습니다.

    마찬가지로 ImportValue 함수는 리소스에 의존하는 Ref 또는 GetAtt 함수를 포함할 수 없습니다.

  • 다른 스택에서 출력을 참조 중인 스택은 삭제할 수 없습니다.

  • 다른 스택에서 참조하는 출력 값은 수정하거나 제거할 수 없습니다.

내장 함수를 사용하여 내보내기의 Name 값을 사용자 지정할 수 있습니다. 다음 예제에는 Fn::Join 함수가 사용됩니다.

JSON

"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }

YAML

Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]

출력과 조건을 연결하려면 템플릿의 Conditions 섹션에 조건을 정의합니다.

예제

다음 예제에서는 스택 출력의 작동 방식을 보여줍니다.

스택 출력

다음 예제에서는 BackupLoadBalancerDNSName 이름의 출력이 BackupLoadBalancer 조건이 true일 때만 논리적 ID가 CreateProdResources인 리소스의 DNS 이름을 반환합니다. (두 번째 출력은 여러 출력을 지정하는 방법을 보여줍니다.)

JSON

"Outputs" : { "BackupLoadBalancerDNSName" : { "Description": "The DNSName of the backup load balancer", "Value" : { "Fn::GetAtt" : [ "BackupLoadBalancer", "DNSName" ]}, "Condition" : "CreateProdResources" }, "InstanceID" : { "Description": "The Instance ID", "Value" : { "Ref" : "EC2Instance" } } }

YAML

Outputs: BackupLoadBalancerDNSName: Description: The DNSName of the backup load balancer Value: !GetAtt BackupLoadBalancer.DNSName Condition: CreateProdResources InstanceID: Description: The Instance ID Value: !Ref EC2Instance

교차 스택 출력

다음 예제에서는 StackVPC는 VPC의 ID를 반환하고 나서, 스택 이름에 추가된 VPCID 이름을 사용하여 교차 스택 참조 값을 내보냅니다.

JSON

"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }

YAML

Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"