

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

# Automatizza le CodeGuru revisioni Amazon per le applicazioni AWS CDK Python utilizzando Actions GitHub
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications"></a>

*Vanitha Dontireddy e Sarat Chandra Pothula, Amazon Web Services*

## Riepilogo
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-summary"></a>

Nota: a partire dal 7 novembre 2025, non puoi creare nuove associazioni di repository in Amazon CodeGuru Reviewer. Per informazioni sui servizi con funzionalità simili a CodeGuru Reviewer, consulta [la modifica della disponibilità di Amazon CodeGuru Reviewer nella documentazione](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) di CodeGuru Reviewer.

Questo modello mostra l'integrazione delle revisioni CodeGuru automatiche del codice di Amazon per le applicazioni AWS Cloud Development Kit (AWS CDK) Python, GitHub orchestrate tramite Actions. La soluzione implementa un'architettura serverless definita in Python AWS CDK . Automatizzando l'analisi del codice da parte di esperti all'interno della pipeline di sviluppo, questo approccio può fare quanto segue per i progetti Python AWS CDK :
+ Migliora la qualità del codice.
+ Semplifica i flussi di lavoro.
+ Massimizza i vantaggi dell'elaborazione senza server.

## Prerequisiti e limitazioni
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-prereqs"></a>

**Prerequisiti**
+ Un attivo. Account AWS
+ AWS Command Line Interface [(AWS CLI) versione 2.9.11 o successiva, [installata](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e configurata.](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Un GitHub account attivo e un GitHub repository con autorizzazioni di lettura e scrittura per il flusso di lavoro e creazione di richieste pull (PR) da parte di GitHub Actions per garantire il corretto funzionamento del flusso di lavoro PR.
+ Un ruolo OpenID Connect (OIDC) in GitHub Actions per implementare la soluzione in. Account AWS[Per creare il ruolo, usa il costrutto.AWS CDK](https://github.com/aws-samples/github-actions-oidc-cdk-construct)

**Limitazioni**
+ Amazon CodeGuru Profiler [supporta applicazioni](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html#what-is-language-support) scritte in tutti i linguaggi Java Virtual Machine (JVM) (come Scala e Kotlin) e runtime e Python 3.6 o versioni successive.
+ Amazon CodeGuru Reviewer [supporta le associazioni](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-repositories.html) con gli archivi di codice Java e Python solo dai seguenti provider di sorgenti AWS CodeCommit: Bitbucket GitHub GitHub , Enterprise Cloud ed Enterprise Server. GitHub Inoltre, i repository Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) sono supportati solo tramite Actions. GitHub 
+ Non esiste un modo automatico per stampare i risultati durante la pipeline di integrazione e distribuzione continua (CI/CD). Invece, questo modello utilizza GitHub Actions come metodo alternativo per gestire e visualizzare i risultati.
+ Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità regionale, consulta [i servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Endpoints and quotas del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-architecture"></a>

Il diagramma seguente mostra l'architettura di questa soluzione.

![Flusso di lavoro per integrare la revisione CodeGuru del codice per le applicazioni GitHub AWS CDK Python utilizzando Actions.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/c5395e3e-ff2a-41cf-bd64-c73cc928b60b/images/18f880a2-9bc3-4d71-a598-bb83b68ee383.png)


Come mostrato nel diagramma, quando uno sviluppatore crea una pull request (PR) per la revisione, GitHub Actions attiva i seguenti passaggi:

1. Assunzione del ruolo IAM: la pipeline utilizza il ruolo IAM specificato in GitHub Secrets per eseguire le attività di distribuzione.

1. Analisi del codice
   + CodeGuru Reviewer analizza il codice memorizzato nel bucket Amazon S3. Identifica i difetti e fornisce consigli per correzioni e ottimizzazioni.
   + CodeGuru Scansioni di sicurezza alla ricerca di violazioni e vulnerabilità delle policy.

1. Revisione dei risultati
   + La pipeline stampa un collegamento alla dashboard dei risultati nell'output della console.
   + Se vengono rilevati risultati critici, la pipeline fallisce immediatamente.
   + Per risultati di elevata, normale o bassa gravità, la pipeline continua con la fase successiva.

1. Approvazione PR
   + Un revisore deve approvare manualmente il PR.
   + Se il PR viene negato, la pipeline fallisce e interrompe le ulteriori fasi di implementazione.

1. Implementazione CDK: dopo l'approvazione delle pubbliche relazioni, inizia il processo di implementazione del CDK. Imposta quanto segue Servizi AWS e le risorse:
   + CodeGuru Profiler
   + AWS Lambda funzione
   + Coda Amazon Simple Queue Service (Amazon SQS)

1. Generazione di dati di profilazione — Per generare dati di profilazione sufficienti per CodeGuru Profiler:
   + La pipeline richiama la funzione Lambda più volte inviando periodicamente messaggi alla coda di Amazon SQS.

## Tools (Strumenti)
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-tools"></a>

**Servizi AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)è un framework di sviluppo software che ti aiuta a definire e fornire l'infrastruttura nel codice. Cloud AWS 
+ [CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) è un kit di sviluppo cloud a riga di comando che ti aiuta a interagire con la tua AWS CDK app.
+ [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) raccoglie dati sulle prestazioni di runtime dalle tue applicazioni live e fornisce consigli che possono aiutarti a ottimizzare le prestazioni delle tue applicazioni.
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) utilizza l'analisi dei programmi e l'apprendimento automatico per rilevare potenziali difetti difficili da individuare per gli sviluppatori. Quindi, CodeGuru Profiler offre suggerimenti per migliorare il codice Java e Python.
+ Amazon CodeGuru Security è uno strumento statico per la sicurezza delle applicazioni che utilizza l'apprendimento automatico per rilevare violazioni e vulnerabilità delle policy di sicurezza. Fornisce suggerimenti per affrontare i rischi per la sicurezza e genera parametri che ti consentono di monitorare il livello di sicurezza delle tue applicazioni.
+ [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 AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Altri strumenti**
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) è una piattaforma di integrazione e distribuzione continua (CI/CD) strettamente integrata con i repository. GitHub Puoi utilizzare GitHub Actions per automatizzare la pipeline di compilazione, test e distribuzione.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [amazon-codeguru-suite-cdk-python](https://github.com/aws-samples/amazon-codeguru-suite-cdk-python).

## Best practice
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-best-practices"></a>
+ Aderisci alle [migliori pratiche per lo sviluppo e l'implementazione](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) dell'infrastruttura cloud con. AWS CDK
+ Segui le [migliori pratiche di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) quando utilizzi i flussi di lavoro Servizi AWS in GitHub Actions, tra cui:
  + Non memorizzate le credenziali nel codice del repository.
  + [Assumi un ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) per ricevere credenziali temporanee e utilizza credenziali temporanee quando possibile.
  + [Concedi il privilegio minimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) al ruolo IAM utilizzato nei GitHub flussi di lavoro di Actions. Concedi solo le autorizzazioni necessarie per eseguire le azioni nei flussi di lavoro Actions. GitHub 
  + [Monitora l'attività](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) del ruolo IAM utilizzato nei flussi di lavoro di GitHub Actions.
  + Ruota periodicamente tutte le credenziali a lungo termine che utilizzi.

## Epiche
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-epics"></a>

### Configurare l'ambiente
<a name="set-up-your-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura AWS le credenziali. | Per esportare le variabili che definiscono lo stack Account AWS e il Regione AWS luogo in cui stai distribuendo, esegui i seguenti comandi:<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre><br />Le AWS credenziali per AWS CDK vengono fornite tramite variabili di ambiente. | AWS DevOps, DevOps ingegnere | 
| Clonare il repository. | Per clonare il repository sul computer locale, esegui il seguente comando:<pre>git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git</pre> | AWS DevOps, DevOps ingegnere | 
| Installa il CDK Toolkit. | Per confermare che CDK Toolkit sia installato e per verificarne la versione, esegui il seguente comando: <pre>cdk --version</pre><br />Se la versione di CDK Toolkit è precedente alla 2.27.0, inserisci il seguente comando per aggiornarla alla versione 2.27.0:<pre>npm install -g aws-cdk@2.27.0</pre><br />Se CDK Toolkit *non* è installato, esegui il seguente comando per installarlo:<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps ingegnere | 
| Installare le dipendenze richieste. | Per installare le dipendenze richieste dal progetto, esegui il seguente comando:<pre>python -m pip install --upgrade pip<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps ingegnere | 
| Avvia l'ambiente CDK. | Per [avviare un ambiente](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) AWS CDK, esegui i seguenti comandi:<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre><br />Dopo aver avviato correttamente l'ambiente, dovrebbe essere visualizzato il seguente output:<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre> | AWS DevOps, DevOps ingegnere | 

### Implementa l'app CDK
<a name="deploy-the-cdk-app"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Sintetizza l'app. AWS CDK  | Per sintetizzare un' AWS CDK app, esegui il seguente comando:<pre>cdk synth</pre><br />Per ulteriori informazioni su questo comando, vedete [cdk synthesize](https://docs.aws.amazon.com/cdk/v2/guide/ref-cli-cmd-synth.html) nella documentazione. AWS CDK  | AWS DevOps, DevOps ingegnere | 
| Distribuisci le risorse. | Per distribuire le risorse, esegui il comando seguente:<pre>cdk deploy --require-approval never</pre>Il `--require-approval never` flag indica che il CDK approverà ed eseguirà automaticamente tutte le modifiche. Ciò include le modifiche che il CDK normalmente contrassegnerebbe come richiedenti una revisione manuale (come le modifiche alle politiche IAM o la rimozione di risorse). Assicurati che il codice CDK e la CI/CD pipeline siano ben testati e sicuri prima di utilizzare il `--require-approval never` flag negli ambienti di produzione. | AWS DevOps, DevOps ingegnere | 

### Crea GitHub segreti e token di accesso personale
<a name="create-github-secrets-and-personal-access-token"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea i segreti richiesti in GitHub. | Per consentire ai flussi di lavoro di GitHub Actions di accedere alle AWS risorse in modo sicuro senza esporre informazioni sensibili nel codice del repository, crea dei segreti. Per creare i segreti in GitHub for`ROLE_TO_ASSUME`, and `CodeGuruReviewArtifactBucketName``AWS_ACCOUNT_ID`, segui le istruzioni in [Creazione di segreti per un repository](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) nella documentazione di Actions. GitHub <br />Di seguito sono riportate ulteriori informazioni sulle variabili:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps ingegnere | 
| Crea un token di accesso GitHub personale. | Per configurare un modo sicuro con cui autenticarsi e interagire con i flussi di lavoro GitHub Actions GitHub, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps ingegnere | 

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


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare le risorse. | Per pulire la tua app AWS CDK Python, esegui il seguente comando:<pre>cdk destroy --all</pre> | DevOps ingegnere | 

## Risoluzione dei problemi
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Visualizza il link ai risultati della dashboard. | Non è possibile stampare i risultati durante la CI/CD pipeline. Invece, questo modello utilizza GitHub Actions come metodo alternativo per gestire e visualizzare i risultati. | 

## Risorse correlate
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-resources"></a>

**AWS resources**
+ [AWS Cloud Development Kit](https://aws.amazon.com/cdk/)
+ [ CodeGuru Documentazione Amazon](https://docs.aws.amazon.com/codeguru/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/)
+ [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)
+ [Che cos'è AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

**GitHub documentazione**
+ [Configurazione di OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [GitHub Azioni](https://github.com/features/actions)
+ [Riutilizzo dei flussi di lavoro](https://docs.github.com/en/actions/using-workflows/reusing-workflows)
+ [Attivazione di un flusso di lavoro](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) 