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à.
Puoi configurare una pipeline in AWS CodePipeline modo da distribuire applicazioni container utilizzando una blue/green deployment. In a blue/green distribuzione, avviare 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 cluster Amazon ECS 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 attività di Amazon ECS.
Prima di creare la pipeline, devi aver già creato le risorse Amazon ECS, le risorse, il CodeDeploy sistema di bilanciamento del carico e il gruppo target. Devi aver già taggato e archiviato l'immagine nel tuo repository 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 di Amazon ECS to CodeDeploy blue/green per. CodePipeline Per informazioni di riferimento sulle azioni di distribuzione standard di Amazon ECS in CodePipeline, consultaRiferimento all'azione di distribuzione di Amazon Elastic Container Service.
Argomenti
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 attività di Amazon ECS 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 nel 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 in genere dell'artefatto 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
-
Campo obbligatorio: no
Il nome dell'immagine disponibile nell'archivio di immagini, ad esempio l'archivio dei sorgenti 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'
CodeDeployToECS
azione 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'
CodeDeployToECS
azione cerca unimageDetail.json
file che associa l'URI dell'immagine all'immagine. Quando esegui una modifica al tuo repository di immagini Amazon ECR, l'azione sorgente ECR della pipeline crea unimageDetail.json
file per quel commit. Puoi anche aggiungere manualmente unimageDetail.json
file per una pipeline in cui l'azione non è automatizzata. Per ulteriori informazioni sul fileimageDetail.json
, consulta File ImageDetail.json per le azioni di distribuzione blu/verde di Amazon ECS.L'
CodeDeployToECS
azione 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 ImageDetail.json. Ad esempio, se imposti IMAGE1_NAME come ContainerName parametro Image1, devi specificare il segnaposto < _NAME> come valore del campo immagine nel file di definizione dell'attività. IMAGE1 In questo caso, l'azione CodeDeployTo ECS sostituisce il segnaposto < IMAGE1 _NAME> nell'URI effettivo dell'immagine recuperato da ImageDetail.json nell'artefatto specificato come Image1. ArtifactNamePer gli aggiornamenti
TaskDefinition
delle definizioni delle CodeDeployAppSpec.yaml
attività, il file contiene la proprietà.TaskDefinition: <TASK_DEFINITION>
Questa proprietà verrà aggiornata dall'
CodeDeployToECS
azione dopo la creazione della nuova definizione di attività.<TASK_DEFINITION>Per il valore del
TaskDefinition
campo, il testo segnaposto deve essere. L'CodeDeployToECS
azione 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 per i ruoli di servizio: azione CodeDeployToECS
Per l'CodeDeployToECS
azione (azione di blue/green deployments), the following
are the minimum permissions needed to create pipelines with a CodeDeploy to Amazon ECS blue/green distribuzione).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCodeDeployDeploymentActions",
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetDeployment"
],
"Resource": [
"arn:aws:codedeploy:*:{{customerAccountId}}:deploymentgroup:[[ApplicationName]]/*"
],
"Effect": "Allow"
},
{
"Sid": "AllowCodeDeployApplicationActions",
"Action": [
"codedeploy:GetApplication",
"codedeploy:GetApplicationRevision",
"codedeploy:RegisterApplicationRevision"
],
"Resource": [
"arn:aws:codedeploy:*:{{customerAccountId}}:application:[[ApplicationName]]",
"arn:aws:codedeploy:*:{{customerAccountId}}:application:[[ApplicationName]]/*"
],
"Effect": "Allow"
},
{
"Sid": "AllowCodeDeployDeploymentConfigAccess",
"Action": [
"codedeploy:GetDeploymentConfig"
],
"Resource": [
"arn:aws:codedeploy:*:{{customerAccountId}}:deploymentconfig:*"
],
"Effect": "Allow"
},
{
"Sid": "AllowECSRegisterTaskDefinition",
"Action": [
"ecs:RegisterTaskDefinition"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Sid": "AllowPassRoleToECS",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::{{customerAccountId}}:role/[[PassRoles]]"
],
"Condition": {
"StringEquals": {
"iam:PassedToService": [
"ecs.amazonaws.com",
"ecs-tasks.amazonaws.com"
]
}
}
}
]
}
Puoi scegliere di utilizzare l'autorizzazione all'etichettatura in Amazon ECS. Iscrivendoti, devi concedere le seguenti autorizzazioni:. ecs:TagResource
Per ulteriori informazioni su come attivare e determinare se l'autorizzazione è richiesta e l'autorizzazione dei tag è applicata, consulta la cronologia dell'autorizzazione all'etichettatura 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 il ruolo IAM di esecuzione delle attività di Amazon ECS 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
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
Consulta anche
Le risorse correlate seguenti possono essere utili durante l'utilizzo di questa operazione.
-
Tutorial: crea una pipeline con una sorgente e una distribuzione Amazon ECR ECS-to-CodeDeploy— Questo tutorial illustra la creazione delle CodeDeploy risorse Amazon ECS necessarie per una distribuzione blu/verde. 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 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 /ECS blue/green per. CodePipeline Per informazioni sulle azioni standard ECS in CodePipeline, consulta 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 distribuzione blu/verde, consulta Tutorial: Deploy an Amazon ECS Service. Queste informazioni di riferimento nella Guida per l'AWS CodeDeploy utente forniscono una panoramica delle distribuzioni blu/green con Amazon ECS e. AWS CodeDeploy
-
Guida per sviluppatori di Amazon Elastic Container Service: per informazioni sull'utilizzo di immagini e contenitori Docker, servizi e cluster ECS e set di attività ECS, consulta What Is Amazon ECS?