

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Creación de pilas mediante el modo de cambio directo
<a name="dcm-creating-stacks"></a>

Para que AMS pueda gestionar la pila`AWSManagedServicesCloudFormationAdminRole`, hay dos requisitos a la hora de lanzar pilas: CloudFormation 
+ La plantilla debe contener un`AmsStackTransform`.
+ El nombre de la pila debe empezar por el prefijo `stack-` seguido de una cadena alfanumérica de 17 caracteres.

**nota**  
Para utilizar correctamente el`AmsStackTransform`, debe reconocer que la plantilla de pila contiene la `CAPABILITY_AUTO_EXPAND` capacidad necesaria para que CloudFormation (CFN) cree o actualice la pila. Para ello, debes pasarla `CAPABILITY_AUTO_EXPAND` como parte de tu solicitud de creación de pila. CFN rechaza la solicitud si no se reconoce esta capacidad al incluirla en `AmsStackTransform` la plantilla. La consola CFN garantiza que superes esta capacidad si tienes la transformación en tu plantilla, pero es posible que no la utilices cuando interactúes con CFN a través de ella. APIs  
Debe utilizar esta función siempre que utilice las siguientes llamadas a la API de CFN:  
[CreateChangeSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html)
[ CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html#API_CreateStack_RequestParameters)
[UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)

Al crear o actualizar una pila con DCM, se realizan las mismas validaciones y ampliaciones de CFN Ingest y Stack Update CTs en la pila. Para obtener más información, consulte las pautas, mejores prácticas y limitaciones de la [CloudFormation ingesta](https://docs.aws.amazon.com/managedservices/latest/appguide/cfn-author-templates.html). La excepción a esto es que los grupos de seguridad predeterminados de AMS (SGs) no se adjuntarán a ninguna EC2 instancia independiente ni EC2 a ninguna instancia de los grupos de Auto Scaling (ASGs). Al crear la CloudFormation plantilla, con EC2 instancias independientes o bien ASGs, puede adjuntar la predeterminada. SGs 

**nota**  
Los roles de IAM ahora se pueden crear y administrar con. `AWSManagedServicesCloudFormationAdminRole`

De forma predeterminada, los AMS SGs tienen reglas de entrada y salida que permiten que las instancias se lancen correctamente y que las operaciones de AMS y usted puedan acceder a ellas más adelante mediante SSH o RDP. Si descubre que los grupos de seguridad predeterminados de AMS son demasiado permisivos, puede crear los suyos propios SGs con reglas más restrictivas y adjuntarlos a su instancia, siempre y cuando le permitan a usted y a las operaciones de AMS acceder a la instancia durante los incidentes.

Los grupos de seguridad predeterminados de AMS son los siguientes:
+ SentinelDefaultSecurityGroupPrivateOnly: Se puede acceder a ellos en la plantilla CFN a través de este parámetro SSM `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnly`
+ SentinelDefaultSecurityGroupPrivateOnlyEgressAll: Se puede acceder a él en la plantilla CFN a través de este parámetro SSM `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnlyEgressAll`

## Transformación AMS
<a name="dcm-cs-ams-transform"></a>

 Añada una `Transform` declaración a su CloudFormation plantilla. Esto añade una CloudFormation macro que valida y registra la pila en AMS en el momento del lanzamiento. 

Ejemplo de **JSON**

```
"Transform": {
    "Name": "AmsStackTransform",
    "Parameters": {
      "StackId": {"Ref" : "AWS::StackId"}
    }
  }
```

Ejemplo de **YAML**

```
Transform:
  Name: AmsStackTransform
  Parameters:
    StackId: !Ref 'AWS::StackId'
```

Agrega también la `Transform` declaración al actualizar la plantilla de una pila existente.

Ejemplo de **JSON**

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description" : "Create an SNS Topic",
    "Transform": {
      "Name": "AmsStackTransform",
      "Parameters": {
        "StackId": {"Ref" : "AWS::StackId"}
     }
  },
  "Parameters": {
    "TopicName": {
      "Type": "String",
      "Default": "HelloWorldTopic"
    }
  },
  "Resources": {
    "SnsTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "TopicName": {"Ref": "TopicName"}
      }
    }
  }
}
```

Ejemplo de **YAML**

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Create an SNS Topic
Transform:
  Name: AmsStackTransform
  Parameters:
    StackId: !Ref 'AWS::StackId'
Parameters:
  TopicName:
    Type: String
    Default: HelloWorldTopic
Resources:
  SnsTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: !Ref TopicName
```

## Nombre de pila
<a name="dcm-cs-stack-name"></a>

El nombre de la pila debe empezar por el prefijo `stack-` seguido de una cadena alfanumérica de 17 caracteres. Esto es para mantener la compatibilidad con otros sistemas AMS que funcionan en la pila AMS. IDs 

 Los siguientes son ejemplos de formas de generar una pila compatible IDs:

Bash:

```
echo "stack-$(env LC_CTYPE=C tr -dc 'a-z0-9' < /dev/urandom | head -c 17)"
```

Python:

```
import string
import random

'stack-' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=17))
```

Powershell:

```
"stack-" + ( -join ((0x30..0x39) + ( 0x61..0x7A) | Get-Random -Count 17  | % {[char]$_}) )
```