Como resolvo o erro "Já existe" que recebo ao reimplantar meu código CDK depois que a pilha da implantação inicial é excluída?
Quero resolver o erro "Já existe" que recebo quando estou reimplantando meu código do AWS Cloud Development Kit (AWS CDK).
Breve descrição
A maioria dos recursos dinâmicos na AWS CDK Construct Library aceita a propriedade removalPolicy com RETAIN como padrão. Os recursos que não têm removalPolicy definida se tornam recursos órfãos e permanecem na conta após a exclusão da pilha. Isso ocorre quando a pilha passa para o estado DELETE_COMPLETE. O comportamento permanece o mesmo quando a definição de recursos semelhantes é removida do código durante uma atualização na pilha correspondente. Se os recursos retidos tiverem nomes personalizados, o erro "Já existe" aparecerá quando você reimplantar o mesmo código.
Para resolver esse erro, conclua as seguintes ações, dependendo do seu caso de uso:
- Para recursos retidos por acidente, exclua-os manualmente.
- Para recursos retidos intencionalmente, altere o nome do recurso no código CDK da AWS para um valor exclusivo.
- Outro método para recursos retidos intencionalmente é excluir o nome do recurso do código do AWS CDK para permitir que o AWS CDK gere um novo nome de forma automática.
- Antes de excluir uma pilha, confirme se a removalPolicy está definida como DESTROY do recurso.
Resolução
**Observação:**As etapas a seguir usam um exemplo de recurso de bucket do Amazon Simple Storage Service (Amazon S3) representado pela classe s3.bucket no AWS CDK. A removalPolicy desse recurso no AWS CDK é definida como RETAIN por padrão. Esse recurso é retido na conta quando sua respectiva pilha é excluída ou quando o recurso é removido durante uma atualização da pilha.
Exemplo:
const s3Bucket = new s3.Bucket(this, 's3-bucket', { bucketName: ‘DOC-EXAMPLE-BUCKET1’, versioned: false, encryption: s3.BucketEncryption.S3_MANAGED });
Exclua manualmente o recurso retido
1. Faça login no Console de Gerenciamento da AWS e acesse o serviço correspondente dos recursos que você não deseja reter.
2. Exclua manualmente os recursos que você não deseja reter.
Observação: Neste exemplo, exclua o bucket do Amazon S3 para excluir o recurso s3.bucket.
3. Reimplante o código do AWS CDK:
cdk deploy
Altere o nome do recurso retido
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.
**Observação:**Neste exemplo, atualize o parâmetro bucketName para alterar o nome do recurso s3.bucket.
Exemplo:
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 para permitir que o AWS CDK gere automaticamente um nome exclusivo
1. Remova o nome do recurso do AWS CDK.
Observação: Neste exemplo, a propriedade bucketName é removida para permitir que o AWS CDK gere automaticamente um novo nome.
Exemplo:
const s3Bucket = new s3.Bucket(this, 's3-bucket', { versioned: false, encryption: s3.BucketEncryption.S3_MANAGED });
2. Reimplante o código do AWS CDK:
cdk deploy
Defina a removalPolicy como DESTOY
1. Acesse o código do AWS CDK 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. Execute o cdk synth para acessar o modelo do AWS CloudFormation e, em seguida, verifique se a DeletionPolicy e a UpdateReplacePolicy estão definidas como Excluir:
cdk synth
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos