Cree, actualice y elimine pilas de CloudFormation con la AWS CLI y PowerShell - AWS CloudFormation

Cree, actualice y elimine pilas de CloudFormation con la AWS CLI y PowerShell

En los siguientes ejemplos de línea de comandos, se muestra cómo llevar a cabo acciones individuales de CloudFormation con la AWS CLI y PowerShell. Estos ejemplos incluyen solo las acciones que se utilizan con mayor frecuencia. Para ver una lista completa, consulte la Referencia de la API de AWS CloudFormation.

Cancelar una actualización de pila

Utilice el comando cancel-update-stack para cancelar una actualización de pila. Para obtener más información, consulte Cancelar una actualización de pila.

CLI
AWS CLI

Cancelación de una actualización de pila en progreso

El comando cancel-update-stack a continuación cancela una actualización de pila en la pila myteststack:

aws cloudformation cancel-update-stack --stack-name myteststack
  • Para ver detalles de la API, consulte CancelUpdateStack en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Cancelación de una actualización en la pila especificada.

Stop-CFNUpdateStack -StackName "myStack"
  • Para ver detalles de la API, consulte CancelUpdateStack en la Referencia de Cmdlet de AWS Tools for PowerShell.

Continuación de la restauración de una actualización

Utilice el comando continue-update-rollback para continuar la restauración de una actualización. Para obtener más información, consulte Continuación de la restauración de una actualización.

CLI
AWS CLI

Nuevo intento de reversión de actualizaciones

El ejemplo de continue-update-rollback a continuación reanuda una operación de reversión a partir de un intento fallido previo de una actualización de pila.

aws cloudformation continue-update-rollback \ --stack-name my-stack

Este comando no genera ninguna salida.

  • Para obtener información sobre la API, consulte ContinueUpdateRollback en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Reanudación de la reversión de la pila seleccionada, la cual debería encontrarse en el estado “UPDATE_ROLLBACK_FAILED”. Si la reversión continua es exitosa, el estado de la pila será “UPDATE_ROLLBACK_COMPLETE”.

Resume-CFNUpdateRollback -StackName "myStack"
  • Para obtener información sobre la API, consulte ContinueUpdateRollback en la Referencia de Cmdlet de AWS Tools for PowerShell.

Creación de una pila

Utilice el comando create-stack para crear una pila. Debe proporcionar el nombre de la pila, la ubicación de una plantilla válida y cualquier parámetro de entrada. Los nombres clave de los parámetros distinguen entre mayúsculas y minúsculas. Si escribe incorrectamente el nombre de la clave de un parámetro, CloudFormation no crea la pila e informa que la plantilla no contiene dicho parámetro.

De forma predeterminada, el comando describe-stacks devuelve los valores de los parámetros. Para evitar la devolución de valores de parámetros confidenciales como, por ejemplo, las contraseñas, incluya una propiedad NoEcho establecida a TRUE en su plantilla de CloudFormation.

importante

El uso del atributo NoEcho no enmascara ninguna información almacenada en lo que se muestra a continuación:

  • La sección de la plantilla Metadata. CloudFormation no transforma, modifica ni redacta ninguna información que incluya en la sección Metadata. Para obtener más información, consulte Metadata.

  • La sección de la plantilla Outputs. Para obtener más información, consulte Outputs.

  • El atributo Metadata de una definición de recurso. Para obtener más información, consulte Atributo Metadata.

Recomendamos encarecidamente que no utilice estos mecanismos para incluir información confidencial, como contraseñas o secretos.

importante

En lugar de integrar información confidencial directamente en las plantillas de CloudFormation, se recomienda utilizar parámetros dinámicos en la plantilla de la pila para hacer referencia a la información confidencial almacenada y administrada fuera de CloudFormation, como en AWS Systems Manager Parameter Store o AWS Secrets Manager.

Para obtener más información, consulte las Prácticas recomendadas de No integre credenciales en sus plantillas.

Los siguientes ejemplos muestran cómo crear una pila nueva con el nombre, la plantilla y los parámetros de entrada especificados.

CLI
AWS CLI

Creación de una pila de AWS CloudFormation

En el siguiente ejemplo de create-stacks, se crea una pila con el nombre myteststack mediante la plantilla sampletemplate.json:

aws cloudformation create-stack --stack-name myteststack --template-body file://sampletemplate.json --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2

Salida:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

Para obtener más información, consulte Pilas en la Guía del usuario de AWS CloudFormation.

  • Para obtener información sobre la API, consulte CreateStack en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Creación de una pila nueva con el nombre especificado. La plantilla se analiza a partir del contenido suministrado con los parámetros de personalización (“PK1” y “PK2” representan los nombres de los parámetros declarados en el contenido de la plantilla, mientras que “PV1” y “PV2” representan los valores de dichos parámetros). Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”. Si la creación de la pila falla, no se revertirá.

New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" }) ` -DisableRollback $true

Ejemplo 2: Creación de una pila nueva con el nombre especificado. La plantilla se analiza a partir del contenido suministrado con los parámetros de personalización (“PK1” y “PK2” representan los nombres de los parámetros declarados en el contenido de la plantilla, mientras que “PV1” y “PV2” representan los valores de dichos parámetros). Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”. Si la creación de la pila falla, se revertirá.

$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p1.ParameterKey = "PK1" $p1.ParameterValue = "PV1" $p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p2.ParameterKey = "PK2" $p2.ParameterValue = "PV2" New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( $p1, $p2 ) ` -OnFailure "ROLLBACK"

Ejemplo 3: Creación de una pila nueva con el nombre especificado. La plantilla obtenida de la URL de Amazon S3 con los parámetros de personalización (“PK1” representa el nombre del parámetro declarado en el contenido de la plantilla, mientras que “PV1” representa el valor del parámetro). Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”. Si la creación de una pila falla, se revertirá (al igual que al especificar “-DisableRollback $false”).

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

Ejemplo 4: Creación de una pila nueva con el nombre especificado. La plantilla obtenida de la URL de Amazon S3 con los parámetros de personalización (“PK1” representa el nombre del parámetro declarado en el contenido de la plantilla, mientras que “PV1” representa el valor del parámetro). Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”. Si la creación de una pila falla, se revertirá (al igual que al especificar “-DisableRollback $false”). Los AEN de notificación especificados recibirán los eventos publicados relacionados con la pila.

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )
  • Para obtener información sobre la API, consulte CreateStack en la Referencia de Cmdlet de AWS Tools for PowerShell.

Como alternativa, puede especificar la ubicación AWS Systems Manager del archivo de plantilla.

AWS CLI

El siguiente comano de create-stack crea una pila con el nombre myteststack mediante un documento AWS Systems Manager para la URL de la plantilla.

aws cloudformation create-stack --stack-name myteststack \ --template-url "ssm-doc://arn:aws:ssm:us-east-1:123456789012:document/documentName"

Salida:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

Crear una pila que incluya transformaciones

Utilice el comando deploy para crear una pila que incluya transformaciones.

Para crear una pila a partir de una plantilla que incluye transformaciones, debe utilizar un conjunto de cambios. En vez de crear un conjunto de cambios y, a continuación, iniciarlo, utilice el comando deploy para combinar estos pasos en un solo comando.

AWS CLI

El siguiente comando deploy crea una pila denominada con la plantilla especificada.

aws cloudformation deploy --stack-name myteststack \ --template /path_to_template/my-template.json \ --parameter-overrides Key1=Value1 Key2=Value2

Eliminar una pila

Ejecute el comando delete-stack para eliminar una pila. Para obtener más información, consulte Eliminar una pila de la consola de CloudFormation.

CLI
AWS CLI

Eliminación de una pila

En el siguiente ejemplo de delete-stack, se elimina la pila especificada.

aws cloudformation delete-stack \ --stack-name my-stack

Este comando no genera ninguna salida.

  • Para obtener información sobre la API, consulte DeleteStack en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Eliminación de la pila especificada.

Remove-CFNStack -StackName "myStack"
  • Para obtener información sobre la API, consulte DeleteUser en la Referencia de Cmdlet de AWS Tools for PowerShell.

Si la eliminación falla y devuelve un estado DELETE_FAILED, puede optar por eliminar la pila por la fuerza mediante la opción --deletion-mode. Estos son los siguientes valores que se pueden utilizar con deletion-mode:

  • STANDARD: elimina la pila de forma normal. Este es el modo de eliminación predeterminado.

  • FORCE_DELETE_STACK: elimina la pila y omite todos los recursos que no pueden eliminarse.

AWS CLI

El siguiente comando delete-stack fuerza la eliminación de la pila myteststack mediante el valor FORCE_DELETE_STACK con el parámetro deletion-mode:

aws cloudformation delete-stack --stack-name myteststack \ --deletion-mode FORCE_DELETE_STACK

Este comando no genera ninguna salida.

Después de usar FORCE_DELETE_STACK, puede usar el comando list-stack-resources para enumerar los recursos que se omitieron durante el proceso de eliminación de la pila. Los recursos retenidos mostrarán el estado DELETE_SKIPPED. Para obtener más información, consulte Recursos de pila de listas.

Describir los eventos de la pila

Use el comando describe-stack-events para describir los eventos de la pila. Para obtener más información, consulte Monitorizar el progreso de la pila.

CLI
AWS CLI

Descripción de los eventos de la pila

En el siguiente ejemplo de describe-stack-events, se muestran los dos eventos más recientes de la pila especificada.

aws cloudformation describe-stack-events \ --stack-name my-stack \ --max-items 2 { "StackEvents": [ { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4e1516d0-e4d6-xmpl-b94f-0a51958a168c", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.556Z", "ResourceStatus": "UPDATE_COMPLETE" }, { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4dd3c810-e4d6-xmpl-bade-0aaf8b31ab7a", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.127Z", "ResourceStatus": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS" } ], "NextToken": "eyJOZXh0VG9XMPLiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ==" }
  • Para obtener información sobre la API, consulte DescribeStackEvents en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de todos los eventos relacionados con la pila especificada.

Get-CFNStackEvent -StackName "myStack"

Ejemplo 2: Devolución de todos los eventos relacionados con la pila especificada con una paginación manual que comienza en el token especificado. El token de inicio de la página siguiente se recupera después de cada llamada y $null indica que no quedan más eventos por recuperar.

$nextToken = $null do { Get-CFNStack -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • Para obtener información sobre la API, consulte DescribeStackEvents en la Referencia de Cmdlet de AWS Tools for PowerShell.

Describir un recurso de pila

CLI
AWS CLI

Obtención de información sobre un recurso de pila

En el siguiente ejemplo de describe-stack-resource, se muestran los detalles del recurso con el nombre MyFunction en la pila especificada.

aws cloudformation describe-stack-resource \ --stack-name MyStack \ --logical-resource-id MyFunction

Salida:

{ "StackResourceDetail": { "StackName": "MyStack", "StackId": "arn:aws:cloudformation:us-east-2:123456789012:stack/MyStack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "MyFunction", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "Metadata": "{}", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } }
  • Para obtener información sobre la API, consulte DescribeStackResource en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de la descripción de un recurso identificado en la plantilla asociada a la pila especificada con la identificación lógica “MyDBInstance”.

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • Para obtener información sobre la API, consulte DescribeStackResource en la Referencia de Cmdlet de AWS Tools for PowerShell.

Describir los recursos de pila

CLI
AWS CLI

Obtención de información sobre un recurso de pila

En el siguiente ejemplo de describe-stack-resources, se muestran los detalles de los recursos en la pila especificada.

aws cloudformation describe-stack-resources \ --stack-name my-stack

Salida:

{ "StackResources": [ { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "Timestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "Timestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
  • Para obtener información sobre la API, consulte DescribeStackResources en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de las descripciones de los recursos de AWS de hasta 100 recursos asociados a la pila especificada. Para obtener detalles de todos los recursos asociados a una pila, utilice Get-CFNStackResourceSummary, que también es compatible con la paginación manual de los resultados.

Get-CFNStackResourceList -StackName "myStack"

Ejemplo 2: Devolución de la descripción de la instancia de Amazon EC2 identificada en la plantilla asociada a la pila especificada con la identificación lógica “Ec2Instance”.

Get-CFNStackResourceList -StackName "myStack" -LogicalResourceId "Ec2Instance"

Ejemplo 3: Devolución de la descripción de hasta 100 recursos asociados a la pila que contiene una instancia de Amazon EC2 identificada con la identificación de instancia “i-123456”. Para obtener detalles de todos los recursos asociados a una pila, utilice Get-CFNStackResourceSummary, que también es compatible con la paginación manual de los resultados.

Get-CFNStackResourceList -PhysicalResourceId "i-123456"

Ejemplo 4: Devolución de la descripción de la instancia de Amazon EC2 identificada con la identificación lógica “Ec2Instance” en la plantilla de una pila. La pila se identifica con la identificación de un recurso físico que también contiene una instancia de Amazon EC2 con la identificación de instancia “i-123456”. También se puede utilizar un recurso físico distinto para identificar la pila según el contenido de la plantilla; por ejemplo, un bucket de Amazon S3.

Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"
  • Para obtener información sobre la API, consulte DescribeStackResources en la Referencia de Cmdlet de AWS Tools for PowerShell.

Describir las pilas

CLI
AWS CLI

Descripción de las pilas de AWS CloudFormation

En el siguiente ejemplo de describe-stacks, se muestra la información del resumen para la pila myteststack:

aws cloudformation describe-stacks --stack-name myteststack

Salida:

{ "Stacks": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Tags": [], "Outputs": [ { "Description": "Name of S3 bucket to hold website content", "OutputKey": "BucketName", "OutputValue": "myteststack-s3bucket-jssofi1zie2w" } ], "StackStatusReason": null, "CreationTime": "2013-08-23T01:02:15.422Z", "Capabilities": [], "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE", "DisableRollback": false } ] }

Para obtener más información, consulte Pilas en la Guía del usuario de AWS CloudFormation.

  • Para obtener información sobre la API, consulte DescribeStacks en la Referencia de comandos de la AWS CLI.

Go
SDK para Go V2
nota

Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

// StackOutputs defines a map of outputs from a specific stack. type StackOutputs map[string]string type CloudFormationActions struct { CfnClient *cloudformation.Client } // GetOutputs gets the outputs from a CloudFormation stack and puts them into a structured format. func (actor CloudFormationActions) GetOutputs(stackName string) StackOutputs { output, err := actor.CfnClient.DescribeStacks(context.TODO(), &cloudformation.DescribeStacksInput{ StackName: aws.String(stackName), }) if err != nil || len(output.Stacks) == 0 { log.Panicf("Couldn't find a CloudFormation stack named %v. Here's why: %v\n", stackName, err) } stackOutputs := StackOutputs{} for _, out := range output.Stacks[0].Outputs { stackOutputs[*out.OutputKey] = *out.OutputValue } return stackOutputs }
  • Para obtener información sobre la API, consulte DescribeStacks en la Referencia de la API de AWS SDK for Go.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de una colección de instancias de pila que describen todas las pilas del usuario.

Get-CFNStack

Ejemplo 2: Devolución de una instancia de pila que describe la pila especificada.

Get-CFNStack -StackName "myStack"

Ejemplo 3: Devolución de una colección de instancias de pila que describen todas las pilas del usuario con una paginación manual. El token de inicio de la página siguiente se recupera después de cada llamada y $null indica que no se pueden recuperar más detalles.

$nextToken = $null do { Get-CFNStack -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • Para obtener información sobre la API, consulte DescribeStacks en la Reference de Cmdlet de AWS Tools for PowerShell.

Obtener una plantilla

CLI
AWS CLI

Visualización del cuerpo de la plantilla de una pila de AWS CloudFormation

En el siguiente ejemplo de get-template, se muestra la plantilla para la pila myteststack:

aws cloudformation get-template --stack-name myteststack

Salida:

{ "TemplateBody": { "AWSTemplateFormatVersion": "2010-09-09", "Outputs": { "BucketName": { "Description": "Name of S3 bucket to hold website content", "Value": { "Ref": "S3Bucket" } } }, "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead" } } } } }
  • Para obtener información sobre la API, consulte GetTemplate en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de la plantilla asociada a la pila especificada.

Get-CFNTemplate -StackName "myStack"
  • Para obtener información sobre la API, consulte GetTemplate en la Referencia de Cmdlet de AWS Tools for PowerShell.

Recursos de pila de listas

CLI
AWS CLI

Enumeración de los recursos de una pila

En el siguiente comando, se muestra la lista de los recursos en la pila especificada.

aws cloudformation list-stack-resources \ --stack-name my-stack

Salida:

{ "StackResourceSummaries": [ { "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "LastUpdatedTimestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "LastUpdatedTimestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
  • Para obtener información sobre la API, consulte ListStackResources en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de las descripciones de todos los recursos asociados a la pila especificada.

Get-CFNStackResourceSummary -StackName "myStack"

Ejemplo 2: Devolución de las descripciones de todos los recursos asociados a la pila especificada con una paginación manual de los resultados. El token de inicio de la página siguiente se recupera después de cada llamada y $null indica que no se pueden recuperar más detalles.

$nextToken = $null do { Get-CFNStackResourceSummary -StackName "myStack" -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • Para obtener información sobre la API, consulte ListStackResources en la Referencia de Cmdlet de AWS Tools for PowerShell.

Listar pilas

Usar el comando list-stacks para enumerar las pilas. Para ver únicamente pilas con los códigos de estado especificados, incluya la opción --stack-status-filter. Puede especificar uno o varios códigos de estado de pila para la opción --stack-status-filter. Para obtener más información, consulte Códigos de estado de pilas.

CLI
AWS CLI

Enumeración de las pilas de AWS CloudFormation

En el siguiente ejemplo de list-stacks, se muestra un resumen de todas las pilas que tienen el estado CREATE_COMPLETE:

aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE

Salida:

[ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "TemplateDescription": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "StackStatusReason": null, "CreationTime": "2013-08-26T03:27:10.190Z", "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE" } ]
  • Para obtener información sobre la API, consulte ListStacks en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Devolución de información de resumen de todas las pilas.

Get-CFNStackSummary

Ejemplo 2: Devolución de información de resumen de todas las pilas que se crean actualmente.

Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"

Ejemplo 3: Devolución de información de resumen de todas las pilas que se crean o se actualizan actualmente.

Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")

Ejemplo 4: Devolución de información de resumen de todas las pilas que se crean o se actualizan actualmente con una paginación manual de los resultados. El token de inicio de la página siguiente se recupera después de cada llamada y $null indica que no se pueden recuperar más detalles.

$nextToken = $null do { Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS") -NextToken $nextToken $nextToken = $AWSHistory.LastServiceResponse.NextToken } while ($nextToken -ne $null)
  • Para obtener información sobre la API, consulte ListStacks en la Referencia de Cmdlet de AWS Tools for PowerShell.

Actualizar una pila

Utilice el comando update-stack para actualizar una pila. Para obtener más información, consulte Actualizaar pilas directamente.

CLI
AWS CLI

Actualización de las pilas de AWS CloudFormation

En el siguiente ejemplo de update-stack, se actualiza la plantilla y los parámetros de entrada de la pila mystack:

aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,ParameterValue=SampleKeyPair ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

En el siguiente ejemplo de update-stack, se actualiza únicamente el valor de parámetro SubnetIDs para la pila mystack. Si no se especifica un valor de parámetro, se utilizará el valor predeterminado que esté especificado en la plantilla:

aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2

En el siguiente ejemplo de update-stack, se agregan dos temas de notificaciones de pila en la pila mystack:

aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:use-east-1:123456789012:mytopic1" "arn:aws:sns:us-east-1:123456789012:mytopic2"

Para obtener más información, consulte Actualizaciones de pila de AWS CloudFormation en la Guía del usuario de AWS CloudFormation.

  • Para obtener información sobre la API, consulte UpdateStack en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Actualización de la pila “myStack” con la plantilla y los parámetros de personalización especificados. “PK1” representa el nombre de un parámetro declarado en la plantilla, mientras que “PV1” representa su valor. Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”.

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

Ejemplo 2: Actualización de la pila “myStack” con la plantilla y los parámetros de personalización especificados. “PK1” y “PK2” representan los nombres de los parámetros declarados en la plantilla, mientras que “PV1” y “PV2” representan los valores solicitados. Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”.

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )

Ejemplo 3: Actualización de la pila “myStack” con la plantilla y los parámetros de personalización especificados. “PK1” representa el nombre de un parámetro declarado en la plantilla, mientras que “PV2” representa su valor. Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”.

Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }

Ejemplo 4: Actualización de la pila “myStack” con la plantilla obtenida de Amazon S3 y los parámetros de personalización especificados. “PK1” y “PK2” representan los nombres de los parámetros declarados en la plantilla, mientras que “PV1” y “PV2” representan los valores solicitados. Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”.

Update-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )

Ejemplo 5: Actualización de la pila “myStack”, que en este ejemplo se supone que contiene recursos de IAM, con la plantilla obtenida de Amazon S3 y los parámetros de personalización específicos. “PK1” y “PK2” representan los nombres de los parámetros declarados en la plantilla, mientras que “PV1” y “PV2” representan los valores solicitados. Los parámetros de personalización también se pueden especificar con “Key” y “Value” en lugar de “ParameterKey” y “ParameterValue”. Las pilas que contienen recursos de IAM requieren que se especifique el parámetro “CAPABILITY_IAM” de -Capabilities; de lo contrario, la actualización fallará y mostrará el error “InsufentCapabilities”.

Update-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) ` -Capabilities "CAPABILITY_IAM"
  • Para obtener información sobre la API, consulte UpdateStack en la Referencia de Cmdlet de AWS Tools for PowerShell.

Valide su plantillas

Use el comando validate-template para comprobar si hay errores de sintaxis en el archivo de plantilla.

Durante la validación, CloudFormation comprueba primero si la plantilla es un JSON válido. Si no lo es, CloudFormation comprueba si la plantilla es un YAML válido. Si ambas comprobaciones fallan, CloudFormation devuelve un error de validación de plantilla.

CLI
AWS CLI

Validación de una plantilla de AWS CloudFormation

En el siguiente ejemplo de validate-template, se valida la plantilla sampletemplate.json:

aws cloudformation validate-template --template-body file://sampletemplate.json

Salida:

{ "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": [], "Capabilities": [] }

Para obtener más información, consulte Trabajo con plantillas de AWS CloudFormation en la Guía del usuario de AWS CloudFormation.

  • Para obtener información sobre la API, consulte ValidateTemplate en la Referencia de comandos de la AWS CLI.

PowerShell
Herramientas para PowerShell

Ejemplo 1: Validación del contenido de la plantilla especificada. El resultado detalla las capacidades, la descripción y los parámetros de la plantilla.

Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"

Ejemplo 2: Validación de la plantilla especificada a la que se ha accedido con una URL de Amazon S3. El resultado detalla las capacidades, la descripción y los parámetros de la plantilla.

Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/mytemplates/templatefile.template
  • Para obtener información sobre la API, consulte ValidateTemplate en la Referencia de Cmdlet de AWS Tools for PowerShell.

A continuación, se muestra un ejemplo de respuesta que produce un error de validación.

{ "ResponseMetadata": { "RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd" }, "Errors": [ { "Message": "Template format error: JSON not well-formed. (line 11, column 8)", "Code": "ValidationError", "Type": "Sender" } ], "Capabilities": [], "Parameters": [] } A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)
nota

El comando validate-template está diseñado para comprobar únicamente la sintaxis de la plantilla. No garantiza que los valores de propiedad que ha especificado para un recurso sean válidos para ese recurso. Tampoco determina la cantidad de recursos que existirán cuando se cree la pila.

Para comprobar la validez operativa, debe intentar crear la pila. No hay entorno aislado ni área de pruebas para pilas de AWS CloudFormation, por lo que se le cobrará por los recursos que cree durante las pruebas.

Ejemplo de disponibilidad

¿No encuentra lo que necesita? Solicite un ejemplo de código nuevo mediante el enlace Proporcionar comentarios que se encuentra en la parte inferior de esta página.