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
함수를Ref
의GetAtt
속성값으로 사용할 수 없습니다.마찬가지로
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 사이트를 생성하는 템플릿에 대한 이전 예제에서 InstallURL
은 Fn::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 단원을 참조하십시오.