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à.
Distribuisci il codice in più AWS regioni utilizzando AWS CodePipeline AWS CodeCommit, e AWS CodeBuild
Creato da Anand Krishna Varanasi () AWS
Creato da: AWS | Ambiente: PoC o pilota | Tecnologie: gestione e governance; DevOps |
AWSservizi: AWS CodeCommit AWS CodePipeline; AWS CodeBuild |
Riepilogo
Questo modello dimostra come creare un'infrastruttura o un'architettura in più regioni di Amazon Web Services (AWS) utilizzando AWS CloudFormation. Include integrazione continua (CI) /distribuzione continua (CD) in più AWS regioni per implementazioni più rapide. Le fasi di questo modello sono state testate per la creazione di un AWS CodePipeline lavoro da distribuire in tre AWS regioni, ad esempio. Puoi modificare il numero di regioni in base al tuo caso d'uso.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
Due ruoli AWS Identity and Access Management (IAM) per AWS CodeBuild e AWS CloudFormation con politiche appropriate per CodeBuild eseguire le attività CI di test, raggruppamento, imballaggio degli artefatti e distribuzione in più regioni AWS in parallelo. Nota: verifica le policy create da CodePipeline per verificarlo CodeBuild e AWS CloudFormation disponi delle autorizzazioni appropriate nelle fasi CI e CD.
Un CodeBuild ruolo con AmazonS3 e le politiche FullAccess. CloudWatchFullAccess Queste politiche consentono di CodeBuild guardare gli eventi AWS CodeCommit tramite Amazon CloudWatch e di utilizzare Amazon Simple Storage Service (Amazon S3) come archivio di manufatti.
Un AWS CloudFormation ruolo con le seguenti politiche, che offrono AWS CloudFormation, nella fase finale di build, la possibilità di creare o aggiornare funzioni AWS Lambda, inviare o guardare CloudWatch i log di Amazon e creare e aggiornare set di modifiche.
AWSLambdaFullAccess
AWSCodeDeployFullAccess
CloudWatchFullAccess
AWSCloudFormationFullAccess
AWSCodePipelineFullAccess
Architettura
L'architettura e il flusso di lavoro multiregione di questo pattern comprendono i seguenti passaggi.
Il codice viene inviato a un repository. CodeCommit
Dopo aver ricevuto un aggiornamento o un commit del codice, CodeCommit richiama un CloudWatch evento, che a sua volta avvia un processo. CodePipeline
CodePipeline coinvolge il CI gestito da. CodeBuild Vengono eseguite le seguenti attività.
Test dei AWS CloudFormation modelli (opzionale)
Imballaggio dei AWS CloudFormation modelli per ogni regione inclusa nella distribuzione. Ad esempio, questo modello viene distribuito in parallelo su tre AWS regioni, quindi raggruppa CodeBuild i AWS CloudFormation modelli in tre bucket S3, uno in ciascuna regione specificata. I bucket S3 vengono utilizzati solo come repository di artefatti CodeBuild .
CodeBuild impacchetta gli artefatti come input per la fase successiva di distribuzione, che viene eseguita in parallelo nelle tre regioni. AWS Se si specifica un numero diverso di regioni, CodePipeline verrà distribuito in tali regioni.
Strumenti
Strumenti
AWS CodePipeline— CodePipeline è un servizio di distribuzione continua che puoi utilizzare per modellare, visualizzare e automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
AWS CodeBuild— CodeBuild è un servizio di compilazione completamente gestito che compila il codice sorgente, esegue test unitari e produce artefatti pronti per l'implementazione.
AWS CodeCommit— CodeCommit è un servizio di controllo delle versioni ospitato da Amazon Web Services che puoi utilizzare per archiviare e gestire in modo privato risorse (come codice sorgente e file binari) nel cloud.
AWS CloudFormation— AWS CloudFormation è un servizio che ti aiuta a modellare e configurare le tue risorse Amazon Web Services in modo da dedicare meno tempo alla gestione di tali risorse e più tempo alle applicazioni in esecuzioneAWS.
AWSIdentity and Access Management: AWS Identity and Access Management (IAM) è un servizio web che consente di controllare in modo sicuro l'accesso alle AWS risorse.
Amazon S3 — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet. È concepito per rendere più accessibili agli sviluppatori risorse informatiche su grande scala per il Web.
Codice
Il seguente codice di esempio è per il BuildSpec.yaml
file (fase di compilazione).
--- artifacts: discard-paths: true files: - packaged-first-region.yaml - packaged-second-region.yaml - packaged-third-region.yaml phases: build: commands: - echo "********BUILD PHASE - CF PACKAGING**********" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION" - "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION" - "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION" install: commands: - echo "********BUILD PHASE - PYTHON SETUP**********" runtime-versions: python: 3.8 post_build: commands: - echo "********BUILD PHASE - PACKAGING COMPLETION**********" pre_build: commands: - echo "********BUILD PHASE - DEPENDENCY SETUP**********" - "npm install --silent --no-progress" - echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********" version: 0.2
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Seleziona la AWS regione principale per la distribuzione. | Accedi al tuo AWS account e scegli la regione principale per la distribuzione. Il CodeCommit repository si troverà nella regione principale. | DevOps |
Crea il CodeCommit repository. | Crea il CodeCommit repository e inserisci il codice richiesto. Il codice generalmente include i AWS SAM modelli AWS CloudFormation or, l'eventuale codice Lambda e i CodeBuild | DevOps |
Inserisci il codice nel CodeCommit repository. | Nella sezione Allegati, scarica il codice per questo esempio, quindi inserisci il codice richiesto. In genere, il codice può includere i AWS CloudFormation nostri AWS SAM modelli, il codice Lambda e i CodeBuild | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il CodePipeline lavoro. | Sulla CodePipeline console, scegli Crea pipeline. | DevOps |
Assegna un nome al CodePipeline lavoro e scegli l'impostazione del ruolo di servizio. | Inserisci un nome per il lavoro e mantieni l'impostazione predefinita del ruolo di servizio in modo da CodePipeline creare il ruolo con le politiche necessarie allegate. | DevOps |
Specificate la posizione del deposito degli artefatti. | In Impostazioni avanzate, mantieni l'opzione predefinita in modo da CodePipeline creare un bucket S3 da utilizzare per l'archiviazione degli artefatti del codice. Se invece utilizzi un bucket S3 esistente, il bucket deve trovarsi nella regione principale che hai specificato nella prima epic. | DevOps |
Specificate la chiave di crittografia. | Mantieni l'opzione predefinita, Default AWS Managed Key, o scegli di utilizzare la tua AWS chiave gestita dal cliente Key Management Service (AWSKMS). | DevOps |
Specificate il provider di origine. | In Provider di origine, scegli AWS CodeCommit. | DevOps |
Specificate il repository. | Scegli il CodeCommit repository che hai creato nella prima epopea. Se hai inserito il codice in un ramo, scegli il ramo. | DevOps |
Specificate come vengono rilevate le modifiche al codice. | Mantieni l'impostazione predefinita, Amazon CloudWatch Events, come trigger di modifica CodeCommit per avviare il CodePipeline processo. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Specificare il fornitore della build. | Per il fornitore della build, scegli AWS CodeBuild. | DevOps |
Specificate la AWS regione. | Scegli la regione principale, che hai specificato nella prima epopea. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Creazione del progetto | Scegli Crea progetto e inserisci un nome per il progetto. | DevOps |
Specificate l'immagine dell'ambiente. | Per questa dimostrazione del pattern, utilizzate l'immagine CodeBuild gestita predefinita. Hai anche la possibilità di utilizzare un'immagine Docker personalizzata, se ne hai una. | DevOps |
Specificate il sistema operativo. | Scegli Amazon Linux 2 o Ubuntu. Nota: Amazon Linux 2 sta per terminare il supporto. Per ulteriori informazioni, consulta Amazon Linux 2 FAQs | DevOps |
Specificare il ruolo del servizio. | Scegli il ruolo per cui hai creato CodeBuild prima di iniziare a creare il CodePipeline lavoro. (Vedi la sezione Prerequisiti). | DevOps |
Imposta opzioni aggiuntive. | Per Timeout e Queued timeout, mantieni i valori predefiniti. Per il certificato, mantieni l'impostazione predefinita a meno che tu non abbia un certificato personalizzato da utilizzare. | DevOps |
Crea le variabili di ambiente. | Per ogni AWS regione in cui desideri eseguire la distribuzione, crea variabili di ambiente fornendo il nome del bucket S3 e il nome della regione (ad esempio, us-east-1). | DevOps |
Fornisci il nome del file buildspec, se non è buildspec.yml. | Mantieni vuoto questo campo se il nome del file è quello predefinito,. | DevOps |
Specificare la registrazione. | Per visualizzare i log di Amazon CloudWatch Events, mantieni l'impostazione predefinita. Oppure puoi definire nomi di gruppi o logger specifici. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Salta la fase di implementazione e completa la creazione della pipeline. | Quando si configura la pipeline, CodePipeline consente di creare solo una fase nella fase di distribuzione. Per eseguire la distribuzione in più AWS regioni, salta questa fase. Dopo aver creato la pipeline, puoi aggiungere più fasi della fase di distribuzione. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi una fase alla fase di implementazione. | Modifica la pipeline e scegli Aggiungi fase nella fase di distribuzione. Questa prima fase è per la regione principale. | DevOps |
Fornisci un nome di azione per la fase. | Inserisci un nome univoco che rifletta la prima fase (principale) e la regione. <region>Ad esempio, inserisci primary_ _deploy. | DevOps |
Specificare il fornitore dell'azione. | Per Action provider (Provider operazione), selezionare AWS CloudFormation. | DevOps |
Configura la regione per la prima fase. | Scegli la prima regione (principale), la stessa regione in cui CodePipeline CodeBuild sono configurate. Questa è la regione principale in cui desideri distribuire lo stack. | DevOps |
Specificate l'artefatto di input. | Scegliete. BuildArtifact Questo è il risultato della fase di costruzione. | DevOps |
Specificate l'azione da intraprendere. | Per la modalità Azione, scegli Crea o aggiorna uno stack. | DevOps |
Inserisci un nome per lo CloudFormation stack. | DevOps | |
Specificate il modello per la prima regione. | Seleziona il nome del pacchetto specifico della regione che è stato impacchettato da CodeBuild e scaricato nel bucket S3 per la prima regione (primaria). | DevOps |
Specificate le funzionalità. | Le funzionalità sono necessarie se il modello di stack include IAM risorse o se si crea uno stack direttamente da un modello che contiene macro. Per questo modello, usa CAPABILITY _, _ _IAM, CAPABILITY _ NAMED _IAM. CAPABILITY AUTO EXPAND | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi la seconda fase alla fase di distribuzione. | Per aggiungere una fase per la seconda regione, modifica la pipeline e scegli Aggiungi fase nella fase di distribuzione. Importante: il processo di creazione della seconda regione è lo stesso della prima regione, ad eccezione dei seguenti valori. | DevOps |
Fornisci un nome di azione per la seconda fase. | Inserisci un nome univoco che rifletta la seconda fase e la seconda regione. | DevOps |
Configura la regione per la seconda fase. | Scegli la seconda regione in cui desideri distribuire lo stack. | DevOps |
Specificate il modello per la seconda regione. | Seleziona il nome del pacchetto specifico della regione che è stato impacchettato da CodeBuild e scaricato nel bucket S3 per la seconda regione. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Aggiungi la terza fase alla fase di distribuzione. | Per aggiungere una fase per la terza regione, modifica la pipeline e scegli Aggiungi fase nella fase di distribuzione. Importante: il processo di creazione della seconda regione è lo stesso delle due regioni precedenti, ad eccezione dei seguenti valori. | DevOps |
Fornisci un nome di azione per la terza fase. | Inserisci un nome univoco che rifletta la terza fase e la terza regione. | DevOps |
Configura la regione per la terza fase. | Scegli la terza regione in cui desideri distribuire lo stack. | DevOps |
Specificate il modello per la terza regione. | Seleziona il nome del pacchetto specifico della regione che è stato impacchettato da CodeBuild e scaricato nel bucket S3 per la terza regione. | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Eliminare le AWS risorse. | Per ripulire la distribuzione, elimina gli CloudFormation stack in ogni regione. Quindi elimina CodeCommit CodeBuild le CodePipeline risorse e dalla regione principale. | DevOps |