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.

Come mostrato nel diagramma, quando uno sviluppatore crea una pull request (PR) per la revisione, GitHub Actions attiva i seguenti passaggi:
Assunzione del ruolo IAM: la pipeline utilizza il ruolo IAM specificato in GitHub Secrets per eseguire le attività di distribuzione.
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.
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.
Approvazione PR
Un revisore deve approvare manualmente il PR.
Se il PR viene negato, la pipeline fallisce e interrompe le ulteriori fasi di implementazione.
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)
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
Aderisci alle migliori pratiche per lo sviluppo e l'implementazione dell'infrastruttura cloud con. AWS CDK
Segui le migliori pratiche di sicurezza in IAM 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 per ricevere credenziali temporanee e utilizza credenziali temporanee quando possibile.
Concedi il privilegio minimo 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à del ruolo IAM utilizzato nei flussi di lavoro di GitHub Actions.
Ruota periodicamente tutte le credenziali a lungo termine che utilizzi.
Epiche
Attività | Descrizione | 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:
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:
| AWS DevOps, DevOps ingegnere |
Installa il CDK Toolkit. | Per confermare che CDK Toolkit sia installato e per verificarne la versione, esegui il seguente comando:
Se la versione di CDK Toolkit è precedente alla 2.27.0, inserisci il seguente comando per aggiornarla alla versione 2.27.0:
Se CDK Toolkit non è installato, esegui il seguente comando per installarlo:
| AWS DevOps, DevOps ingegnere |
Installare le dipendenze richieste. | Per installare le dipendenze richieste dal progetto, esegui il seguente comando:
| AWS DevOps, DevOps ingegnere |
Avvia l'ambiente CDK. | Per avviare un ambiente AWS CDK, esegui i seguenti comandi:
Dopo aver avviato correttamente l'ambiente, dovrebbe essere visualizzato il seguente output:
| AWS DevOps, DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Sintetizza l'app. AWS CDK | Per sintetizzare un' AWS CDK app, esegui il seguente comando:
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:
NotaIl | AWS DevOps, DevOps ingegnere |
Attività | Descrizione | 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 Di seguito sono riportate ulteriori informazioni sulle variabili:
| 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:
| AWS DevOps, DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Eliminare le risorse. | Per pulire la tua app AWS CDK Python, esegui il seguente comando:
| DevOps ingegnere |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
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