Fn::ImportValue - AWS CloudFormation

Fn::ImportValue

La función intrínseca Fn::ImportValue devuelve el valor de una salida exportada por otra pila. Esta función se suele utilizar para crear referencias cruzadas entre pilas. En los siguientes fragmentos de código de plantillas de ejemplo, la Pila A exporta valores del grupo de seguridad de la VPC y la Pila B los importa.

nota

Las siguientes restricciones se aplican a las referencias cruzadas entre pilas:

  • Para cada Cuenta de AWS, los nombres Export deben ser únicos dentro de una región.

  • No puede crear referencias cruzadas entre regiones. Puede utilizar la función intrínseca Fn::ImportValue para importar solo valores que se hayan exportado dentro de la misma región.

  • Para las salidas, el valor de la propiedad Name de un Export no puede usar las funciones Ref o GetAtt que dependen de un recurso.

    Del mismo modo, la función ImportValue no puede incluir funciones Ref o GetAtt que dependen de un recurso.

  • Después de que otra pila importe un valor de salida, no se puede eliminar la pila que exporta el valor de salida ni modificar el valor de salida exportado. Todas las importaciones deben eliminarse antes de poder eliminar la pila de exportación o modificar el valor de salida.

JSON

Exportación de la pila 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

Exportación de la pila 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

Importación de la Pila 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

Importación de la Pila 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'

Declaración

JSON

{ "Fn::ImportValue" : sharedValueToImport }

YAML

Puede utilizar el nombre de la función completa:

Fn::ImportValue: sharedValueToImport

También puede utilizar la forma abreviada:

!ImportValue sharedValueToImport
importante

No se puede utilizar la forma abreviada de !ImportValue cuando contiene la forma abreviada de !Sub.

# do not use !ImportValue !Sub '${NetworkStack}-SubnetID'

En lugar de ello, debe utilizar el nombre de la función completa, por ejemplo:

Fn::ImportValue: !Sub "${NetworkStack}-SubnetID"

Parámetros

sharedValueToImport

El valor de salida de la pila que desea importar.

Valor devuelto

El valor de salida de la pila.

Ejemplo

JSON

{ "Fn::ImportValue" : {"Fn::Sub": "${NetworkStackNameParameter}-SubnetID" } }

YAML

Fn::ImportValue: !Sub "${NetworkStackName}-SecurityGroupID"

Funciones compatibles

Puede utilizar las siguientes funciones en la función Fn::ImportValue. El valor de estas funciones no puede depender de un recurso.

  • Fn::Base64

  • Fn::FindInMap

  • Fn::If

  • Fn::Join

  • Fn::Select

  • Fn::Sub

  • Ref