Outputs - AWS CloudFormation

Outputs

선택 사항인 Outputs 섹션은 스택의 출력 값을 선언합니다. 이러한 출력 값은 다양한 방식으로 사용할 수 있습니다.

  • 교차 스택 참조 - 출력 값을 다른 스택으로 가져와서 교차 스택 참조를 생성할 수 있습니다. 이는 여러 스택에서 리소스 또는 구성을 공유해야 할 때 유용합니다.

  • 리소스 관련 중요한 세부 정보 수집 - 출력은 리소스 관련 중요 정보를 편리하게 수집할 수 있는 방법입니다. 예를 들면 스택의 S3 버킷 이름을 출력하면 버킷을 보다 쉽게 찾을 수 있습니다. CloudFormation 콘솔의 출력 탭이나 describe-stacks CLI 명령을 사용하여 출력 값을 볼 수 있습니다.

중요

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

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

구문

Outputs 섹션은 키 이름 Outputs로 이루어집니다. 템플릿 안에 최대 60개 출력을 선언할 수 있습니다.

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

JSON

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

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

YAML

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

출력 필드

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

논리적 ID(논리명이라고도 함)

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

Description(선택 사항)

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

Value(필수)

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

Export(선택 사항)

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

참고

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

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

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

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

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

  • 다른 스택이 출력 값을 가져오면 출력값을 내보내는 스택을 삭제하거나 내보낸 출력 값을 수정할 수 없습니다. 따라서 내보내는 스택을 삭제하거나 출력값을 수정하려면 가져오기를 모두 제거해야 합니다.

내장 함수를 사용하여 내보내기의 Name 값을 사용자 지정할 수 있습니다.

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

예시

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

스택 출력

다음 예제에서는 BackupLoadBalancerDNSName 이름의 출력이 BackupLoadBalancer 조건이 true일 때만 논리적 ID가 CreateProdResources인 리소스의 DNS 이름을 반환합니다. 이름이 InstanceID인 출력은 논리적 ID EC2Instance와 함께 EC2 인스턴스의 ID를 반환합니다.

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

Fn::Sub를 사용하여 내보내기 이름 사용자 지정

다음 예제에서는 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"

Fn::Sub 함수에 대한 자세한 내용은 Fn::Sub 단원을 참조하십시오.

Fn::Join를 사용하여 내보내기 이름 사용자 지정

또한 Fn::Join 함수를 사용하여 파라미터, 리소스 속성 및 기타 문자열을 기반으로 값을 구성할 수 있습니다.

다음 예제에서는 Fn::Sub 함수 대신 Fn::Join 함수를 사용하여 내보내기 이름을 사용자 지정합니다. 예제 Fn::Join 함수는 콜론을 구분자로 사용하여 스택 이름과 이름 VPCID를 연결합니다.

JSON

"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "VPCID" ] ] } } } }

YAML

Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Join [ ":", [ !Ref "AWS::StackName", VPCID ] ]

Fn::Join 함수에 대한 자세한 내용은 Fn::Join 단원을 참조하십시오.

Fn::Join을 사용하여 구성된 URL 반환

WordPress 사이트를 생성하는 템플릿에 대한 이전 예제에서 InstallURLFn::Join 함수 호출에서 반환된 문자열로, http://, 리소스 ElasticLoadBalancer의 DNS 이름, /wp-admin/install.php를 연결합니다. 출력 값은 다음과 비슷합니다.

http://mywptests-elasticl-1gb51l6sl8y5v-206169572.aws-region.elb.amazonaws.com/wp-admin/install.php

JSON

{ "Outputs": { "InstallURL": { "Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "ElasticLoadBalancer", "DNSName" ] }, "/wp-admin/install.php" ] ] }, "Description": "Installation URL of the WordPress website" } } }

YAML

Outputs: InstallURL: Value: !Join - '' - - 'http://' - !GetAtt - ElasticLoadBalancer - DNSName - /wp-admin/install.php Description: Installation URL of the WordPress website

Fn::Join 함수에 대한 자세한 내용은 Fn::Join 단원을 참조하십시오.