Este é o novo Guia de referência de modelos do CloudFormation. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o Guia do usuário do AWS CloudFormation.
Fn::ImportValue
A função intrínseca Fn::ImportValue retorna o valor de uma saída exportada por outra pilha. Normalmente, você usa essa função para criar referências de pilha cruzada. Para obter mais informações, consulte Passo a passo: consultar saídas de recursos em outra pilha do CloudFormation no Guia do usuário do AWS CloudFormation.
dica
Para referenciar as saídas da pilha entre contas ou regiões da AWS sem exigir exportações explícitas, use Fn::GetStackOutput. Fn::GetStackOutput cria uma referência fraca que é resolvida no momento da criação ou atualização da pilha e não exige que a pilha referenciada declare uma Export.
Nos trechos do modelo de exemplo a seguir, Stack A exporta valores do security group da VPC, e Stack B os importa.
nota
As restrições a seguir se aplicam a referências de pilha cruzada.
-
Para cada Conta da AWS, os nomes de
Exportdevem ser exclusivos em uma região. -
Ao usar
ExporteFn::ImportValue, as referências cruzadas estão limitadas à mesma conta e região. Para referenciar as saídas da pilha entre contas ou regiões, useFn::GetStackOutput. -
Para saídas, o valor da propriedade
Namede umaExportnão pode utilizar funçõesRefouGetAttque dependem de um recurso.Da mesma forma, a função
ImportValuenão pode incluir funçõesRefouGetAttque dependem de um recurso. -
Depois que outra pilha importar um valor de saída, não será possível excluir a pilha que está exportando o valor de saída ou modificar o valor de saída exportado. Todas as importações deverão ser removidas para que você possa excluir a pilha de exportação ou modificar o valor de saída.
JSON
Exportação da Stack 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
Exportação da Stack 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
Importação da Stack 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
Importação da Stack 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'
Declaração
JSON
{ "Fn::ImportValue" :sharedValueToImport}
YAML
Você pode usar o nome completo da função:
Fn::ImportValue:sharedValueToImport
Como alternativa, você pode usar a forma abreviada:
!ImportValuesharedValueToImport
Importante
Você não pode usar a forma abreviada de !ImportValue quando ela contém a forma abreviada de !Sub.
# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'
Em vez disso, você deve usar o nome completo da função, por exemplo:
Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"
Parâmetros
- sharedValueToImport
-
O valor de saída da pilha que você deseja importar.
Valor de retorno
O valor de saída da pilha.
Exemplo
JSON
{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }
YAML
Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"
Funções compatíveis
Você pode usar as seguintes funções na função Fn::ImportValue. O valor dessas funções não depende de um recurso.
-
Fn::Base64 -
Fn::FindInMap -
Fn::If -
Fn::Join -
Fn::Select -
Fn::Sub -
Ref