View a markdown version of this page

Amazon Elastic Container Service e riferimento all'azione di distribuzione CodeDeploy blu-verde - 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à.

Amazon Elastic Container Service e riferimento all'azione di distribuzione CodeDeploy blu-verde

È possibile configurare una pipeline in cui vengono distribuite le applicazioni AWS CodePipeline container utilizzando una distribuzione. blue/green In una blue/green distribuzione, puoi avviare una nuova versione dell'applicazione insieme alla vecchia versione e puoi testare la nuova versione prima di reindirizzare il traffico verso di essa. Puoi anche monitorare il processo di distribuzione e ripristinarlo rapidamente 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 cluster Amazon ECS e un sistema di bilanciamento del carico. CodeDeploy crea un nuovo listener sul load balancer 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 del task Amazon ECS.

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

Nota

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

Tipo di operazione

  • Categoria: Deploy

  • Proprietario: AWS

  • Provider: CodeDeployToECS

  • Versione: 1

Parametri di configurazione

ApplicationName

Obbligatorio: sì

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

DeploymentGroupName

Obbligatorio: sì

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

TaskDefinitionTemplateArtifact

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'elemento di output dell'azione sorgente. Quando si utilizza la console, il nome predefinito per l'artefatto di output dell'azione sorgente è. SourceArtifact

AppSpecTemplateArtifact

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 è in genere il nome dell'elemento di output dell'azione sorgente. Quando si utilizza la console, il nome predefinito per l'artefatto di output dell'azione sorgente è. SourceArtifact Per TaskDefinition i AppSpec file, puoi mantenere il testo <TASK_DEFINITION> segnaposto come mostrato qui. Fase 2: Creare la definizione delle attività e i file AppSpec di origine e inviarli a un repository CodeCommit

AppSpecTemplatePath

Obbligatorio: no

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

TaskDefinitionTemplatePath

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 delle attività ha lo stesso nome ed è archiviato al livello principale nel repository di file, non è necessario fornire il nome del file. Se il percorso non è quello predefinito, immettete il percorso e il nome del file.

Immagine <Number>ArtifactName

Obbligatorio: no

Il nome dell'elemento di input che fornisce l'immagine all'azione di distribuzione. Si tratta in genere dell'elemento di output del repository di immagini, ad esempio l'output dell'azione sorgente di Amazon ECR.

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

Immagine <Number>ContainerName

Obbligatorio: no

Il nome dell'immagine disponibile nel repository di immagini, ad esempio il repository di origine di Amazon ECR.

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 nel repository dei file di origine, quindi cerca l'immagine nel repository di 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'URI dell'immagine all'immagine. Quando esegui il commit di una modifica nel tuo repository di immagini Amazon ECR, l'azione sorgente ECR 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 file di immagine per le azioni di distribuzione di Amazon ECS Detail.json 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 dell'attività nell'URI dell'immagine recuperato dai file di immagine. Detail.json Ad esempio, se si imposta IMAGE1_NAME come Image1ContainerName parametro, è necessario specificare il segnaposto <IMAGE1_NAME>come valore del campo immagine nel file di definizione dell'attività. In questo caso, l' CodeDeployToECS azione sostituisce il segnaposto nell'<IMAGE1_NAME>URI effettivo dell'immagine recuperato dall'immagine nell'artefatto specificato come. Detail.json Image1ArtifactName

    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 dell'attività.

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

Artefatti di output

  • Numero di artefatti: 0

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

Autorizzazioni relative ai ruoli di servizio: azione CodeDeployToECS

Per l'CodeDeployToECSazione (blue/green distribuzioni), le seguenti sono le autorizzazioni minime necessarie per creare pipeline con un'azione di distribuzione CodeDeploy verso Amazon ECS. blue/green

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCodeDeployDeploymentActions", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[ApplicationName]]/*" ], "Effect": "Allow" }, { "Sid": "AllowCodeDeployApplicationActions", "Action": [ "codedeploy:GetApplication", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]", "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]/*" ], "Effect": "Allow" }, { "Sid": "AllowCodeDeployDeploymentConfigAccess", "Action": [ "codedeploy:GetDeploymentConfig" ], "Resource": [ "arn:aws:codedeploy:*:111122223333:deploymentconfig:*" ], "Effect": "Allow" }, { "Sid": "AllowECSRegisterTaskDefinition", "Action": [ "ecs:RegisterTaskDefinition" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "AllowPassRoleToECS", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/[[PassRoles]]" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "ecs.amazonaws.com", "ecs-tasks.amazonaws.com" ] } } } ] }

Puoi scegliere di utilizzare l'autorizzazione di etichettatura in Amazon ECS. Accedendo, devi concedere le seguenti autorizzazioni:. ecs:TagResource Per ulteriori informazioni su come attivare e determinare se l'autorizzazione è richiesta e l'autorizzazione ai tag è applicata, consulta la cronologia dell'autorizzazione ai tag nella Amazon Elastic Container Service Developer Guide.

È inoltre necessario aggiungere le iam:PassRole autorizzazioni per utilizzare i ruoli IAM per le attività. Per ulteriori informazioni, consulta Amazon ECS Task Execution IAM role e IAM Roles for Tasks.

Puoi anche aggiungerli ecs-tasks.amazonaws.com all'elenco dei servizi in base alla iam:PassedToService condizione, come mostrato nell'esempio precedente.

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: creare una pipeline con una fonte e una distribuzione Amazon ECR ECS-to-CodeDeploy— Questo tutorial illustra la creazione delle risorse CodeDeploy e di Amazon ECS necessarie per una blue/green distribuzione. Il tutorial mostra come inviare un'immagine Docker ad Amazon ECR e creare una definizione di attività Amazon ECS che elenchi il nome dell'immagine Docker, il nome del contenitore, il nome del servizio Amazon ECS e la configurazione del load balancer. Il tutorial ti guiderà quindi nella creazione del AppSpec file e della pipeline per la tua distribuzione.

    Nota

    Questo argomento e il tutorial descrivono l' CodeDeploy/ECS blue/green azione per. CodePipeline Per informazioni sulle azioni standard ECS 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 l'applicazione Amazon ECS in una blue/green distribuzione, consulta Tutorial: Deploy an Amazon ECS Service. Queste informazioni di riferimento nella Guida per l'AWS CodeDeploy utente forniscono una panoramica delle distribuzioni con Amazon ECS e. blue/green AWS CodeDeploy

  • Amazon Elastic Container Service Developer Guide: per informazioni su come lavorare con immagini e contenitori Docker, servizi e cluster ECS e set di attività ECS, consulta What Is Amazon ECS? https://docs.aws.amazon.com/AmazonECS/latest/developerguide/