

# Ejemplos de comandos de operación de pila de CloudFormation para la AWS CLI y PowerShell
<a name="service_code_examples"></a>

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 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/)‎ en la *Referencia de los comandos de AWS CLI*.

En los ejemplos de esta guía se utiliza la barra invertida (\$1) como convención para indicar que una línea de comandos larga continúa en la línea siguiente. 

**Topics**
+ [

## Cancelar una actualización de pila
](#cancel-update-stack-sdk)
+ [

## Continuación de la restauración de una actualización
](#continue-update-rollback-sdk)
+ [

## Creación de una pila
](#create-stack-sdk)
+ [

## Crear una pila que incluya transformaciones
](#deploy-sdk)
+ [

## Eliminar una pila
](#delete-stack-sdk)
+ [

## Describir los eventos de la pila
](#describe-stack-events-sdk)
+ [

## Describir un recurso de pila
](#describe-stack-resource-sdk)
+ [

## Describir los recursos de pila
](#describe-stack-resources-sdk)
+ [

## Describir las pilas
](#describe-stacks-sdk)
+ [

## Obtener una plantilla
](#get-template-sdk)
+ [

## Recursos de pila de listas
](#list-stack-resources-sdk)
+ [

## Listar pilas
](#list-stacks-sdk)
+ [

## Actualizar una pila
](#update-stack-sdk)
+ [

## Valide su plantillas
](#validate-template-sdk)
+ [

# Carga de artefactos locales en un bucket de S3 con la AWS CLI
](using-cfn-cli-package.md)

## Cancelar una actualización de pila
<a name="cancel-update-stack-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/cancel-update-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/cancel-update-stack.html) para cancelar una actualización de pila. Para obtener más información, consulte [Cancelar una actualización de pila](using-cfn-stack-update-cancel.md).

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/cancel-update-stack.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: Cancelación de una actualización en la pila especificada.**  

```
Stop-CFNUpdateStack -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [CancelUpdateStack](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: Cancelación de una actualización en la pila especificada.**  

```
Stop-CFNUpdateStack -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [CancelUpdateStack](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Continuación de la restauración de una actualización
<a name="continue-update-rollback-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/continue-update-rollback.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/continue-update-rollback.html) 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](using-cfn-updating-stacks-continueupdaterollback.md).

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/continue-update-rollback.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: Reanudación de la reversión de la pila seleccionada, la cual debería encontrarse en el estado “UPDATE\$1ROLLBACK\$1FAILED'. Si la reversión continua es exitosa, el estado de la pila será “UPDATE\$1ROLLBACK\$1COMPLETE'.**  

```
Resume-CFNUpdateRollback -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [ContinueUpdateRollback](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: Reanudación de la reversión de la pila seleccionada, la cual debería encontrarse en el estado “UPDATE\$1ROLLBACK\$1FAILED'. Si la reversión continua es exitosa, el estado de la pila será “UPDATE\$1ROLLBACK\$1COMPLETE'.**  

```
Resume-CFNUpdateRollback -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [ContinueUpdateRollback](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Creación de una pila
<a name="create-stack-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) 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.

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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/create-stack.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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 \$1false).**  

```
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 \$1false”). 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" )
```
+  Para obtener información sobre la API, consulte [CreateStack](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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 \$1false).**  

```
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 \$1false”). 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" )
```
+  Para obtener información sobre la API, consulte [CreateStack](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

**nota**  
Puede utilizar la opción `--template-url` de la AWS CLI para especificar la ubicación de un archivo de plantilla en Amazon S3 o AWS Systems Manager.  
En el caso de Amazon S3, la URL debe empezar por `https://`. No se admiten las URL de sitios web estáticos de S3.  

```
--template-url https://s3.region-code.amazonaws.com/bucket-name/template-name
```
Para AWS Systems Manager, utilice el siguiente formato:  

```
--template-url "ssm-doc://arn:aws:ssm:region-code:account-id:document/document-name"
```

## Crear una pila que incluya transformaciones
<a name="deploy-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/) para crear una pila que incluya transformaciones. Al crear una pila a partir de una plantilla que incluye transformaciones, debe utilizar un conjunto de cambios. El comando `deploy` combina dos pasos (crear un conjunto de cambios y ejecutarlo) 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
<a name="delete-stack-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/delete-stack.html) para eliminar una pila. Para obtener más información, consulte [Eliminar una pila](cfn-console-delete-stack.md).

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/delete-stack.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: Eliminación de la pila especificada.**  

```
Remove-CFNStack -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [DeleteStack](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: Eliminación de la pila especificada.**  

```
Remove-CFNStack -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [DeleteStack](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

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\$1SKIPPED. Para obtener más información, consulte [Recursos de pila de listas](#list-stack-resources-sdk).

## Describir los eventos de la pila
<a name="describe-stack-events-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-events.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-events.html) para describir los eventos de la pila. Para obtener más información, consulte [Monitorizar el progreso de la pila](monitor-stack-progress.md).

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/describe-stack-events.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: Devolución de todos los eventos relacionados con la pila especificada.**  

```
Get-CFNStackEvent -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [DescribeStackEvents](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: Devolución de todos los eventos relacionados con la pila especificada.**  

```
Get-CFNStackEvent -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [DescribeStackEvents](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Describir un recurso de pila
<a name="describe-stack-resource-sdk"></a>

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/describe-stack-resource.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Describir los recursos de pila
<a name="describe-stack-resources-sdk"></a>

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/describe-stack-resources.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Describir las pilas
<a name="describe-stacks-sdk"></a>

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/describe-stacks.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ Go ]

**SDK para Go V2**  
 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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/workflows/user_pools_and_lambda_triggers#code-examples). 

```
import (
	"context"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/cloudformation"
)

// 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
}
```
+  Para obtener información sobre la API, consulte [DescribeStacks](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/cloudformation#Client.DescribeStacks) en la *Referencia de la API de AWS SDK para Go*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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"
```
+  Para obtener información sobre la API, consulte [DescribeStacks](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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"
```
+  Para obtener información sobre la API, consulte [DescribeStacks](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

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 contraseñas, incluya una propiedad `NoEcho` establecida en `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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html).
La sección de la plantilla `Outputs`. Para obtener más información, consulte [Salidas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).
El atributo `Metadata` de una definición de recurso. Para obtener más información, consulte [`Metadata` atributo](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-metadata.html).
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 la práctica recomendada [No integre credenciales en sus plantillas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/security-best-practices.html#creds).

## Obtener una plantilla
<a name="get-template-sdk"></a>

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/get-template.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Recursos de pila de listas
<a name="list-stack-resources-sdk"></a>

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/list-stack-resources.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: Devolución de las descripciones de todos los recursos asociados a la pila especificada.**  

```
Get-CFNStackResourceSummary -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [ListStackResources](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: Devolución de las descripciones de todos los recursos asociados a la pila especificada.**  

```
Get-CFNStackResourceSummary -StackName "myStack"
```
+  Para obtener información sobre la API, consulte [ListStackResources](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Listar pilas
<a name="list-stacks-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stacks.html) 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](view-stack-events.md#cfn-console-view-stack-data-resources-status-codes).

------
#### [ 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/list-stacks.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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")
```
+  Para obtener información sobre la API, consulte [ListStacks](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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")
```
+  Para obtener información sobre la API, consulte [ListStacks](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

## Actualizar una pila
<a name="update-stack-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html) 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](using-cfn-updating-stacks-direct.md).

------
#### [ 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) en la *Guía del usuario de AWS CloudFormation*.  
+  Para obtener información sobre la API, consulte [UpdateStack](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/update-stack.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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\$1IAM” 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 obtener información sobre la API, consulte [UpdateStack](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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\$1IAM” 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 obtener información sobre la API, consulte [UpdateStack](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

**nota**  
Para eliminar todas las notificaciones, especifique `[]` en la opción `--notification-arns`.

## Valide su plantillas
<a name="validate-template-sdk"></a>

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/validate-template.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/validate-template.html) 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/validate-template.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**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 S. 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
```
+  Para obtener información sobre la API, consulte [ValidateTemplate](https://docs.aws.amazon.com/powershell/v4/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V4)*. 

**Herramientas para PowerShell V5**  
**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
```
+  Para obtener información sobre la API, consulte [ValidateTemplate](https://docs.aws.amazon.com/powershell/v5/reference) en *Herramientas de AWS para PowerShell Cmdlet Reference (V5)*. 

------

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 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.

# Carga de artefactos locales en un bucket de S3 con la AWS CLI
<a name="using-cfn-cli-package"></a>

Puede utilizar la AWS CLI para cargar artefactos locales a los que se hace referencia en una plantilla de CloudFormation a un bucket de Amazon S3. Los artefactos locales son archivos a los que hace referencia en su plantilla. En lugar de cargar de forma manual los archivos en un bucket de S3 y, a continuación, añadir la ubicación a su plantilla, puede especificar artefactos locales en su plantilla y luego usar el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html) para cargarlos rápidamente. 

Un artefacto local es una ruta a un archivo o carpeta que el comando **package** carga en Amazon S3. Por ejemplo, un artefacto puede ser una ruta local al código fuente de su función de AWS Lambda o un archivo OpenAPI de la API de REST de Amazon API Gateway. 

Al usar el comando **package**:
+ Si especifica un archivo, el comando se carga directamente en el bucket de S3. 
+ Si especifica una carpeta, el comando crea un archivo `.zip` para la carpeta y, a continuación, carga el archivo `.zip`. 
+ Si no especifica una ruta, el comando crea un archivo `.zip` para el directorio de trabajo y, a continuación, lo carga. 

Puede especificar una ruta absoluta o relativa, donde la ruta relativa es relativa respecto a la ubicación de la plantilla.

Después de cargar los artefactos, el comando devuelve una copia de la plantilla, sustituyendo las referencias a artefactos locales con la ubicación de S3 donde el comando cargó los artefactos. A continuación, puede utilizar la plantilla devuelta para crear o actualizar una pila.

**nota**  
Solo puede usar artefactos locales para propiedades de recursos compatibles con el comando **package**. Para obtener más información acerca de este comando y una lista de las propiedades de recursos compatibles, consulte la documentación de [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html) en la [Referencia de comandos de AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/index.html).



## Requisitos previos
<a name="using-cfn-cli-package-prerequisites"></a>

Antes de comenzar, debe tener un bucket de Amazon S3 existente. 

## Empaquetar e implementar una plantilla con artefactos locales
<a name="package-and-deploy-a-template-with-local-artifacts"></a>

La siguiente plantilla especifica el artefacto local del código fuente de una función de Lambda. El código fuente se almacena en la carpeta `/home/user/code/lambdafunction`.

**Plantilla original**

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Resources": {
    "MyFunction": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
        "Handler": "index.handler",
        "Runtime": "nodejs18.x",
        "CodeUri": "/home/user/code/lambdafunction"
      }
    }
  }
}
```

El siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html) crea y carga un archivo `.zip` de la carpeta del código de origen de la función en la raíz del bucket especificado.

```
aws cloudformation package \
  --s3-bucket amzn-s3-demo-bucket \
  --template /path_to_template/template.json \
  --output-template-file packaged-template.json \
  --output json
```

El comando genera una nueva plantilla en la ruta especificada por `--output-template-file`. Sustituye la referencia del artefacto con la ubicación de Amazon S3, tal y como se muestra a continuación. El archivo `.zip` se nombra utilizando la suma de comprobación MD5 del contenido de la carpeta, en lugar de utilizar el nombre de la carpeta en sí.

**Plantilla resultante**

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Resources": {
    "MyFunction": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
        "Handler": "index.handler",
        "Runtime": "nodejs18.x",
        "CodeUri": "s3://amzn-s3-demo-bucket/md5 checksum"
      }
    }
  }
}
```

Después de empaquetar los artefactos de su plantilla, implemente la plantilla procesada mediante el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/deploy/).

```
aws cloudformation deploy \
  --template-file packaged-template.json \
  --stack-name stack-name
```

Al implementar plantillas de más de 51 200 bytes, utilice el comando **deploy** con la opción `--s3-bucket` para cargar su plantilla en S3, como en el siguiente ejemplo.

```
aws cloudformation deploy \
  --template-file packaged-template.json \
  --stack-name stack-name \
  --s3-bucket amzn-s3-demo-bucket
```

**nota**  
Para ver otro ejemplo del uso del comando **package** para cargar artefactos locales, consulte [División de una plantilla en piezas reutilizables utilizando pilas anidadas](using-cfn-nested-stacks.md).