Coordene a dependência de recursos e a execução de tarefas usando a AWS Fargate WaitCondition construção de gancho - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Coordene a dependência de recursos e a execução de tarefas usando a AWS Fargate WaitCondition construção de gancho

Stan Fan, Amazon Web Services

Resumo

Esse padrão descreve o pacote WaitCondition hook (waitcondition-hook-for-aws-fargate-task) npm, que é uma solução nativa da nuvem projetada para orquestrar AWS Fargatetarefas em clusters do Amazon Elastic Container Service (Amazon ECS).

O WaitCondition gancho é uma AWS Cloud Development Kit (AWS CDK) construção especificamente adaptada para integração com AWS CloudFormation. O WaitCondition gancho fornece os seguintes recursos principais:

  • Atua como um mecanismo de condição de espera, pausando a execução da CloudFormation pilha até que uma tarefa específica do Fargate seja concluída, o que ajuda nas implantações ordenadas e no provisionamento de recursos.

  • Suportes TypeScript e Python, o que o torna ideal para AWS CDK projetos.

  • Permite que desenvolvedores e arquitetos realizem a orquestração de implantações ao coordenar a conclusão de tarefas e o gerenciamento de recursos para aplicações em contêineres na AWS.

  • Permite executar tarefas do Fargate com um ou vários contêineres incorporados em um CloudFormation ciclo de vida e pode lidar com falhas de tarefas e reverter a pilha após uma falha na CloudFormation tarefa.

  • Oferece flexibilidade para adicionar dependências entre recursos e os resultados da execução das tarefas do Fargate, permitindo a criação de tarefas personalizadas ou a invocação de outros endpoints. Por exemplo, você pode pausar uma CloudFormation pilha e aguardar a migração do banco de dados (feita por uma tarefa do Fargate) e provisionar outros recursos que podem depender do sucesso da migração do banco de dados.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Essa solução é implantada em um único Conta da AWS.

  • O código de retorno esperado do contêiner é 0, representando êxito. Qualquer outro código de retorno indica falha e a CloudFormation pilha será revertida.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte Serviços da AWS by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama apresentado a seguir mostra a arquitetura do constructo.

Fluxo de trabalho do AWS Step Functions da construção waitcondition-hook-for-aws -fargate-task.

O diagrama mostra o fluxo de trabalho para waitcondition-hook-for-aws-fargate-task:

  1. WaitConditione WaitConditionHandler são provisionados para ouvir a resposta das AWS Lambda funções.

  2. Dependendo do resultado da tarefa, as funções CallbackFunction ou ErrorHandlerFunction são acionadas pelo término da tarefa do Fargate.

  3. A função do Lambda envia um sinal de SUCESSO ou FALHA para o WaitConditionHandler.

  4. O WaitConditionHandler continua a provisionar os recursos se o resultado da execução da tarefa do Fargate for bem-sucedido, ou reverte a pilha se a tarefa apresentar falhas.

O diagrama apresentado a seguir mostra um exemplo de fluxo de trabalho para a realização de uma migração de banco de dados.

Fluxo de trabalho da migração do banco de dados Amazon RDS usando a construção de WaitCondition gancho.

O fluxo de trabalho de exemplo usa o constructo waitcondition-hook-for-aws-fargate-task para realizar uma migração de banco de dados, conforme descrito abaixo:

  1. Uma instância do Amazon Relational Database Service (Amazon RDS) é provisionada.

  2. A waitcondition-hook-for-aws-fargate-task construção executa a tarefa de migração do banco de dados e pausa a pilha como uma instância do Amazon Elastic Compute Cloud (Amazon EC2).

  3. Se a tarefa de migração for concluída com êxito, ela enviará um sinal de sucesso para CloudFormation. Caso contrário, ele envia um sinal de falha CloudFormation e reverte a pilha.

Ferramentas

Serviços da AWS

  • AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software que ajuda você a definir a infraestrutura de nuvem em código e provisioná-la por meio dela CloudFormation.

  • CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS

  • CloudWatchA Amazon ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.

  • O Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.

  • AWS Fargateajuda você a executar contêineres sem precisar gerenciar servidores ou EC2 instâncias da Amazon. É usado em conjunto com o Amazon ECS.

  • AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • AWS Step Functionsé um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.

  • A Amazon Virtual Private Cloud (Amazon VPC) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Esta rede virtual é parecida com uma rede tradicional que você gerenciaria em seu próprio data center, com as vantagens de aproveitar a infraestrutura escalável da AWS.

Outras ferramentas

  • O npm é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados.

  • O Yarn é um gerenciador de pacotes de código aberto que você pode usar para gerenciar dependências em JavaScript projetos. O Yarn pode auxiliar na instalação, atualização, configuração e remoção de dependências de pacotes.

Repositório de código

O código desse padrão está disponível no repositório GitHub waitcondition-hook-for-aws-fargate-task.

Práticas recomendadas

Épicos

TarefaDescriptionHabilidades necessárias

Instale AWS CDK o.

Para instalar o AWS CDK em sua máquina local ou em outro ambiente, execute o seguinte comando:

npm install -g aws-cdk@latest
Arquiteto de nuvem, desenvolvedor de aplicativos

Inicialize o. AWS CDK

A inicialização é o processo de preparar um ambiente para implantação. Para inicializar seu AWS CDK kit de ferramentas para o destino Conta da AWS e Região da AWS, execute o seguinte comando:

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

Esse comando cria uma CloudFormation pilha chamadaCDKToolkit.

Arquiteto de nuvem
TarefaDescriptionHabilidades necessárias

Crie o projeto do CDK.

Crie um projeto do CDK com a linguagem de sua preferência. Esse padrão usa TypeScript. Para criar um projeto CDK usando TypeScript, execute o seguinte comando:

cdk init app —language typescript

Arquiteto de nuvem

Instale o pacote .

Execute npm install no caminho raiz do seu projeto do CDK. Após a biblioteca do CDK ser instalada, execute o seguinte comando para instalar waitcondition-hook-for-aws-fargate-task:

yarn add waitcondition-hook-for-aws-fargate-task

Arquiteto de nuvem

Desenvolva sua aplicação do CDK e os componentes do Amazon ECS.

Desenvolva seu projeto do CDK. É necessário um recurso de definição de tarefa do Amazon ECS. Para obter mais informações sobre como criar uma definição de tarefa, consulte Definições de tarefa do Amazon ECS na documentação do Amazon ECS.

O exemplo apresentado a seguir usa este constructo:

import * as cdk from 'aws-cdk-lib'; import { Vpc } from 'aws-cdk-lib/aws-ec2'; import * as ecr from 'aws-cdk-lib/aws-ecr'; import * as ecs from 'aws-cdk-lib/aws-ecs'; import { Construct } from 'constructs'; import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task'; import { Queue } from 'aws-cdk-lib/aws-sqs'; export class FargateRunnerStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Define the VPC const vpc = new Vpc(this, 'MyVpc') // Define the Fargate Task const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {}); // Import exiting ecr repo const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName'); // Add a container to the task taskDefinition.addContainer('MyContainer', { image: ecs.ContainerImage.fromEcrRepository(repo), }); // Create the Fargate runner const myFargateRunner = new FargateRunner(this, 'MyRunner', { fargateTaskDef: taskDefinition, timeout: `${60 * 5}`, vpc: vpc, }); // Create the SQS queue const myQueue = new Queue(this, 'MyQueue', {}); // Add dependency myQueue.node.addDependency(myFargateRunner); } }
Arquiteto de nuvem

Sintetize e execute a aplicação do CDK.

  1. Para gerar os ativos e o CloudFormation modelo, execute o seguinte comando no caminho raiz do CDK:

    cdk synth

  2. Após o comando synth ser executado com êxito, execute o seguinte comando para implantar os recursos:

    cdk deploy

O constructo waitcondition-hook-for-aws-fargate-task executa a tarefa do Fargate.

Arquiteto de nuvem
TarefaDescriptionHabilidades necessárias

Limpar os recursos

Para remover os recursos provisionados na etapa anterior, execute o seguinte comando:

cdk destroy
Arquiteto de nuvem

Solução de problemas

ProblemaSolução

Falha geral CloudFormation na pilha

Para ajudar a solucionar falhas gerais de CloudFormation pilha, adicione o --no-rollback sinalizador conforme mostrado no exemplo a seguir:

cdk deploy --no-rollback

Esse comando interromperá a reversão da CloudFormation pilha, o que fornece recursos para solucionar problemas. Para obter mais informações, consulte Escolha como lidar com falhas ao provisionar recursos na CloudFormation documentação.

AWS Step Functions falha

Uma máquina de AWS Step Functions estado pode falhar na execução por diferentes motivos. Com a opção —disable-rollback configurada, siga as etapas apresentadas abaixo para solucionar o problema:

  1. Faça login no Console de gerenciamento da AWS, insira Step Functions no campo Pesquisar e escolha o serviço Step Functions.

  2. No painel de navegação esquerdo, escolha Máquinas de estado e, em seguida, selecione a máquina de estado que é provisionada pela pilha. CloudFormation

  3. Em Execuções, escolha o nome da execução que falhou inesperadamente.

  4. Na visualização Evento, escolha a etapa que apresentou falhas.

Para obter mais informações, consulte Solução de problemas no Step Functions e Visualização dos detalhes da execução no console do Step Functions na AWS Step Functions documentação.

AWS Lambda falha de função

Este constructo provisiona duas funções do Lambda: CallbackFunction e ErrorhandlerFunction. Essas funções podem falhar por diversos motivos, como por exceções não tratadas. Siga as etapas apresentadas abaixo para solucionar o problema:

  1. Faça login no Console de gerenciamento da AWS, insira CloudWatchno campo Pesquisar e escolha o CloudWatch serviço.

  2. No painel de navegação esquerdo, escolha Log groups (Grupos de log).

  3. No campo Pesquisar, insira o nome da função do Lambda.

  4. Escolha o nome do grupo de logs associado à função do Lambda.

  5. Para acessar o resultado da execução da função do Lambda, escolha o fluxo de logs mais recente.

Para obter mais informações, consulte Solução de problemas no Lambda na AWS Lambda documentação.

Recursos relacionados

AWS documentação

Outros recursos