Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Como excluo um recurso personalizado com suporte do Lambda que está preso no status DELETE_FAILED ou no status DELETE_IN_PROGRESS no CloudFormation?
Meu recurso personalizado com suporte do AWS Lambda está preso no status DELETE_FAILED ou no status DELETE_IN_PROGRESS no AWS CloudFormation. Quero excluir meu recurso personalizado.
Resolução
Escolha uma das soluções a seguir com base no status do seu recurso.
Exclua um recurso personalizado que está preso no status DELETE_FAILED
Você recebe uma mensagem de erro ao tentar excluir uma pilha com um recurso personalizado com suporte do Lambda que não tem a lógica para lidar com solicitações de exclusão. Também é possível receber a seguinte mensagem de erro se seu recurso personalizado contiver uma lógica de exclusão incorreta: "CloudFormation did not receive a response from your Custom Resource. Please check your logs for requestId [652961ca-f24e-42e0-8f74-3f4846ba282d]. If you use the Python cfn-response module, you might need to update your Lambda function code so that CloudFormation can attach the updated version."
O status da pilha muda para DELETE\ _FAILED e, em seguida, você recebe a seguinte mensagem de erro: "Custom Resource failed to stabilize in expected time."
Para excluir a pilha, conclua as seguintes etapas:
- Abra o console do CloudFormation.
- Selecione a pilha que contém seu recurso personalizado que está preso no status DELETE_FAILED.
- Selecione Ações e, em seguida, selecione Excluir pilha.
- Na janela pop-up que fornece uma lista de recursos a serem retidos, selecione o recurso personalizado que está preso no status DELETE_FAILED. Em seguida, selecione Excluir.
- Selecione Ações e, em seguida, selecione Excluir pilha.
O status da sua pilha mudará para DELETE_COMPLETE.
Observação: seu recurso personalizado não é um recurso físico, então você não precisa limpar seu recurso personalizado após a exclusão da pilha.
Exclua um recurso personalizado que está preso no status DELETE_IN_PROGRESS
Quando sua pilha exclui um recurso personalizado e ele fica preso no status DELETE_IN_PROGRESS, sua pilha pode não ter a lógica para lidar com solicitações de exclusão. Ou a pilha pode incluir uma lógica de exclusão incorreta.
Para forçar a exclusão da pilha, você deve enviar manualmente um sinal de SUCCESS. O sinal requer os valores ResponseURL e RequestId que estão incluídos no evento enviado do CloudFormation para o Lambda.
-
Em seu modelo do CloudFormation, identifique o nome da função do Lambda para a qual seu recurso personalizado está enviando solicitações. Você pode encontrar o nome da função na propriedade ServiceToken do recurso AWS::CloudFormation::CustomResource ou Custom::String.
Por exemplo:
MyCustomResource: Type: "Custom::PingTester" Properties: ServiceToken: !Sub | arn:aws:lambda:us-east-1:111122223333:function:awsexamplelambdafunction -
Abra o console do Lambda.
-
No painel de navegação, selecione Funções e, em seguida, selecione a função que você identificou na etapa 1. Por exemplo, awsexamplelambdafunction é o nome da função no exemplo de código anterior.
-
Verifique se sua função do Lambda registra os detalhes do evento no grupo de logs do Amazon CloudWatch chamado /aws/lambda/function_name.
Exemplo de lógica:exports.handler = function(event, context) { console.log("REQUEST RECEIVED:\n" + JSON.stringify(event)); ... }Observação: Se a função do Lambda não incluir a lógica para imprimir o evento nos logs do CloudWatch, você não poderá obter os valores ResponseURL e RequestId. Você precisa ter esses valores para enviar um sinal manual. Espere aproximadamente uma hora para que a pilha do CloudFormation atinja o tempo limite e vá para o status DELETE_FAILED. Em seguida, conclua as etapas na seção Excluir um recurso personalizado que está preso no status DELETE_FAILED para excluir sua pilha.
-
Selecione a guia Monitoramento e, em seguida, selecione Visualizar logs no CloudWatch.
-
No console do Amazon CloudWatch, selecione o log mais recente.
Observação: você pode ver os logs do CloudWatch somente se a função tiver acesso ao Amazon CloudWatch Logs para fluxo de logs.
-
No log mais recente, identifique o evento em que RequestType está definido como Excluir e copie os valores de RequestId, ResponseURL, StackId, LogicalResourceId e PhysicalResourceId. Por exemplo:
Received event: { "RequestType": "Delete", "ServiceToken": "arn:aws:lambda:us-east-1:111122223333:function:awsexamplelambdafunction", "ResponseURL": "https://cloudformation-custom-resource-response-useast1.s3.us-east-1.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A111122223333%3Astack/awsexamplecloudformation/33ad60e0-5f25-11e9-a734-0aa6b80efab2%7CMyCustomResource%7Ce2fc8f5c-0391-4a65-a645-7c695646739?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20170313T0212304Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Credential=QWERTYUIOLASDFGBHNZCV%2F20190415%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=dgvg36bh23mk44nj454bjb54689bg43r8v011uerehiubrjrug5689ghg94hb", "StackId": "arn:aws:cloudformation:us-east-1:111122223333:stack/awsexamplecloudformation/33ad60e0-5f25-11e9-a734-0aa6b80efab2", "RequestId": "e2fc8f5c-0391-4a65-a645-7c695646739", "LogicalResourceId": "MyCustomResource", "PhysicalResourceId": "test-MyCustomResource-1URTEVUHSKSKDFF", "ResourceType": "Custom::PingTester" -
Para enviar um sinal de resposta de SUCCESS no objeto de resposta para a solicitação de exclusão, execute o comando a seguir em sua interface de linhas de comando local. Certifique-se de incluir os valores que você copiou da etapa 7.
curl -H "Content-Type: ''" -X PUT -d "{\"Status\": \"SUCCESS\",\"PhysicalResourceId\": \"test-CloudWatchtrigger-1URTEVUHSKSKDFF\",\"StackId\": \"arn:aws:cloudformation:us-west-2:111122223333:stack/CRStack/5105e4b0-4a29-11ef-8c42-067744df1edb\",\"RequestId\": \"dca731ad-18ad-496c-8c77-459d904fd36b\",\"LogicalResourceId\": \"MyCustomResource\"}" "https://cloudformation-custom-resource-response-uswest2.s3-us-west-2.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-west-2%3A111122223333%3Astack/CRStack/5105e4b0-4a29-11ef-8c42-067744df1edb%7CCustomResource%7Cdca731ad-18ad-496c-8c77-459d904fd36b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240725T020141Z&X-Amz-SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Credential=AKIA54RCMT6SJPHCTM4H%2F20240725%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=3b1567adb5ec9415526251a26bac3a6c861ac77aa090a3ada0a4a4d109a7273d"
O status de seus recursos personalizados muda para DELETE_COMPLETE nos eventos da pilha do CloudFormation.
Informações relacionadas
Crie uma lógica de provisionamento personalizada com recursos personalizados
- Tópicos
- Management & Governance
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- Resposta aceitafeita há 4 meses
- feita há 9 meses
AWS OFICIALAtualizada há um ano