Quais são algumas das práticas recomendadas para implantar recursos personalizados com suporte do Lambda com o CloudFormation?

4 minuto de leitura
0

Quero seguir as práticas recomendadas ao implementar recursos personalizados com suporte do AWS Lambda com o AWS CloudFormation.

Resolução

Considere as práticas recomendadas a seguir ao implementar recursos personalizados com suporte do AWS Lambda com o AWS CloudFormation.

Crie seus recursos personalizados para relatar, registrar e resolver falhas

Exceções podem fazer com que seu código de função seja encerrado sem enviar uma resposta. O CloudFormation exige uma resposta HTTPS para confirmar se a operação foi bem-sucedida ou falhou. Uma exceção não relatada faz com que o CloudFormation espere até que a operação atinja o tempo limite antes de iniciar uma reversão da pilha. Se a exceção ocorrer novamente durante a reversão, o CloudFormation aguardará novamente por um tempo limite antes de terminar em uma falha de reversão. Durante esse período, sua pilha fica inutilizável.

Para evitar problemas de tempo limite, inclua o seguinte no código que você cria para a função do Lambda:

  • Lógica para resolver exceções
  • A capacidade de registrar a falha em cenários de solução de problemas
  • A capacidade de responder ao CloudFormation com uma resposta HTTPS confirmando que uma operação falhou
  • Uma fila de mensagens não entregues que permite capturar e lidar com execuções incompletas
  • Um módulo cfn-response para enviar uma resposta ao CloudFormation

Defina períodos de tempo limite razoáveis e informe quando eles estão prestes a ser excedidos

Se uma operação não for executada dentro do período de tempo limite definido, a função gerará uma exceção e nenhuma resposta será enviada ao CloudFormation.

Para evitar esse problema, considere o seguinte:

  • Definir um valor de tempo limite para suas funções do Lambda alto o suficiente para lidar com variações no tempo de processamento e nas condições da rede.
  • Definir um cronômetro em sua função para responder ao CloudFormation com um erro quando uma função estiver prestes a expirar. Um cronômetro pode ajudar a evitar atrasos em recursos personalizados.

Crie em torno de eventos Criar, Atualizar e Excluir

Dependendo da ação da pilha, o CloudFormation envia à sua função um evento Criar, Atualizar ou Excluir. Como cada evento é tratado de forma diferente, confirme se não há comportamentos indesejados quando qualquer um dos três tipos de eventos for recebido.

Para mais informações, consulte Tipos de solicitação de recursos personalizados.

Entenda como o CloudFormation identifica e substitui recursos

Quando uma atualização inicia a substituição de um recurso físico, o CloudFormation compara o PhysicalResourceID que sua função do Lambda retorna para o PhysicalResourceID anterior. Se os IDs forem diferentes, o CloudFormation presumirá que o recurso foi substituído por um novo recurso físico.

No entanto, para permitir possíveis reversões, o recurso antigo não é removido implicitamente. Quando a atualização da pilha é concluída com êxito, uma solicitação de evento Excluir é enviada com o antigo ID físico como identificador. Se a atualização da pilha falhar e ocorrer uma reversão, o novo ID físico será enviada no evento Excluir.

Use PhysicalResourceId para identificar recursos de forma exclusiva para que, quando um evento Excluir for recebido, somente os recursos corretos sejam excluídos durante uma substituição.

Projete suas funções com idempotência

Uma função idempotente pode ser repetida várias vezes com as mesmas entradas, e o resultado é o mesmo que fazer isso apenas uma vez. A idempotência garante que novas tentativas, atualizações e reversões não criem recursos duplicados nem introduzam erros.

Por exemplo, o CloudFormation invoca sua função para criar um recurso, mas não recebe uma resposta de que o recurso foi criado com sucesso. O CloudFormation pode invocar a função novamente e criar um segundo recurso. O primeiro recurso pode então ficar órfão.

Implemente seus manipuladores para lidar corretamente com as reversões

Quando uma operação de pilha falha, o CloudFormation tenta fazer uma reversão e reverter todos os recursos ao estado anterior. Isso resulta em comportamentos diferentes, dependendo se a atualização causou uma substituição de recursos.

Para garantir que as reversões sejam concluídas com êxito, considere o seguinte:

  • Evite remover implicitamente recursos antigos até que um evento Excluir seja recebido.
  • Use accustom ou o Auxiliar de recursos personalizados no site do GitHub para ajudar você a seguir as melhores práticas ao usar recursos personalizados no CloudFormation.

Informações relacionadas

Recursos personalizados

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos