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
- PowerShell
-
- Herramientas para PowerShell
-
Ejemplo 1: Cancelación de una actualización en la pila especificada.
Stop-CFNUpdateStack -StackName "myStack"
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.
- 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"
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.
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.
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.
- 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/amzn-s3-demo-bucket/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/amzn-s3-demo-bucket/templatefile.template `
-Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } `
-NotificationARN @( "arn1", "arn2" )
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.
- PowerShell
-
- Herramientas para PowerShell
-
Ejemplo 1: Eliminación de la pila especificada.
Remove-CFNStack -StackName "myStack"
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
:
- 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=="
}
- PowerShell
-
- Herramientas para PowerShell
-
Ejemplo 1: Devolución de todos los eventos relacionados con la pila especificada.
Get-CFNStackEvent -StackName "myStack"
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"
}
}
}
- 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"
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"
}
}
]
}
- 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"
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.
- Go
-
- SDK para Go V2
-
// 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(ctx context.Context, stackName string) StackOutputs {
output, err := actor.CfnClient.DescribeStacks(ctx, &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
}
- 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"
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"
}
}
}
}
}
- PowerShell
-
- Herramientas para PowerShell
-
Ejemplo 1: Devolución de la plantilla asociada a la pila especificada.
Get-CFNTemplate -StackName "myStack"
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"
}
}
]
}
- PowerShell
-
- Herramientas para PowerShell
-
Ejemplo 1: Devolución de las descripciones de todos los recursos asociados a la pila especificada.
Get-CFNStackResourceSummary -StackName "myStack"
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"
}
]
- 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")
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.
- 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.
- 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/amzn-s3-demo-bucket/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/amzn-s3-demo-bucket/templatefile.template `
-Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) `
-Capabilities "CAPABILITY_IAM"
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.
- 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.
- 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/amzn-s3-demo-bucket/templatefile.template
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)
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.