

Esta es la guía para desarrolladores de AWS CDK v2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.

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.

# Personalizar la síntesis de pilas de CDK
<a name="customize-synth"></a>

Puede personalizar la síntesis de pilas de AWS Cloud Development Kit (AWS CDK) modificando el sintetizador predeterminado, utilizando otros sintetizadores integrados disponibles o creando su propio sintetizador.

AWS CDK incluye los siguientes sintetizadores integrados que puede utilizar para personalizar el comportamiento de la síntesis:
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html): si no especifica un sintetizador, este se utiliza de forma automática. Admite implementaciones entre cuentas e implementaciones que utilizan el constructo [CDK Pipelines](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html). Su contrato de arranque requiere un bucket de Amazon S3 existente con un nombre conocido, un repositorio de Amazon ECR existente con un nombre conocido y cinco roles de IAM existentes con nombres conocidos. La plantilla de arranque predeterminada cumple con estos requisitos.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html): el contrato de arranque de este sintetizador requiere un bucket de Amazon S3 existente y un repositorio de Amazon ECR existente. No requiere ningún rol de IAM. Para llevar a cabo las implementaciones, este sintetizador depende de los permisos del usuario de la CLI de CDK y se recomienda para las organizaciones que desean restringir las credenciales de implementación de IAM. Este sintetizador no admite implementaciones entre cuentas ni CDK Pipelines.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html) – este sintetizador emula el comportamiento de síntesis de CDK v1. Su contrato de arranque requiere un bucket de Amazon S3 existente con un nombre arbitrario y espera que las ubicaciones de los activos se transmitan como parámetros de pila de CloudFormation. Si usa este sintetizador, debe usar la CLI de CDK para llevar a cabo la implementación.

Si ninguno de estos sintetizadores integrados es adecuado para su caso de uso, puede escribir su propio sintetizador como una clase que implemente `IStackSynthesizer` o analice los [sintetizadores](https://constructs.dev/search?q=synthesizer&cdk=aws-cdk) desde el centro de constructos.

## Personalizar `DefaultStackSynthesizer`
<a name="bootstrapping-custom-synth-default"></a>

El `DefaultStackSynthesizer` es el sintetizador predeterminado para AWS CDK. Está diseñado para permitir la implementación de aplicaciones de CDK entre cuentas, así como la implementación de aplicaciones de CDK desde un sistema de CI/CD que no tiene soporte explícito para AWS CDK, pero que es compatible con las implementaciones normales de CloudFormation, como AWS. Este sintetizador es la mejor opción para la mayoría de los casos de uso.

### Contrato de arranque de `DefaultStackSynthesizer`
<a name="bootstrapping-custom-synth-default-contract"></a>

 `DefaultStackSynthesizer` requiere el siguiente contrato de arranque. Estos son los recursos que se deben crear durante el arranque:


| Recurso de arranque | Descripción | Nombre del recurso esperado predeterminado | Finalidad | 
| --- | --- | --- | --- | 
|  Bucket de Amazon S3  |  Bucket transitorio  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Almacena los activos de los archivos.  | 
|  Un repositorio de Amazon ECR  |  Repositorio transitorio  |  cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION>  |  Almacena y administra los activos de imagen de Docker.  | 
|  rol de IAM  |  Implemente el rol  |  cdk-hnb659fds-deploy-role-<ACCOUNT>-<REGION>  |  Lo asumen la CLI del CDK y, potencialmente, CodePipeline para asumir otras funciones e iniciar la implementación de AWS CloudFormation. La política de confianza de este rol controla quién puede llevar a cabo la implementación de AWS CDK en este entorno de AWS.  | 
|  rol de IAM  |   Función de ejecución de AWS CloudFormation  |  cdk-hnb659fds-cfn-exec-role-<ACCOUNT>-<REGION>  |  AWS CloudFormation usa este rol para llevar a cabo la implementación. Las políticas de este rol controlan las operaciones que puede llevar a cabo la implementación de CDK.  | 
|  rol de IAM  |  Rol de búsqueda  |  cdk-hnb659fds-lookup-role-<ACCOUNT>-<REGION>  |  Esta función se utiliza cuando la CLI de CDK necesita llevar a cabo búsquedas del contexto del entorno. La política de confianza de este rol controla quién puede buscar información en el entorno.  | 
|  rol de IAM  |  Rol de publicación de archivos  |  cdk-hnb659fds-file-publishing-role-<ACCOUNT>-<REGION>  |  Este rol se utiliza para cargar activos en el bucket de almacenamiento transitorio de Amazon S3. Se asume a partir del rol de implementación.  | 
|  rol de IAM  |  Rol de publicación de imágenes  |  cdk-hnb659fds-image-publishing-role-<ACCOUNT>-<REGION>  |  Este rol se utiliza para cargar imágenes de Docker al repositorio transitorio de Amazon ECR. Se asume a partir del rol de implementación.  | 
|  Parámetro SSM  |  Parámetro de versión de arranque  |  /cdk-bootstrap/hnb659fds/<version>  |  La versión de la plantilla de arranque. La plantilla de arranque y la CLI de CDK lo utilizan para validar los requisitos.  | 

Una forma de personalizar la síntesis de pilas de CDK consiste en modificar el [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html). Puede personalizar este sintetizador para una sola pila de CDK mediante la propiedad `synthesizer` de la instancia de `Stack`. También puede modificar `DefaultStackSynthesizer` para todas las pilas de la aplicación de CDK mediante la propiedad `defaultStackSynthesizer` de la instancia de la `App`.

### Cambie el calificador
<a name="bootstrapping-custom-synth-qualifiers"></a>

El *calificador* se agrega al nombre de los recursos creados durante el arranque. De forma predeterminada, este valor es `hnb659fds`. Cuando se modifica el calificador durante el arranque, es necesario personalizar la síntesis de pilas de CDK para utilizar el mismo calificador.

Para cambiar el calificador, configure la propiedad `qualifier` del `DefaultStackSynthesizer` o configure el calificador como una clave de contexto en el archivo `cdk.json` del proyecto de CDK.

A continuación, se muestra un ejemplo de configuración de la propiedad `qualifier` de `DefaultStackSynthesizer`:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		Qualifier: jsii.String("MYQUALIFIER"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```

A continuación, se muestra un ejemplo de configuración del calificador como clave de contexto en `cdk.json`:

```
{
  "app": "...",
  "context": {
    "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER"
  }
}
```

### Cambio de nombres de recursos
<a name="bootstrapping-custom-synth-names"></a>

Todas las demás propiedades `DefaultStackSynthesizer` se refieren a los nombres de los recursos de la plantilla de arranque. Solo necesita proporcionar alguna de estas propiedades si modificó la plantilla de arranque y cambió los nombres de los recursos o el esquema de nomenclatura.

Todas las propiedades aceptan los marcadores de posición especiales `${Qualifier}`, `${AWS::Partition}``${AWS::AccountId}` y `${AWS::Region}`. Estos marcadores de posición se sustituyen por los valores del parámetro `qualifier` y la partición de AWS, el identificador de cuenta y los valores de la región de AWS del entorno de la pila, respectivamente.

En el siguiente ejemplo, se muestran las propiedades más utilizadas para `DefaultStackSynthesizer` junto con los valores predeterminados, como si creara una instancia del sintetizador. Para ver una lista completa, consulte [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties):

**Example**  

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,

})
```

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,
})
```

```
DefaultStackSynthesizer(
  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",

  # ARN of the role assumed by the CLI and Pipeline to deploy here
  deploy_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
  deploy_role_external_id="",

  # ARN of the role used for file asset publishing (assumed from the CLI role)
  file_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
  file_asset_publishing_external_id="",

  # ARN of the role used for Docker asset publishing (assumed from the CLI role)
  image_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
  image_asset_publishing_external_id="",

  # ARN of the role passed to CloudFormation to execute the deployments
  cloud_formation_execution_role="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

  # ARN of the role used to look up context information in an environment
  lookup_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
  lookup_role_external_id="",

  # Name of the SSM parameter which describes the bootstrap stack version number
  bootstrap_stack_version_ssm_parameter="/cdk-bootstrap/${Qualifier}/version",

  # Add a rule to every template which verifies the required bootstrap stack version
  generate_bootstrap_version_rule=True,
)
```

```
DefaultStackSynthesizer.Builder.create()
  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  .deployRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}")
  .deployRoleExternalId("")

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  .fileAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .fileAssetPublishingExternalId("")

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  .imageAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .imageAssetPublishingExternalId("")

  // ARN of the role passed to CloudFormation to execute the deployments
  .cloudFormationExecutionRole("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}")

  .lookupRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}")
  .lookupRoleExternalId("")

  // Name of the SSM parameter which describes the bootstrap stack version number
  .bootstrapStackVersionSsmParameter("/cdk-bootstrap/${Qualifier}/version")

  // Add a rule to every template which verifies the required bootstrap stack version
  .generateBootstrapVersionRule(true)
.build()
```

```
new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
{
    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",

    // ARN of the role assumed by the CLI and Pipeline to deploy here
    DeployRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
    DeployRoleExternalId = "",

    // ARN of the role used for file asset publishing (assumed from the CLI role)
    FileAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
    FileAssetPublishingExternalId = "",

    // ARN of the role used for Docker asset publishing (assumed from the CLI role)
    ImageAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
    ImageAssetPublishingExternalId = "",

    // ARN of the role passed to CloudFormation to execute the deployments
    CloudFormationExecutionRole = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

    LookupRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
    LookupRoleExternalId = "",

    // Name of the SSM parameter which describes the bootstrap stack version number
    BootstrapStackVersionSsmParameter = "/cdk-bootstrap/${Qualifier}/version",

    // Add a rule to every template which verifies the required bootstrap stack version
    GenerateBootstrapVersionRule = true,
})
```

## Uso de `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli"></a>

Para modificar las credenciales de seguridad utilizadas para conceder permisos durante las implementaciones de CDK, puede personalizar la síntesis mediante [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html). Este sintetizador funciona con los recursos predeterminados de AWS que se crean durante el arranque para almacenar activos, como el bucket de Amazon S3 y el repositorio de Amazon ECR. En lugar de utilizar los roles de IAM predeterminados que crea el CDK durante el arranque, utiliza las credenciales de seguridad del actor que inicia la implementación. Por lo tanto, las credenciales de seguridad del actor deben tener permisos válidos para llevar a cabo todas las acciones de implementación. En el diagrama siguiente se ilustra el proceso de implementación cuando se usa este sintetizador:

![\[Proceso de implementación mediante el CLICredentialsStackSynthesizer.\]](http://docs.aws.amazon.com/es_es/cdk/v2/guide/images/CliCredentialsStackSynthesizer-deploy-process_cdk_flowchart.png)


Cuando se utiliza `CliCredentialsStackSynthesizer`:
+ De forma predeterminada, CloudFormation hace llamadas a la API en su cuenta con los permisos del actor. Por lo tanto, la identidad actual debe tener permiso para hacer los cambios necesarios en los recursos de AWS de la pila de CloudFormation, junto con los permisos para llevar a cabo las operaciones de CloudFormation necesarias, como `CreateStack` o `UpdateStack`. Las capacidades de implementación se limitarán a los permisos del actor.
+ La publicación de activos y las implementaciones de CloudFormation se llevarán a cabo mediante la identidad de IAM actual. Esta identidad debe tener permisos suficientes para leer y escribir en el bucket de activos y en el repositorio.
+ Las búsquedas se llevan a cabo con la identidad de IAM actual y están sujetas a sus políticas.

Cuando usa este sintetizador, puede usar un rol de ejecución de CloudFormation independiente especificándolo mediante la opción [`--role-arn`](ref-cli-cmd.md#ref-cli-cmd-options-role-arn) con cualquier comando de la CLI de CDK.

### Contrato de arranque de `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli-contract"></a>

 `CliCredentialsStackSynthesizer` requiere el siguiente contrato de arranque. Estos son los recursos que se deben crear durante el arranque:


| Recurso de arranque | Descripción | Nombre del recurso esperado predeterminado | Finalidad | 
| --- | --- | --- | --- | 
|  Bucket de Amazon S3  |  Bucket transitorio  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Almacena los activos de los archivos.  | 
|  Un repositorio de Amazon ECR  |  Repositorio transitorio  |  cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION>  |  Almacena y administra los activos de imagen de Docker.  | 

La cadena `hnb659fds` del nombre del recurso se denomina *calificador*. Su valor predeterminado no tiene ningún significado especial. Puede tener varias copias de los recursos de arranque en un solo entorno siempre que tengan un calificador diferente. Tener varias copias puede resultar útil para mantener separados los activos de diferentes aplicaciones en el mismo entorno.

Puede implementar la plantilla de arranque predeterminada para cumplir con el contrato de arranque `CliCredentialsStackSynthesizer`. La plantilla de arranque predeterminada creará roles de IAM, pero este sintetizador no los utilizará. También puede personalizar la plantilla de arranque para eliminar los roles de IAM.

### Modificación de `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli-modify"></a>

Si cambia el calificador o alguno de los nombres de los recursos de arranque predeterminados durante el arranque, tendrá que modificar el sintetizador para que utilice los mismos nombres. Puede modificar el sintetizador para una sola pila o para todas las pilas de la aplicación. A continuación, se muestra un ejemplo:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=CliCredentialsStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(CliCredentialsStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

En el siguiente ejemplo, se muestran las propiedades más utilizadas para `CliCredentialsStackSynthesizer` junto con sus valores predeterminados. Para ver una lista completa, consulte [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html):

**Example**  

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
CliCredentialsStackSynthesizer(
  # Value for '${Qualifier}' in the resource names
  qualifier="hnb659fds",

  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",
)
```

```
CliCredentialsStackSynthesizer.Builder.create()
  // Value for '${Qualifier}' in the resource names
  .qualifier("hnb659fds")

  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')
.build()
```

```
new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
{

    // Value for '${Qualifier}' in the resource names
    Qualifier = "hnb659fds",

    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",
})
```

## Uso de `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy"></a>

`LegacyStackSynthesizer` emula el comportamiento de las implementaciones de CDK v1. Las credenciales de seguridad del actor que lleva a cabo la implementación se utilizarán para establecer los permisos. Los activos de los archivos se subirán a un bucket que se debe crear con una pila de AWS CloudFormation denominada `CDKToolkit`. La CLI de CDK creará un repositorio Amazon ECR no administrado con el nombre `aws-cdk/assets` para almacenar los activos de imagen de Docker. Usted deberá limpiar y administrar este repositorio. Las pilas sintetizadas mediante el `LegacyStackSynthesizer` solo se pueden implementar con la CLI del CDK.

Puede utilizar el `LegacyStackSynthesizer` si va a migrar de CDK v1 a CDK v2 y no puede volver a arrancar sus entornos. Para proyectos nuevos, recomendamos no utilizar `LegacyStackSynthesizer`.

### Contrato de arranque de `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy-contract"></a>

 `LegacyStackSynthesizer` requiere el siguiente contrato de arranque. Estos son los recursos que se deben crear durante el arranque:


| Recurso de arranque | Descripción | Nombre del recurso esperado predeterminado | Finalidad | 
| --- | --- | --- | --- | 
|  Bucket de Amazon S3  |  Bucket transitorio  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Almacena los activos de los archivos.  | 
|  Salida de CloudFormation  |  Salida del nombre de bucket  |  Pila: `CDKToolkit`  Nombre de salida: `BucketName`   |  Una salida de CloudFormation que describe el nombre del bucket transitorio  | 

`LegacyStackSynthesizer` no supone la existencia de un bucket de Amazon S3 con un nombre fijo. En su lugar, la plantilla sintetizada de CloudFormation contendrá tres parámetros de CloudFormation para cada activo de archivo. Estos parámetros almacenarán el nombre del bucket de Amazon S3, la clave de objeto de Amazon S3 y el hash de artefacto de cada activo de archivo.

 Los activos de imagen de Docker se publicarán en un repositorio de Amazon ECR denominado `aws-cdk/assets`. Este nombre se puede cambiar por activo. Los repositorios se crearán si no existen.

Debe existir una pila de CloudFormation con el nombre predeterminado `CDKToolkit`. Esta pila debe incluir una exportación de CloudFormation denominada `BucketName` que haga referencia al bucket transitorio.

La plantilla de predeterminada de arranque cumple con el contrato de arranque de `LegacyStackSynthesizer`. Sin embargo, solo se utilizará el bucket de Amazon S3 de los recursos de arranque de la plantilla de arranque. Puede personalizar la plantilla de arranque para eliminar los recursos de arranque de Amazon ECR, IAM y SSM.

### Proceso de implementación de `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy-deploy"></a>

Cuando se utiliza este sintetizador, se lleva a cabo el siguiente proceso durante la implementación:
+ La CLI del CDK busca una pila de CloudFormation con el nombre `CDKToolkit` en el entorno. En esta pila, la CLI del CDK lee el resultado de CloudFormation denominado `BucketName`. Puede usar la opción `--toolkit-stack-name` mediante `cdk deploy` para especificar un nombre de pila distinto.
+ Las credenciales de seguridad del actor que inicia la implementación se utilizarán para establecer los permisos de implementación. Por lo tanto, el actor debe tener permisos suficientes para llevar a cabo todas las acciones de implementación. Esto incluye leer y escribir en el bucket transitorio de Amazon S3, crear y escribir en el repositorio de Amazon ECR, iniciar y supervisar las implementaciones de AWS CloudFormation y hacer las llamadas a la API necesarias para la implementación.
+ Si es necesario y si los permisos son válidos, los activos de los archivos se publicarán en el bucket transitorio de Amazon S3.
+ Si es necesario, y si los permisos son válidos, los activos de imagen de Docker se publican en el repositorio que nombre la propiedad del activo `repositoryName`. El valor predeterminado es `'aws-cdk/assets'` si no se proporciona un nombre de repositorio.
+ Si los permisos son válidos, se lleva a cabo la implementación de AWS CloudFormation. Las ubicaciones del bucket transitorio y las claves de Amazon S3 se transfieren como parámetros de CloudFormation.