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à.
Crea automaticamente pipeline CI dinamiche per progetti Java e Python
Creato da Aromal Raj Jayarajan (AWS), Amarnath Reddy (AWS), MAHESH RAGHUNANDANAN (AWS) e Vijesh Vijayakumaran Nair (AWS)
Riepilogo
AWS CodeCommit Avviso: non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Questo modello mostra come creare automaticamente pipeline dinamiche di integrazione continua (CI) per progetti Java e Python utilizzando gli strumenti di sviluppo AWS.
Con la diversificazione degli stack tecnologici e l'aumento delle attività di sviluppo, può diventare difficile creare e mantenere pipeline CI coerenti all'interno di un'organizzazione. Automatizzando il processo in AWS Step Functions, puoi assicurarti che le tue pipeline CI siano coerenti nel loro utilizzo e approccio.
Per automatizzare la creazione di pipeline CI dinamiche, questo modello utilizza i seguenti input variabili:
Linguaggio di programmazione (solo Java o Python)
Nome della pipeline
Fasi della pipeline richieste
Nota
Step Functions orchestra la creazione di pipeline utilizzando più servizi AWS. Per ulteriori informazioni sui servizi AWS utilizzati in questa soluzione, consulta la sezione Strumenti di questo modello.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Un bucket Amazon S3 nella stessa regione AWS in cui viene distribuita questa soluzione
Un principal AWS Identity and Access Management (IAM) con CloudFormation le autorizzazioni AWS necessarie per creare le risorse necessarie per questa soluzione
Limitazioni
Questo modello supporta solo progetti Java e Python.
I ruoli IAM forniti in questo modello seguono il principio del privilegio minimo. Le autorizzazioni dei ruoli IAM devono essere aggiornate in base alle risorse specifiche che la pipeline CI deve creare.
Architettura
Stack tecnologico Target
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon S3)
AWS Systems Manager
AWS Step Functions
AWS Lambda
Amazon DynamoDB
Architettura Target
Il diagramma seguente mostra un esempio di flusso di lavoro per la creazione automatica di pipeline CI dinamiche per progetti Java e Python utilizzando gli strumenti di sviluppo AWS.

Il diagramma mostra il flusso di lavoro seguente:
Un utente AWS fornisce i parametri di input per la creazione di pipeline CI in formato JSON. Questo input avvia un flusso di lavoro Step Functions (macchina a stati) che crea una pipeline CI utilizzando gli strumenti di sviluppo AWS.
Una funzione Lambda legge una cartella denominata input-reference, archiviata in un bucket Amazon S3, e quindi genera un file buildspec.yml. Questo file generato definisce le fasi della pipeline CI e viene archiviato nello stesso bucket Amazon S3 che memorizza i riferimenti ai parametri.
Step Functions controlla le dipendenze del flusso di lavoro di creazione della pipeline CI per eventuali modifiche e aggiorna lo stack di dipendenze secondo necessità.
Step Functions crea le risorse della pipeline CI in uno CloudFormation stack, tra cui un CodeCommit repository, un CodeBuild progetto e una pipeline. CodePipeline
Lo CloudFormation stack copia il codice sorgente di esempio per lo stack tecnologico selezionato (Java o Python) e il file buildspec.yml nel repository. CodeCommit
I dettagli del runtime della pipeline CI sono archiviati in una tabella DynamoDB.
Automazione e scalabilità
Questo modello è destinato all'uso in un solo ambiente di sviluppo. Le modifiche alla configurazione sono necessarie per l'utilizzo in più ambienti di sviluppo.
Per aggiungere il supporto per più di uno CloudFormation stack, puoi creare CloudFormation modelli aggiuntivi. Per ulteriori informazioni, consulta Getting started with AWS CloudFormation nella CloudFormation documentazione.
Strumenti
Strumenti
AWS Step Functions è 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 Lambda è 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 CodeBuild è un servizio di build completamente gestito che ti aiuta a compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per la distribuzione.
AWS CodeCommit è un servizio di controllo delle versioni che consente di archiviare e gestire archivi Git in modo privato, senza dover gestire il proprio sistema di controllo del codice sorgente.
AWS ti CodePipeline aiuta a modellare e configurare rapidamente le diverse fasi di un rilascio di software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
AWS Key Management Service (AWS KMS) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
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.
AWS 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.
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
AWS Systems Manager Parameter Store fornisce uno storage sicuro e gerarchico per la gestione dei dati di configurazione e la gestione dei segreti.
Codice
Il codice per questo pattern è disponibile nel repository. GitHub automated-ci-pipeline-creation
Best practice
Non inserire credenziali (segrete) come token o password direttamente nei CloudFormation modelli o nelle configurazioni di azione Step Functions. In tal caso, le informazioni verranno visualizzate nei log di DynamoDB. Utilizza invece AWS Secrets Manager per configurare e archiviare segreti. Quindi, fai riferimento ai segreti archiviati in Secrets Manager all'interno dei CloudFormation modelli e delle configurazioni di azione di Step Functions, se necessario. Per ulteriori informazioni, consulta What is AWS Secrets Manager nella documentazione di Secrets Manager.
Configura la crittografia lato server per gli CodePipeline artefatti archiviati in Amazon S3. Per ulteriori informazioni, consulta Configurare la crittografia lato server per gli artefatti archiviati in Amazon S3 nella documentazione. CodePipeline CodePipeline
Applica le autorizzazioni con privilegi minimi durante la configurazione dei ruoli IAM. Per ulteriori informazioni, consulta Applicazione delle autorizzazioni del privilegio minimo nella documentazione di IAM.
Assicurati che il tuo bucket Amazon S3 non sia accessibile al pubblico. Per ulteriori informazioni, consulta Configurazione dell'impostazione di accesso pubblico a blocchi per i bucket S3 nella documentazione di Amazon S3.
Assicurati di attivare il controllo delle versioni per il tuo bucket Amazon S3. Per ulteriori informazioni, consulta Usare il controllo delle versioni nei bucket S3 nella documentazione di Amazon S3.
Usa IAM Access Analyzer per configurare le policy IAM. Lo strumento fornisce consigli pratici per aiutarti a creare policy IAM sicure e funzionali. Per ulteriori informazioni, consulta Using AWS Identity and Access Management Access Analyzer nella documentazione IAM.
Quando possibile, definisci condizioni di accesso specifiche durante la configurazione delle policy IAM.
Attiva la CloudWatch registrazione di Amazon per scopi di monitoraggio e controllo. Per ulteriori informazioni, consulta What is Amazon CloudWatch Logs? nella CloudWatch documentazione.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Creare un bucket Amazon S3. | Crea un bucket Amazon S3 (o usa un bucket esistente) per archiviare i CloudFormation modelli, il codice sorgente e i file di input richiesti per la soluzione. Per ulteriori informazioni, consulta Fase 1: Crea il tuo primo bucket S3 nella documentazione di Amazon S3. NotaIl bucket Amazon S3 deve trovarsi nella stessa regione AWS in cui stai distribuendo la soluzione. | AWS DevOps |
Clona il GitHub repository. | Clona il GitHub automated-ci-pipeline-creation
Per ulteriori informazioni, consulta Clonazione di un repository nella documentazione. | AWS DevOps |
Carica la cartella Solution Templates dal GitHub repository clonato nel tuo bucket Amazon S3. | Copia i contenuti dalla cartella Solution-Templates clonata e caricali nel bucket Amazon S3 che hai creato. Per ulteriori informazioni, consulta Caricamento di oggetti nella documentazione di Amazon S3. NotaAssicurati di caricare solo il contenuto della cartella Solution-Templates. Puoi caricare i file solo a livello root del bucket Amazon S3. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea uno CloudFormation stack per distribuire la soluzione utilizzando il file template.yml nel repository clonato. GitHub |
NotaDurante la creazione, lo stack viene elencato nella pagina Stacks con lo stato CREATE_IN_PROGRESS. Assicurati di attendere che lo stato dello stack passi a CREATE_COMPLETE prima di completare i passaggi rimanenti di questo schema. | Amministratore AWS, AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui la funzione step che hai creato. |
Formattazione JSON
Esempio di input Java JSON
Esempio di input JSON in Python
| Amministratore AWS, AWS DevOps |
Conferma che il CodeCommit repository per la pipeline CI è stato creato. |
| AWS DevOps |
Controlla le risorse CodeBuild del progetto. |
| AWS DevOps |
Convalida le CodePipeline fasi. |
| AWS DevOps |
Verifica che la pipeline CI sia stata eseguita correttamente. |
| AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Elimina la pila di risorse inclusa. CloudFormation | Elimina lo stack di risorse della pipeline CI in. CloudFormation Per ulteriori informazioni, consulta Eliminazione di uno stack sulla CloudFormation console AWS nella CloudFormation documentazione. NotaAssicurati di eliminare lo stack denominato -stack. <project_name> | AWS DevOps |
Elimina le dipendenze della pipeline CI in Amazon S3 e. CloudFormation |
NotaAssicurati di eliminare lo stack denominato. pipeline-creation-dependencies-stack | AWS DevOps |
Elimina il bucket di modelli Amazon S3. | Elimina il bucket Amazon s3 che hai creato nella sezione Configura i prerequisiti di questo modello, che memorizza i modelli per questa soluzione. Per ulteriori informazioni, consulta Eliminazione di un bucket nella documentazione di Amazon S3. | AWS DevOps |
Risorse correlate
Creazione di una macchina a stati Step Functions che utilizza Lambda (documentazione AWS Step Functions)
AWS Step Functions WorkFlow Studio (documentazione di AWS Step Functions)
Come CloudFormation funziona AWS? ( CloudFormation documentazione AWS)
Quote, requisiti di nome e limiti di caratteri IAM e AWS STS (documentazione IAM)