Distribuisci il codice in più AWS regioni utilizzando AWS CodePipeline AWS CodeCommit, e AWS CodeBuild - 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à.

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

Un AWS CodePipeline job che viene distribuito in tre regioni. AWS

L'architettura e il flusso di lavoro multiregione di questo pattern comprendono i seguenti passaggi.

  1. Il codice viene inviato a un repository. CodeCommit

  2. Dopo aver ricevuto un aggiornamento o un commit del codice, CodeCommit richiama un CloudWatch evento, che a sua volta avvia un processo. CodePipeline

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

  4. 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àDescrizioneCompetenze 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 buildspec.yaml file come input per. AWS CodePipeline

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 buildspec.yaml file come input per la pipeline.

DevOps
AttivitàDescrizioneCompetenze 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àDescrizioneCompetenze 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àDescrizioneCompetenze 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,. buildspec.yaml Se hai rinominato il file buildspec, inserisci il nome qui. Assicurati che corrisponda al nome del file che si trova nel repository. CodeCommit

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

Risorse correlate

Allegati

Per accedere al contenuto aggiuntivo associato a questo documento, decomprimi il seguente file: attachment.zip