¿Cómo hago referencia a un recurso de otra pila desde una plantilla de CloudFormation?

4 minutos de lectura
0

Cuando creo una plantilla en AWS CloudFormation, quiero hacer referencia a un recurso de otra pila de CloudFormation.

Resolución

Para hacer referencia a un recurso de otra pila de CloudFormation, primero debe crear referencias entre pilas. La siguiente resolución proporciona un ejemplo de un método para crear una referencia entre pilas. La pila NetworkStack de ejemplo crea los recursos y exportaciones relacionados con la red ${AWS::StackName}-SecurityGroupID y ${AWS::StackName}-SubnetID. Tras la creación de la pila, CloudFormation reemplaza ${AWS::StackName} por NetworkStack. Los nombres finales de exportación son NetworkStack-SecurityGroupID y NetworkStack-SubnetID.

Crear una pila para exportar los valores de salida

Siga estos pasos:

  1. Cree una pila de CloudFormation y, a continuación, utilice la plantilla SampleNetworkCrossStack.
    Nota: Debe declarar el campo Exportar en la sección Salidas de la plantilla.
  2. Llame la pila NetworkStack.
    Nota: NetworkStack exporta los valores de subred y grupo de seguridad.

Utilizar una subred y un grupo de seguridad importados para crear una instancia de Amazon EC2

Las propiedades de instancia de Amazon Elastic Compute Cloud (Amazon EC2), como SubnetId y SecurityGroupId, utilizan los valores de la pila de exportación. Para importar los valores, utilice la función intrínseca Fn::ImportValue.

Nota: La pila de importación y exportación debe estar en la misma región de AWS y en la misma cuenta de AWS. Además, los nombres de valor exportados deben ser exclusivos de su región y cuenta.

Para crear la instancia de EC2, complete estos pasos:

  1. Abra la consola de CloudFormation.
  2. Seleccione Crear pila y, a continuación, Plantilla de diseño.
  3. Seleccione la pestaña Parámetros del editor de código y, a continuación, seleccione Plantilla.
  4. Para usar los valores de la pila de exportación para crear la instancia, introduzca la siguiente plantilla en el editor de código:
    Importante: Establezca la pila de recursos de NetworkStack como el valor de NetworkStackParameter. El valor NetworkStack reemplaza al nombre de pila correcto en las funciones Fn::ImportValue correspondientes.
    {  "Parameters": {
        "NetworkStackParameter": {
          "Type": "String"
        }
      },
      "Resources": {
        "WebServerInstance": {
          "Type": "AWS::EC2::Instance",
          "Properties": {
            "InstanceType": "t2.micro",
            "ImageId": "ami-a1b23456",
            "NetworkInterfaces": [
              {
                "GroupSet": [
                  {
                    "Fn::ImportValue": {
                      "Fn::Sub": "${NetworkStackParameter}-SecurityGroupID"
                    }
                  }
                ],
                "AssociatePublicIpAddress": "true",
                "DeviceIndex": "0",
                "DeleteOnTermination": "true",
                "SubnetId": {
                  "Fn::ImportValue": {
                    "Fn::Sub": "${NetworkStackParameter}-SubnetID"
                  }
                }
              }
            ]
          }
        }
      }
    }
    Nota: Sustituya t2.micro por su tipo de instancia y ami-a1b23456 por su ID de imagen de máquina de Amazon (AMI).
  5. Seleccione Crear pila (icono de una nube con flecha hacia arriba) y, a continuación, seleccione Siguiente.
  6. En Nombre de pila, introduzca un nombre para la pila.
  7. En Parámetros, introduzca el nombre de la pila de red con la que desee hacer la referencia cruzada, como NetworkStack.
  8. Seleccione Siguiente y, a continuación, vuelva a seleccionar Siguiente.
  9. Seleccione Crear.
  10. Una vez el estado de la pila cambia a CREATE_COMPLETE, abra la consola de Amazon EC2.
  11. En el panel de navegación, elija Instancias y, a continuación, seleccione la instancia que ha creado.
  12. Elija la pestaña de Descripción y, a continuación, compruebe que el grupo de seguridad y la subred estén configurados.

Importante: No puede eliminar estos valores mientras otra pila importe la pila de origen ni los valores de exportación de la pila de origen. Para actualizar los valores de exportación de la pila de origen, primero sustituya manualmente los valores de las pilas que importan los valores de exportación de la pila de origen. A continuación, podrá actualizar los valores de exportación de la pila de origen.

Para ver una lista de todas las pilas que importan un valor de salida exportado, ejecute el comando list-imports. Para ver una lista de todas las exportaciones de una región, utilice la consola de CloudFormation o ejecute el comando list-exports. El nombre de exportación debe ser único para la cuenta en la región.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Información relacionada

¿Cómo utilizo los parámetros del Almacén de parámetros de AWS Systems Manager para compartir valores entre pilas de CloudFormation?

Plantillas de AWS CloudFormation

AWS::EC2::Instance

Consultar las salidas de recursos en otra pila de CloudFormation

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un mes