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 cloudformation en la Referencia de los comandos de AWS CLI.
En los ejemplos de esta guía se utiliza la barra invertida (\) como convención para indicar que una línea de comandos larga continúa en la línea siguiente.
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.
- 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 pilamyteststack
: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.
-
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.
- 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.
-
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ónMetadata
. Para obtener más información, consulte Sintaxis de Metadata de la plantilla de CloudFormation. -
La sección de la plantilla
Outputs
. Para obtener más información, consulte Sintaxis de Outputs de la plantilla de CloudFormation. -
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.
- AWS CLI
-
Creación de una pila de AWS CloudFormation
En el siguiente ejemplo de
create-stacks
, se crea una pila con el nombremyteststack
mediante la plantillasampletemplate.json
:aws cloudformation create-stack --stack-name
myteststack
--template-bodyfile://sampletemplate.json
--parametersParameterKey=KeyPairName,ParameterValue=TestKey
ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2Salida:
{ "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.
-
Como alternativa, puede especificar la ubicación AWS Systems Manager del archivo de plantilla.
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.
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-overridesKey1=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.
- 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.
-
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.
El siguiente comando delete-stack
fuerza la eliminación de la pila
mediante el valor myteststack
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.
- 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-items2
{
"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.
-
Describir un recurso de pila
- 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 nombreMyFunction
en la pila especificada.aws cloudformation describe-stack-resource \ --stack-name
MyStack
\ --logical-resource-idMyFunction
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.
-
Describir los recursos de pila
- 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.
-
Describir las pilas
- 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 pilamyteststack
: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.
-
Obtener una plantilla
- 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 pilamyteststack
: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.
-
Recursos de pila de listas
- 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.
-
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.
- 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 estadoCREATE_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.
-
Actualizar una pila
Utilice el comando update-stack
para actualizar directamente una pila. Debe especificar la pila, los valores de los parámetros y las capacidades que desea actualizar y, si desea utilizar una plantilla actualizada, el nombre de la plantilla. Para obtener más información, consulte Actualizaar pilas directamente.
- 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 pilamystack
:aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,ParameterValue=SampleKeyPair
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2En el siguiente ejemplo de
update-stack
, se actualiza únicamente el valor de parámetroSubnetIDs
para la pilamystack
. 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-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,UsePreviousValue=true
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2En el siguiente ejemplo de
update-stack
, se agregan dos temas de notificaciones de pila en la pilamystack
: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.
-
nota
Para eliminar todas las notificaciones, especifique []
en la opción --notification-arns
.
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.
- AWS CLI
-
Validación de una plantilla de AWS CloudFormation
En el siguiente ejemplo de
validate-template
, se valida la plantillasampletemplate.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.
-
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.