

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
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Stan Fan, Amazon Web Services*

## Resumo
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

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 Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)tarefas 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
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Cloud Development Kit (AWS CDK) Interface de linha de comando (CLI) instalada em uma estação de trabalho local. Para obter mais informações, consulte a [referência da AWS CDK CLI](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) na AWS CDK documentação.
+ [Gerenciador de pacotes Node (npm), instalado em uma estação de trabalho local e configurado para entrada.AWS CDK TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Para obter mais informações, consulte [Download e instalação do Node.js e npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), na documentação do npm.
+ O Yarn instalado em uma estação de trabalho local. Para obter mais informações, consulte [Installation](https://yarnpkg.com/getting-started/install) na documentação do Yarn.

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

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.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


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

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

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

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

1. 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.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


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.

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

1. 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
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é 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.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 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)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) é 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.
+ O [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) facilita a execução de contêineres sem que você precise gerenciar servidores ou instâncias do Amazon EC2. É usado em conjunto com o Amazon ECS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é 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](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)é 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)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 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](https://docs.npmjs.com/about-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](https://yarnpkg.com/) é 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](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task).

## Práticas recomendadas
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Ao criar seu AWS CDK aplicativo, siga as [melhores práticas para desenvolver e implantar a infraestrutura de nuvem AWS CDK na](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) documentação AWS CDK v2.
+ Para a AWS Fargate tarefa, siga as [melhores práticas para imagens de contêineres do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) na documentação do Amazon ECS.

## Épicos
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Configure o AWS CDK
<a name="set-up-the-cdk"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale AWS CDK o. | Para instalar o AWS CDK em sua máquina local ou em outro ambiente, execute o seguinte comando: <pre>npm install -g aws-cdk@latest</pre> | Arquiteto de nuvem, desenvolvedor de aplicativos | 
| Inicialize o. AWS CDK | A [inicialização](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) é o processo de preparar um [ambiente](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) 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:<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Esse comando cria uma CloudFormation pilha chamada`CDKToolkit`.  | Arquiteto de nuvem | 

### Execute o WaitCondition gancho para construir AWS Fargate tarefas
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Tarefa | Description | Habilidades 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) na documentação do Amazon ECS.O exemplo apresentado a seguir usa este constructo:<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Arquiteto de nuvem | 
| Sintetize e execute a aplicação do CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)O constructo `waitcondition-hook-for-aws-fargate-task` executa a tarefa do Fargate.  | Arquiteto de nuvem | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpar os recursos | Para remover os recursos provisionados na etapa anterior, execute o seguinte comando:<pre>cdk destroy </pre> | Arquiteto de nuvem | 

## Solução de problemas
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Problema | Soluçã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: <pre>cdk deploy --no-rollback</pre>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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obter mais informações, consulte [Solução de problemas no Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) e [Visualização dos detalhes da execução no console do Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details) 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: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obter mais informações, consulte [Solução de problemas no Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html) na AWS Lambda documentação. | 

## Recursos relacionados
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS documentação**
+ [AWS CDK Referência da API Construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Começando com o AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Saiba como criar e usar os recursos do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Saiba como começar a usar o Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [O que AWS CDKé](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Outros recursos**
+ [Gancho de condição de espera para AWS Fargate tarefa](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) 1.0.6 (pypi.org)