Como resolvo o erro “Já existe” que recebo ao reimplantar meu código do AWS CDK depois de excluir a pilha da implantação?
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:
- Faça login no Console de Gerenciamento da AWS.
- Escolha o serviço dos recursos que você não deseja reter.
- Exclua manualmente os recursos. Por exemplo, para remover o recurso s3.bucket, exclua o bucket do Amazon S3.
- Para reimplantar o AWS CDK, execute o seguinte comando:
cdk deploy
Altere o nome do recurso retido
Conclua as seguintes etapas:
- Acesse o código CDK da AWS do recurso do qual você deseja alterar o nome.
- Atualize o nome do recurso para um valor exclusivo que não entre em conflito com o nome do recurso retido:
**Observação:**O exemplo anterior usa o parâmetro bucketName para alterar o nome do recurso s3.bucket.const s3Bucket = new s3.Bucket(this, 's3-bucket', { bucketName: 'EXAMPLE-NEW-NAME-S3-BUCKET', versioned: false, encryption: s3.BucketEncryption.S3_MANAGED });
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:
- Remova o nome do recurso CDK da AWS:
**Observação:**O código de exemplo anterior remove a propriedade bucketName para permitir que o CDK da AWS gere um novo nome.const s3Bucket = new s3.Bucket(this, 's3-bucket', { versioned: false, encryption: s3.BucketEncryption.S3_MANAGED });
- 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:
-
Acesse o código do CDK da AWS dos recursos que você não deseja reter.
-
Defina a propriedade removalPolicy como DESTROY:
const s3Bucket = new s3.Bucket(this, 's3-bucket', { bucketName: 'EXAMPLE-S3-BUCKET', removalPolicy: RemovalPolicy.DESTROY });
-
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.
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há um ano