Riferimento alle azioni di distribuzione di Amazon Elastic Container Service e CodeDeploy blue-green - AWS CodePipeline

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

Riferimento alle azioni di distribuzione di Amazon Elastic Container Service e CodeDeploy blue-green

Puoi configurare una pipeline in AWS CodePipeline cui distribuire applicazioni container utilizzando una distribuzione blu/verde. In una distribuzione blu/verde, puoi lanciare una nuova versione dell'applicazione insieme a quella precedente e testare la nuova versione prima di reindirizzare il traffico verso di essa. Puoi anche monitorare il processo di distribuzione ed eseguire rapidamente il rollback in caso di problemi.

La pipeline completata rileva le modifiche alle immagini o al file di definizione delle attività e le utilizza CodeDeploy per indirizzare e distribuire il traffico verso un ECS cluster Amazon e un sistema di bilanciamento del carico. CodeDeploy crea un nuovo listener sul tuo sistema di bilanciamento del carico che può indirizzare la nuova attività tramite una porta speciale. Puoi anche configurare la pipeline per utilizzare una posizione di origine, ad esempio un CodeCommit repository, in cui è archiviata la definizione delle ECS attività Amazon.

Prima di creare la pipeline, devi aver già creato ECS le risorse Amazon, le risorse, il CodeDeploy sistema di bilanciamento del carico e il gruppo target. Devi aver già taggato e archiviato l'immagine nel tuo archivio di immagini e aver caricato la definizione dell'attività e il file nel tuo archivio di AppSpec file.

Nota

Questo argomento descrive l'azione di distribuzione ECS di Amazon to CodeDeploy blue/green per. CodePipeline Per informazioni di riferimento sulle azioni di distribuzione ECS standard di Amazon in CodePipeline, consultaRiferimento all'azione di distribuzione di Amazon Elastic Container Service.

Tipo di operazione

  • Categoria: Deploy

  • Proprietario: AWS

  • Provider: CodeDeployToECS

  • Versione: 1

Parametri di configurazione

ApplicationName

Campo obbligatorio: sì

Il nome dell'applicazione in CodeDeploy. Prima di creare la pipeline, è necessario aver già creato l'applicazione in CodeDeploy.

DeploymentGroupName

Campo obbligatorio: sì

Il gruppo di distribuzione specificato per i set di ECS attività Amazon che hai creato per la tua CodeDeploy applicazione. Prima di creare la pipeline, devi aver già creato il gruppo di distribuzione in CodeDeploy.

TaskDefinitionTemplateArtifact

Campo obbligatorio: sì

Il nome dell'elemento di input che fornisce il file di definizione dell'attività all'azione di distribuzione. Questo è in genere il nome dell'artefatto di output dell'azione di origine. Quando si utilizza la console, il nome predefinito per l'elemento di output dell'azione di origine è. SourceArtifact

AppSpecTemplateArtifact

Campo obbligatorio: sì

Il nome dell'elemento di input che fornisce il AppSpec file all'azione di distribuzione. Tale valore viene aggiornato quando la pipeline viene eseguita. Questo è generalmente il nome dell'artefatto di output dell'azione di origine. Quando si utilizza la console, il nome predefinito per l'elemento di output dell'azione di origine è. SourceArtifact Per TaskDefinition nel AppSpec file, puoi conservare il testo <TASK_DEFINITION> segnaposto come mostrato qui.

AppSpecTemplatePath

Campo obbligatorio: no

Il nome del file memorizzato nella posizione del AppSpec file di origine della pipeline, ad esempio nel repository della pipeline. CodeCommit Il nome file predefinito è appspec.yaml. Se il AppSpec file ha lo stesso nome ed è archiviato al livello principale del repository di file, non è necessario fornire il nome del file. Se il percorso non è quello predefinito, inserite il percorso e il nome del file.

TaskDefinitionTemplatePath

Campo obbligatorio: no

Il nome del file della definizione dell'attività memorizzata nella posizione di origine del file della pipeline, ad esempio il repository della CodeCommit pipeline. Il nome file predefinito è taskdef.json. Se il file di definizione dell'attività ha lo stesso nome ed è archiviato a livello principale nel repository dei file, non è necessario fornire il nome del file. Se il percorso non è quello predefinito, inserite il percorso e il nome del file.

Immagine <Number>ArtifactName

Campo obbligatorio: no

Il nome dell'elemento di input che fornisce l'immagine all'azione di distribuzione. Si tratta generalmente dell'artefatto di output del repository di immagini, ad esempio l'output dell'azione sorgente di AmazonECR.

I valori disponibili per <Number> sono compresi tra 1 e 4.

Immagine <Number>ContainerName

Campo obbligatorio: no

Il nome dell'immagine disponibile nell'archivio di immagini, ad esempio l'archivio dei ECR sorgenti di Amazon.

I valori disponibili per <Number> sono compresi tra 1 e 4.

Input artifact (Artefatti di input)

  • Numero di artefatti: 1 to 5

  • Descrizione: l'CodeDeployToECSazione cerca innanzitutto il file di definizione dell'attività e il AppSpec file nell'archivio dei file di origine, quindi cerca l'immagine nell'archivio delle immagini, quindi genera dinamicamente una nuova revisione della definizione dell'attività e infine esegue AppSpec i comandi per distribuire il set di attività e il contenitore nel cluster.

    L'CodeDeployToECSazione cerca un imageDetail.json file che associa l'immagine all'immagine. URI Quando esegui una modifica al tuo archivio di ECR immagini Amazon, l'azione di ECR origine della pipeline crea un imageDetail.json file per quel commit. Puoi anche aggiungere manualmente un imageDetail.json file per una pipeline in cui l'azione non è automatizzata. Per ulteriori informazioni sul file imageDetail.json, consulta imageDetailfile.json per le azioni di distribuzione di Amazon ECS blue/green.

    L'CodeDeployToECSazione genera dinamicamente una nuova revisione della definizione dell'attività. In questa fase, questa azione sostituisce i segnaposto nel file di definizione delle attività con un'immagine URI recuperata dai file.json. imageDetail Ad esempio, se imposti IMAGE1_ NAME come ContainerName parametro Image1, devi specificare il segnaposto < IMAGE1 _ NAME > come valore del campo immagine nel file di definizione dell'attività. In questo caso, l' CodeDeployToECSazione sostituisce il segnaposto < IMAGE1 _ NAME > nell'immagine effettiva URI recuperata da imageDetail .json nell'artefatto specificato come Image1. ArtifactName

    Per gli aggiornamenti delle definizioni delle attività, il file contiene la proprietà. CodeDeploy AppSpec.yaml TaskDefinition

    TaskDefinition: <TASK_DEFINITION>

    Questa proprietà verrà aggiornata dall'CodeDeployToECSazione dopo la creazione della nuova definizione di attività.

    Per il valore del TaskDefinition campo, il testo segnaposto deve essere < TASK _ DEFINITION >. L'CodeDeployToECSazione sostituisce questo segnaposto con l'effettiva definizione dell'attività generata ARN dinamicamente.

Artefatti di output

  • Numero di artefatti: 0

  • Descrizione: gli artefatti di output non si applicano a questo tipo di azione.

Dichiarazione dell'operazione

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

Le risorse correlate seguenti possono essere utili durante l'utilizzo di questa operazione.

  • Tutorial: crea una pipeline con un ECR codice sorgente Amazon e la ECS relativa distribuzione CodeDeploy — Questo tutorial illustra la creazione delle ECS risorse Amazon CodeDeploy e delle risorse necessarie per una distribuzione blu/verde. Il tutorial mostra come inviare un'immagine Docker ad Amazon ECR e creare una definizione di ECS attività Amazon che elenchi il nome dell'immagine Docker, il nome del contenitore, il nome del ECS servizio Amazon e la configurazione del load balancer. Il tutorial ti guida quindi attraverso la creazione del AppSpec file e della pipeline per la tua implementazione.

    Nota

    Questo argomento e questo tutorial descrivono l'azione CodeDeploy/ECSblue/green per. CodePipeline Per informazioni sulle azioni ECS standard in CodePipeline, vedere Tutorial: Continuous Deployment with. CodePipeline

  • AWS CodeDeploy Guida per l'utente: per informazioni su come utilizzare il load balancer, il listener di produzione, i gruppi target e ECS l'applicazione Amazon in una distribuzione blu/verde, consulta Tutorial: Deploy an Amazon Service. ECS Queste informazioni di riferimento nella Guida per l'AWS CodeDeploy utente forniscono una panoramica delle distribuzioni blu/green con Amazon e. ECS AWS CodeDeploy

  • Guida per sviluppatori di Amazon Elastic Container Service: per informazioni sull'utilizzo di immagini e contenitori Docker, ECS servizi e cluster e set di ECS attività, consulta What Is Amazon? ECS