

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Avvia un CodeBuild progetto su più account AWS utilizzando Step Functions e una funzione 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*

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

Questo modello dimostra come avviare in modo asincrono un progetto AWS CodeBuild su più account AWS utilizzando AWS Step Functions e una funzione proxy AWS Lambda. Puoi utilizzare la macchina a stati Step Functions di esempio del pattern per testare il successo del tuo CodeBuild progetto.

CodeBuild ti aiuta ad avviare attività operative utilizzando l'AWS Command Line Interface (AWS Command Line Interface) da un ambiente di runtime completamente gestito. Puoi modificare il comportamento del CodeBuild progetto in fase di esecuzione sovrascrivendo le variabili di ambiente. Inoltre, puoi utilizzarlo CodeBuild per gestire i flussi di lavoro. Per ulteriori informazioni, consulta [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) sul sito Web di AWS Workshop e [Schedule jobs in Amazon RDS for PostgreSQL CodeBuild using AWS EventBridge and Amazon sul blog di AWS Database](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/).

## Prerequisiti e limitazioni
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Prerequisiti**
+ Due account AWS attivi: un account di origine per richiamare una funzione proxy Lambda con Step Functions e un account di destinazione per la creazione di un progetto di esempio remoto CodeBuild 

**Limitazioni**
+ Questo modello non può essere utilizzato per copiare [artefatti](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) tra account.

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

Il diagramma seguente mostra l'architettura creata da questo modello.

![\[Diagramma dell'architettura del lancio di un CodeBuild progetto su più account AWS\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


Il diagramma mostra il flusso di lavoro seguente:

1. La macchina a stati Step Functions analizza la mappa di input fornita e richiama la funzione proxy Lambda (`codebuild-proxy-lambda`) per ogni account, regione e progetto definito.

1. La funzione proxy Lambda utilizza AWS Security Token Service (AWS STS) per assumere un ruolo proxy IAM (`codebuild-proxy-role`), associato a una policy IAM (`codebuild-proxy-policy`) nell'account di destinazione.

1. Utilizzando il ruolo assunto, la funzione Lambda avvia il CodeBuild progetto e restituisce l'ID del CodeBuild lavoro. La macchina a stati Step Functions esegue un loop ed esegue il polling del CodeBuild lavoro fino a quando non riceve uno stato di successo o di fallimento.

La logica della macchina a stati è mostrata nell'immagine seguente.

![\[Workflow della macchina a stati Step Functions\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Stack tecnologico**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Tools (Strumenti)
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.
+ [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) fornisce un editor JSON e YAML integrato che ti aiuta a visualizzare e modificare i modelli. CloudFormation 
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) è un servizio di build completamente gestito che ti aiuta a compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) è un servizio di orchestrazione serverless che ti aiuta a combinare le funzioni di AWS Lambda e altri servizi AWS per creare applicazioni aziendali critiche.
+ [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) ti aiuta a raccogliere dati sulle richieste servite dalla tua applicazione e fornisce strumenti che puoi utilizzare per visualizzare, filtrare e ottenere informazioni su tali dati per identificare problemi e opportunità di ottimizzazione.

**Codice**

Il codice di esempio per questo modello è disponibile nel repository GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy). Questo modello utilizza la libreria AWS Lambda Powertools for Python per fornire funzionalità di registrazione e tracciamento. Per ulteriori informazioni su questa libreria e le sue utilità, consulta [Powertools for AWS Lambda (](https://docs.powertools.aws.dev/lambda/python/latest/)Python).

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

1. Modifica i valori del tempo di attesa nella macchina a stati Step Function per ridurre al minimo le richieste di polling sullo stato del lavoro. Utilizza il tempo di esecuzione previsto per il CodeBuild progetto.

1. Modifica la `MaxConcurrency` proprietà della mappa in Step Functions per controllare quanti CodeBuild progetti possono essere eseguiti in parallelo.

1. Se necessario, esaminate il codice di esempio per verificarne la disponibilità alla produzione. Valuta quali dati potrebbero essere registrati dalla soluzione e se la CloudWatch crittografia Amazon predefinita è sufficiente.

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

### Crea la funzione proxy Lambda e il ruolo IAM associato nell'account di origine
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Registra l'account AWS IDs. |  IDs Gli account AWS sono necessari per configurare l'accesso tra account.Registra l'ID dell'account AWS per i tuoi account di origine e di destinazione. Per ulteriori informazioni, consulta [Finding your AWS account ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId) nella documentazione IAM. | AWS DevOps | 
| Scarica i CloudFormation modelli AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Nei CloudFormation modelli AWS, `<SourceAccountId>` è l'ID dell'account AWS per l'account di origine e `<TargetAccountId>` l'ID dell'account AWS per l'account di destinazione. | AWS DevOps | 
| Crea e distribuisci lo CloudFormation stack AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)È necessario creare lo CloudFormation stack AWS per la funzione proxy Lambda prima di creare risorse negli account di destinazione. Quando crei una policy di fiducia in un account di destinazione, il ruolo IAM viene tradotto dal nome del ruolo a un identificatore interno. Questo è il motivo per cui il ruolo IAM deve già esistere. | AWS DevOps | 
| Conferma la creazione della funzione proxy e della macchina a stati. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Crea un ruolo IAM nell'account di destinazione e avvia un CodeBuild progetto di esempio
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea e distribuisci lo CloudFormation stack AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Verifica la creazione del CodeBuild progetto di esempio.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Prova la funzione proxy Lambda per più account
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Avvia la macchina statale. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Convalida le variabili di ambiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## risoluzione dei problemi
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| L'esecuzione di Step Functions sta impiegando più tempo del previsto. | Regola la `MaxConcurrency` proprietà della mappa nella macchina a stati Step Function per controllare quanti CodeBuild progetti possono essere eseguiti in parallelo. | 
| L'esecuzione dei CodeBuild lavori richiede più tempo del previsto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 