

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á.

# Lance um CodeBuild projeto em várias contas da AWS usando Step Functions e uma função de proxy Lambda
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts e Amit Anjarlekar, Amazon Web Services*

## Resumo
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

Esse padrão demonstra como iniciar de forma assíncrona um projeto da AWS CodeBuild em várias contas da AWS usando o AWS Step Functions e uma função de proxy do AWS Lambda. Você pode usar a máquina de estado Step Functions de amostra do padrão para testar o sucesso do seu CodeBuild projeto.

CodeBuild ajuda você a iniciar tarefas operacionais usando a AWS Command Line Interface (AWS CLI) a partir de um ambiente de tempo de execução totalmente gerenciado. Você pode alterar o comportamento do seu CodeBuild projeto em tempo de execução substituindo as variáveis de ambiente. Além disso, você pode usar CodeBuild para gerenciar fluxos de trabalho. Para obter mais informações, consulte [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) no site do AWS Workshop e [agende trabalhos no Amazon RDS for PostgreSQL usando a AWS e a EventBridge Amazon no blog do banco de dados CodeBuild da AWS](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/).

## Pré-requisitos e limitações
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Pré-requisitos **
+ Duas contas ativas da AWS: uma conta de origem para invocar uma função de proxy Lambda com Step Functions e uma conta de destino para criar um CodeBuild projeto de amostra remoto

**Limitações**
+ Esse padrão não pode ser usado para copiar [artefatos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) entre contas.

## Arquitetura
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

O diagrama a seguir mostra a arquitetura que esse padrão cria.

![\[Diagrama de arquitetura do lançamento de um CodeBuild projeto em várias contas da AWS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A máquina de estado do Step Functions analisa o mapa de entrada fornecido e invoca a função de proxy do Lambda (`codebuild-proxy-lambda`) para cada conta, região e projeto definidos.

1. A função de proxy do Lambda usa o AWS Security Token Service (AWS STS) para assumir um perfil de proxy do IAM (`codebuild-proxy-role`), que está associado a uma política do IAM (`codebuild-proxy-policy`) na conta de destino.

1. Usando a função assumida, a função Lambda inicia o CodeBuild projeto e retorna o ID do CodeBuild trabalho. A máquina de estado do Step Functions faz um loop e pesquisa a CodeBuild tarefa até receber um status de sucesso ou falha.

Na imagem a seguir, é apresentada a lógica da máquina de estado.

![\[Fluxo de trabalho da máquina de estado do Step Functions\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Pilha de tecnologia**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Ferramentas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.
+ O [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) fornece um editor JSON e YAML integrado que ajuda você a visualizar e editar CloudFormation modelos.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de criação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes unitários e produzir artefatos prontos para implantação.
+ O [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 recursos da AWS, 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 você 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.
+ O [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) é um serviço de orquestração com tecnologia sem servidor que permite combinar funções do AWS Lambda e outros serviços da AWS para criar aplicações essenciais aos negócios.
+ O [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) ajuda a coletar dados sobre solicitações que seu aplicativo atende e fornece ferramentas que você pode usar para visualizar, filtrar e obter informações sobre esses dados para identificar problemas e oportunidades de otimização.

**Código **

O código de amostra desse padrão está disponível no repositório GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy). Esse padrão usa a biblioteca AWS Lambda Powertools for Python para fornecer funcionalidade de registro e rastreamento. Para obter mais informações sobre essa biblioteca e seus utilitários, consulte [Powertools para AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Práticas recomendadas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Ajuste os valores de tempo de espera na máquina de estado do Step Functions para reduzir ao mínimo as solicitações de buscas para o status do trabalho. Use o tempo de execução esperado para o CodeBuild projeto.

1. Ajuste a `MaxConcurrency` propriedade do mapa em Step Functions para controlar quantos CodeBuild projetos podem ser executados paralelamente.

1. Caso necessário, revise o código de amostra para assegurar sua adequação ao ambiente de produção. Considere quais dados podem ser registrados pela solução e se a CloudWatch criptografia padrão da Amazon é suficiente.

## Épicos
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Crie a função de proxy Lambda e o perfil do IAM associada na conta de origem
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Registre a conta da AWS IDs. | A conta IDs da AWS é necessária para configurar o acesso entre contas.Registre a ID da conta da AWS para suas contas de origem e destino. Para obter mais informações, consulte [Como encontrar a ID da conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId) na documentação do IAM. | AWS DevOps | 
| Baixe os CloudFormation modelos da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Nos CloudFormation modelos da AWS, `<SourceAccountId>` é o ID da conta da AWS para a conta de origem e `<TargetAccountId>` é o ID da conta da AWS para a conta de destino. | AWS DevOps | 
| Crie e implante a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Você deve criar a CloudFormation pilha da AWS para a função proxy Lambda antes de criar qualquer recurso nas contas de destino. Quando você cria uma política de confiança em uma conta de destino, o perfil do IAM é traduzida do nome da função para um identificador interno. É por isso que o perfil do IAM já deve existir. | AWS DevOps | 
| Confirme a criação da função proxy e da máquina de estado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Crie uma função do IAM na conta de destino e lance um CodeBuild projeto de amostra
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e implante a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Verifique a criação do CodeBuild projeto de amostra.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Teste a função de proxy do Lambda entre contas do Lambda
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie a máquina de estado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Valide as variáveis de ambiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Solução de problemas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A execução do Step Functions está demorando mais do que o esperado. | Ajuste a `MaxConcurrency` propriedade do mapa na máquina de estado da Step Function para controlar quantos CodeBuild projetos podem ser executados paralelamente. | 
| A execução dos CodeBuild trabalhos está demorando mais do que o esperado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 