Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como resolvo o erro “Já existe” que recebo ao reimplantar meu código do AWS CDK depois de excluir a pilha da implantação?

3 minuto de leitura
0

Quero resolver o erro "Já existe" que recebo quando estou reimplantando meu código do AWS Cloud Development Kit (AWS CDK).

Solução

A maioria dos recursos dinâmicos na AWS CDK Construct Library aceita a propriedade removalPolicy com RETAIN como padrão. Para obter mais informações, consulte enum RemovalPolicy no site do AWS CDK.

Se você não definir a propriedade removalPolicy em seus recursos, os recursos ficarão órfãos. Eles permanecem na sua conta da AWS depois que você exclui a pilha e faz a transição para o estado ** DELETE\ _COMPLETE**. Se você especificou um nome personalizado para os recursos, o erro “Já existe” aparece quando você reimplanta o mesmo código.

**Observação:**As etapas a seguir usam um exemplo de recurso de bucket do Amazon Simple Storage Service (Amazon S3) associado à classe s3.bucket no AWS CDK. Por padrão, o recurso da removalPolicy é definida como RETAIN. Quando você exclui a pilha associada, o recurso é retido na sua conta. Quando você atualiza a pilha, o recurso é removido.

Veja a seguir um exemplo de um recurso com nome personalizado:

const s3Bucket = new s3.Bucket(this, 's3-bucket', {
 bucketName: 'DOC-EXAMPLE-BUCKET1',
 versioned: false,
 encryption: s3.BucketEncryption.S3_MANAGED
 });

Exclua manualmente o recurso retido

Conclua as seguintes etapas:

  1. Faça login no Console de Gerenciamento da AWS.
  2. Escolha o serviço dos recursos que você não deseja reter.
  3. Exclua manualmente os recursos. Por exemplo, para remover o recurso s3.bucket, exclua o bucket do Amazon S3.
  4. Para reimplantar o AWS CDK, execute o seguinte comando:
    cdk deploy

Altere o nome do recurso retido

Conclua as seguintes etapas:

  1. Acesse o código CDK da AWS do recurso do qual você deseja alterar o nome.
  2. Atualize o nome do recurso para um valor exclusivo que não entre em conflito com o nome do recurso retido:
    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     bucketName: 'EXAMPLE-NEW-NAME-S3-BUCKET',
     versioned: false,
     encryption: s3.BucketEncryption.S3_MANAGED
     });
    **Observação:**O exemplo anterior usa o parâmetro bucketName para alterar o nome do recurso s3.bucket.

Exclua o nome do recurso

Exclua o nome do recurso para que o CDK da AWS possa gerar um nome exclusivo.

Conclua as seguintes etapas:

  1. Remova o nome do recurso CDK da AWS:
    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     versioned: false,
     encryption: s3.BucketEncryption.S3_MANAGED
     });
    **Observação:**O código de exemplo anterior remove a propriedade bucketName para permitir que o CDK da AWS gere um novo nome.
  2. Para reimplantar o CDK da AWS, execute o seguinte comando:
    cdk deploy

Defina a removalPolicy como DESTROY

Antes de excluir uma pilha, defina a removalPolicy do recurso como DESTROY.

Conclua as seguintes etapas:

  1. Acesse o código do CDK da AWS dos recursos que você não deseja reter.

  2. Defina a propriedade removalPolicy como DESTROY:

    const s3Bucket = new s3.Bucket(this, 's3-bucket', {
     bucketName: 'EXAMPLE-S3-BUCKET',
     removalPolicy: RemovalPolicy.DESTROY
     });
  3. Para acessar o modelo do AWS CloudFormation, execute o seguinte comando cdk synth:

    cdk synth

    Em seguida, verifique se a DeletionPolicy e a UpdateReplacePolicy estão definidas comoDelete.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses