Obtención de salidas exportadas de una pila implementada de CloudFormation
Si tiene varias pilas en la misma Cuenta de AWS y región, es posible que desee compartir información entre ellas. Esto resulta útil cuando una pila necesita usar recursos creados por otra pila.
Por ejemplo, puede tener una pila que cree recursos de red, como subredes y grupos de seguridad, para sus servidores web. Luego, otras pilas que crean los servidores web reales pueden utilizar los recursos de red creados por la primera pila. No es necesario codificar de forma rígida los IDs de recursos en la plantilla de la pila ni pasar los IDs como parámetros de entrada.
Para compartir información entre pilas, exporta los valores de salida de una pila y los importa a otra pila. Así es como funciona:
-
En la plantilla de la primera pila (p. ej., la pila de redes), se definen determinados valores para la exportación mediante el campo
Export
de la secciónOutputs
. Para obtener más información, consulte Sintaxis de Outputs de la plantilla de CloudFormation. -
Al crear o actualizar esa pila, CloudFormation exporta los valores de salida y los pone a disposición de otras pilas de la misma Cuenta de AWS y región.
-
En la plantilla de la otra pila, se utiliza la función Fn::ImportValue para importar los valores exportados de la primera pila.
-
Al crear o actualizar la segunda pila (p. ej., la pila del servidor web), CloudFormation recupera automáticamente los valores exportados de la primera pila y los utiliza.
Para obtener un tutorial y plantillas de ejemplo, consulte Consulta de las salidas de recursos en otra pila de CloudFormation.
Exportación de valores de salida de pilas en comparación con el uso de pilas anidadas
Una pila anidada es un pila que crea en otra pila usando el recurso AWS::CloudFormation::Stack
. Con pilas anidadas, se implementan y administran todos los recursos desde una sola pila. Se pueden usar salidas desde una pila en el grupo de pilas anidadas como entradas a otra pila del grupo. Esto difiere de la exportación de valores.
Si desea que solo se intercambie información dentro de un grupo de pilas anidadas, le sugerimos que utilice pilas anidadas. Para compartir información con otras pilas (no solo dentro del grupo de pilas anidadas), exporte valores. Por ejemplo, puede crear una sola pila con una subred y, a continuación, exportar su ID. Otras pilas pueden utilizar dicha subred importando su ID. Cada pila no tiene por qué crear su propia subred. Mientras las pilas importen el ID de la subred, no se puede cambiar ni eliminar.
Para obtener más información sobre las pilas anidadas, consulte Integre pilas dentro de otras pilas mediante pilas anidadas.
Consideraciones
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 unExport
no puede usar las funcionesRef
oGetAtt
que dependen de un recurso.Del mismo modo, la función
ImportValue
no puede incluir funcionesRef
oGetAtt
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.
Listado de valores de salida exportados
Si necesita ver los valores de las salidas exportadas de sus pilas, utilice uno de los siguientes métodos:
Para obtener una lista de valores de salida exportados (consola)
-
Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation
. -
En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.
-
En el panel de navegación izquierdo, seleccione Exportaciones.
Para obtener una lista de los valores de salida exportados (AWS CLI)
Use el siguiente comando list-exports. Sustituya us-east-1
por su Región de AWS.
aws cloudformation list-exports --region
us-east-1
A continuación, se muestra un ejemplo del resultado.
{
"Exports": [
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-subnet-a",
"Value": "subnet-07b410xmplddcfa03"
},
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-subnet-b",
"Value": "subnet-075ed3xmplebd2fb1"
},
{
"ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800",
"Name": "private-vpc-vpcid",
"Value": "vpc-011d7xmpl100e9841"
}
]
}
CloudFormation muestra los nombres y los valores de las salidas exportadas para la región actual y la pila desde la que se esperaban. Para usar un valor de salida exportado en otra plantilla de pila, puede referenciarla con el nombre de exportación y la función Fn::ImportValue.
Enumeración de pilas que importan un valor de salida exportado
Para eliminar o cambiar los valores de salida exportados, primero debe averiguar qué pilas los importan.
Para ver las pilas que importan un valor de salida exportado, utilice uno de los siguientes métodos:
Enumeración de pilas que importan un valor de salida exportado (consola)
-
Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation
. -
En el panel de navegación izquierdo, seleccione Exportaciones.
-
Para ver qué pilas importan un valor de exportación determinado, elija Export Name (Nombre de la exportación) para ese valor de exportación. CloudFormation muestra la página de detalles de exportación, que enumera todas las pilas que están importando el valor.
Para obtener una lista de pilas que importan un valor de salida exportado (AWS CLI)
Utilice el comando list-imports. Sustituya us-east-1
por su Región de AWS y
por el nombre del valor de salida exportado.private-vpc-vpcid
aws cloudformation list-imports --region
us-east-1
\ --export-nameprivate-vpc-vpcid
CloudFormation devuelve una lista de pilas que están importando el valor.
{
"Imports": [
"my-app-stack"
]
}
Una vez que sepa qué pilas importan un valor exportado en particular, debe modificar esas pilas para eliminar las funciones Fn::ImportValue que refieren a los valores de salida. Debe eliminar todas las importaciones que hacen referencia a valores de salida exportados antes de poder eliminar o modificar los valores de salida exportados.