새로운 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
또는 짧은 형식을 사용할 수 있습니다.
!ImportValue
sharedValueToImport
중요
!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