새로운 AWS CloudFormation 템플릿 참조 안내서입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 AWS CloudFormation 사용 설명서를 참조하세요.
Fn::ImportValue
내장 함수 Fn::ImportValue는 다른 스택에서 내보낸 출력의 값을 반환합니다. 일반적으로 이 함수를 사용하여 교차 스택 참조를 생성합니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 다른 CloudFormation 스택의 리소스 출력 참조 섹션을 참조하세요.
다음 예제 템플릿 조각에서 스택 A는 VPC 보안 그룹 값을 내보내고 스택 B는 이 값을 가져옵니다.
참고
교차 스택 참조에 적용되는 제한은 다음과 같습니다.
-
각 AWS 계정의
Export이름은 한 리전 내에서 고유해야 합니다. -
여러 리전 간에 교차 스택 참조를 생성할 수 없습니다.
Fn::ImportValue내장 함수는 동일 리전 안에서 내보냈던 값을 가져오는 데만 사용할 수 있습니다. -
출력의 경우, 리소스에 의존하는
Name또는Export함수를Ref의GetAtt속성값으로 사용할 수 없습니다.마찬가지로
ImportValue함수는 리소스에 의존하는Ref또는GetAtt함수를 포함할 수 없습니다. -
다른 스택이 출력 값을 가져오면 출력값을 내보내는 스택을 삭제하거나 내보낸 출력 값을 수정할 수 없습니다. 따라서 내보내는 스택을 삭제하거나 출력값을 수정하려면 가져오기를 모두 제거해야 합니다.
JSON
스택 A 내보내기
"Outputs" : { "PublicSubnet" : { "Description" : "The subnet ID to use for public web servers", "Value" : { "Ref" : "PublicSubnet" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SubnetID" }} }, "WebServerSecurityGroup" : { "Description" : "The security group ID to use for public web servers", "Value" : { "Fn::GetAtt" : ["WebServerSecurityGroup", "GroupId"] }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SecurityGroupID" }} } }
YAML
스택 A 내보내기
Outputs: PublicSubnet: Description: The subnet ID to use for public web servers Value: Ref: PublicSubnet Export: Name: 'Fn::Sub': '${AWS::StackName}-SubnetID' WebServerSecurityGroup: Description: The security group ID to use for public web servers Value: 'Fn::GetAtt': - WebServerSecurityGroup - GroupId Export: Name: 'Fn::Sub': '${AWS::StackName}-SecurityGroupID'
JSON
스택 B 가져오기
"Resources" : { "WebServerInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : "t2.micro", "ImageId" : "ami-a1b23456", "NetworkInterfaces" : [{ "GroupSet" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SecurityGroupID"}}], "AssociatePublicIpAddress" : "true", "DeviceIndex" : "0", "DeleteOnTermination" : "true", "SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SubnetID"}} }] } } }
YAML
스택 B 가져오기
Resources: WebServerInstance: Type: 'AWS::EC2::Instance' Properties: InstanceType: t2.micro ImageId: ami-a1b23456 NetworkInterfaces: - GroupSet: - Fn::ImportValue: 'Fn::Sub': '${NetworkStackNameParameter}-SecurityGroupID' AssociatePublicIpAddress: 'true' DeviceIndex: '0' DeleteOnTermination: 'true' SubnetId: Fn::ImportValue: 'Fn::Sub': '${NetworkStackNameParameter}-SubnetID'
선언
JSON
{ "Fn::ImportValue" :sharedValueToImport}
YAML
전체 함수 이름을 사용할 수 있습니다.
Fn::ImportValue:sharedValueToImport
또는 짧은 형식을 사용할 수 있습니다.
!ImportValuesharedValueToImport
중요
!Sub의 짧은 형식이 포함되면 !ImportValue의 짧은 형식을 사용할 수 없습니다.
# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'
대신, 다음과 같은 전체 함수 이름을 사용해야 합니다.
Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"
파라미터
- sharedValueToImport
-
가져올 스택 출력 값입니다.
반환 값
스택 출력 값입니다.
예시
JSON
{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }
YAML
Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"
지원되는 함수
Fn::ImportValue 함수에서 다음과 같은 함수를 사용할 수 있습니다. 이러한 함수의 값은 리소스에 의존할 수 없습니다.
-
Fn::Base64 -
Fn::FindInMap -
Fn::If -
Fn::Join -
Fn::Select -
Fn::Sub -
Ref