출력
선택적 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
)여야 하며 템플릿 내에서 고유해야 합니다. - Description(선택 사항)
-
출력 값을 설명하는
String
유형입니다. 설명 선언 값은 0~1023바이트 길이의 리터럴 문자열이어야 합니다. 파라미터나 함수를 사용하여 설명을 지정할 수 없습니다. - Value(필수)
-
aws cloudformation describe-stacks
명령에 의해 반환되는 속성의 값입니다. 출력의 값에는 리터럴, 파라미터 참조, 가상 파라미터, 매핑 값 또는 내장 함수가 포함될 수 있습니다. - Export(선택 사항)
-
교차 스택 참조를 위해 내보낼 리소스 출력의 이름입니다.
참고
교차 스택 참조에 적용되는 제한은 다음과 같습니다.
-
각 AWS 계정의
Export
이름은 한 리전 내에서 고유해야 합니다. -
여러 리전 간에 교차 스택 참조를 만들 수 없습니다.
Fn::ImportValue
내장 함수는 동일 리전 안에서 내보냈던 값을 가져오는 데만 사용할 수 있습니다. -
출력의 경우, 리소스에 의존하는
Name
또는Export
함수를Ref
의GetAtt
속성 값으로 사용할 수 없습니다.마찬가지로
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"