Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Automatizza le CodeGuru revisioni Amazon per le applicazioni AWS CDK Python utilizzando Actions GitHub - Prontuario AWS

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

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

Creato da Vanitha Dontireddy (AWS) e Sarat Chandra Pothula (AWS)

Riepilogo

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

Prerequisiti

  • Un attivo. Account AWS

  • AWS Command Line Interface (AWS CLI) versione 2.9.11 o successiva, installata e configurata.

  • 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 AWSPer creare il ruolo, usa il costrutto.AWS CDK

Limitazioni

  • Amazon CodeGuru Profiler supporta applicazioni 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 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). Questo modello utilizza invece 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. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.

Architettura

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.

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.

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

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

  4. Approvazione PR

    • Un revisore deve approvare manualmente il PR.

    • Se il PR viene negato, la pipeline fallisce e interrompe le ulteriori fasi di implementazione.

  5. 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)

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

Strumenti

Servizi AWS

  • AWS Cloud Development Kit (AWS CDK)è un framework di sviluppo software che ti aiuta a definire e fornire l'infrastruttura nel codice. Cloud AWS

  • CDK Toolkit è un kit di sviluppo cloud a riga di comando che ti aiuta a interagire con la tua AWS CDK app.

  • Amazon CodeGuru Profiler 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 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) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • AWS Lambda è 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) 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) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Altri strumenti

  • GitHub Actions è 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.

Best practice

Epiche

AttivitàDescrizioneCompetenze 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:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

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:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps ingegnere

Installa il CDK Toolkit.

Per confermare che CDK Toolkit sia installato e per verificarne la versione, esegui il seguente comando: 

cdk --version

Se la versione di CDK Toolkit è precedente alla 2.27.0, inserisci il seguente comando per aggiornarla alla versione 2.27.0:

npm install -g aws-cdk@2.27.0

Se CDK Toolkit non è installato, esegui il seguente comando per installarlo:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps ingegnere

Installare le dipendenze richieste.

Per installare le dipendenze richieste dal progetto, esegui il seguente comando:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps ingegnere

Avvia l'ambiente CDK.

Per avviare un ambiente AWS CDK, esegui i seguenti comandi:

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

Dopo aver avviato correttamente l'ambiente, dovrebbe essere visualizzato il seguente output:

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps ingegnere

Configurazione dell'ambiente

AttivitàDescrizioneCompetenze 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:

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

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:

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps ingegnere

Installa il CDK Toolkit.

Per confermare che CDK Toolkit sia installato e per verificarne la versione, esegui il seguente comando: 

cdk --version

Se la versione di CDK Toolkit è precedente alla 2.27.0, inserisci il seguente comando per aggiornarla alla versione 2.27.0:

npm install -g aws-cdk@2.27.0

Se CDK Toolkit non è installato, esegui il seguente comando per installarlo:

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps ingegnere

Installare le dipendenze richieste.

Per installare le dipendenze richieste dal progetto, esegui il seguente comando:

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps ingegnere

Avvia l'ambiente CDK.

Per avviare un ambiente AWS CDK, esegui i seguenti comandi:

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

Dopo aver avviato correttamente l'ambiente, dovrebbe essere visualizzato il seguente output:

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Sintetizza l'app. AWS CDK

Per sintetizzare un' AWS CDK app, esegui il seguente comando:

cdk synth

Per ulteriori informazioni su questo comando, vedete cdk synthesize nella documentazione. AWS CDK

AWS DevOps, DevOps ingegnere

Distribuisci le risorse.

Per distribuire le risorse, esegui il comando seguente:

cdk deploy --require-approval never
Nota

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 pipeline CI/CD siano ben testati e sicuri prima di utilizzare il flag negli ambienti di produzione. --require-approval never

AWS DevOps, DevOps ingegnere

Implementa l'app CDK

AttivitàDescrizioneCompetenze richieste

Sintetizza l'app. AWS CDK

Per sintetizzare un' AWS CDK app, esegui il seguente comando:

cdk synth

Per ulteriori informazioni su questo comando, vedete cdk synthesize nella documentazione. AWS CDK

AWS DevOps, DevOps ingegnere

Distribuisci le risorse.

Per distribuire le risorse, esegui il comando seguente:

cdk deploy --require-approval never
Nota

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 pipeline CI/CD siano ben testati e sicuri prima di utilizzare il flag negli ambienti di produzione. --require-approval never

AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze 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 forROLE_TO_ASSUME, and CodeGuruReviewArtifactBucketNameAWS_ACCOUNT_ID, segui le istruzioni in Creazione di segreti per un repository nella documentazione di Actions. GitHub

Di seguito sono riportate ulteriori informazioni sulle variabili:

  • AWS_ACCOUNT_ID— L' Account AWS ID in cui viene eseguita la pipeline.

  • CodeGuruReviewArtifactBucketName— Il nome del bucket S3 in cui sono archiviati gli artefatti di CodeGuru Reviewer. Questo modello utilizza il nome del bucket. codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>

  • AWS_REGION— Il Regione AWS luogo in cui si trovano le risorse.

  • ROLE_TO_ASSUME— Il nome del ruolo IAM assunto dalla pipeline. Questo modello utilizza il nome del ruolo. githubActionsDeployRole

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:

  1. Per creare un token di accesso GitHub personale con accesso in lettura e scrittura al tuo repository, segui le istruzioni in Gestione dei token di accesso personali nella documentazione. GitHub

  2. Per salvare questo token come repository secret per GitHub Actions, segui le istruzioni in Creazione di segreti per un repository nella documentazione Actions. GitHub

AWS DevOps, DevOps ingegnere

Crea GitHub segreti e token di accesso personale

AttivitàDescrizioneCompetenze 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 forROLE_TO_ASSUME, and CodeGuruReviewArtifactBucketNameAWS_ACCOUNT_ID, segui le istruzioni in Creazione di segreti per un repository nella documentazione di Actions. GitHub

Di seguito sono riportate ulteriori informazioni sulle variabili:

  • AWS_ACCOUNT_ID— L' Account AWS ID in cui viene eseguita la pipeline.

  • CodeGuruReviewArtifactBucketName— Il nome del bucket S3 in cui sono archiviati gli artefatti di CodeGuru Reviewer. Questo modello utilizza il nome del bucket. codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>

  • AWS_REGION— Il Regione AWS luogo in cui si trovano le risorse.

  • ROLE_TO_ASSUME— Il nome del ruolo IAM assunto dalla pipeline. Questo modello utilizza il nome del ruolo. githubActionsDeployRole

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:

  1. Per creare un token di accesso GitHub personale con accesso in lettura e scrittura al tuo repository, segui le istruzioni in Gestione dei token di accesso personali nella documentazione. GitHub

  2. Per salvare questo token come repository secret per GitHub Actions, segui le istruzioni in Creazione di segreti per un repository nella documentazione Actions. GitHub

AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Eliminare le risorse.

Per pulire la tua app AWS CDK Python, esegui il seguente comando:

cdk destroy --all
DevOps ingegnere

Eliminazione

AttivitàDescrizioneCompetenze richieste

Eliminare le risorse.

Per pulire la tua app AWS CDK Python, esegui il seguente comando:

cdk destroy --all
DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

Visualizza il link ai risultati della dashboard.

Non è possibile stampare i risultati durante la pipeline CI/CD. Invece, questo modello utilizza GitHub Actions come metodo alternativo per gestire e visualizzare i risultati.

Risorse correlate

AWS resources

GitHub documentazione

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.