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à.
Tutorial: crea una pipeline con un ECR codice sorgente Amazon e la ECS relativa distribuzione CodeDeploy
In questo tutorial, configuri una pipeline AWS CodePipeline che distribuisce le applicazioni container utilizzando una distribuzione blu/verde che supporta le immagini Docker. In una distribuzione blu/verde, è possibile avviare la nuova versione dell'applicazione insieme alla versione precedente e testare la nuova versione prima di reindirizzare il traffico. Puoi anche monitorare il processo di distribuzione ed eseguire rapidamente il rollback in caso di problemi.
Importante
Come parte della creazione di una pipeline, per gli artefatti verrà utilizzato un bucket di artefatti S3 fornito dal cliente. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso da quello della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di utenti sicuri e affidabili. Account AWS
Nota
Questo tutorial è destinato all'azione di distribuzione ECS di Amazon to CodeDeploy blue/green. CodePipeline Per un tutorial che utilizza l'azione di distribuzione ECS standard di Amazon in CodePipeline, consultaTutorial: distribuzione ECS standard di Amazon con CodePipeline.
La pipeline completata rileva le modifiche all'immagine, che viene archiviata in un archivio di immagini come Amazon ECR e utilizzata CodeDeploy per indirizzare e distribuire il traffico verso un ECS cluster Amazon e un sistema di bilanciamento del carico. CodeDeploy utilizza un listener per reindirizzare il traffico verso la porta del contenitore aggiornato specificata nel file. AppSpec Per informazioni su come il load balancer, il listener di produzione, i gruppi target e ECS l'applicazione Amazon vengono utilizzati in una distribuzione blu/verde, consulta Tutorial: Deploy an Amazon Service. ECS
La pipeline è inoltre configurata per utilizzare una posizione di origine CodeCommit, ad esempio dove è archiviata la definizione delle ECS attività di Amazon. In questo tutorial, configurerai ognuna di queste AWS risorse e poi creerai la tua pipeline con fasi che contengono azioni per ogni risorsa.
La tua pipeline di distribuzione continua creerà e distribuirà automaticamente le immagini dei container ogni volta che il codice sorgente viene modificato o viene caricata una nuova immagine di base su Amazon. ECR
Questo flusso utilizza i seguenti artefatti:
-
Un file di immagine Docker che specifica il nome del contenitore e l'archivio del URI tuo archivio di immagini AmazonECR.
-
Una definizione di ECS attività Amazon che elenca il nome dell'immagine Docker, il nome del contenitore, il nome del ECS servizio Amazon e la configurazione del load balancer.
-
Un CodeDeploy AppSpec file che specifica il nome del file di definizione delle ECS attività di Amazon, il nome del contenitore dell'applicazione aggiornata e la porta del contenitore in cui CodeDeploy reindirizza il traffico di produzione. Puoi anche specificare la configurazione di rete opzionale e le funzioni Lambda che puoi eseguire durante gli hook di eventi del ciclo di vita di distribuzione.
Nota
Quando esegui una modifica al tuo archivio di ECR immagini Amazon, l'azione di origine della pipeline crea un imageDetail.json
file per quel commit. Per ulteriori informazioni sul file imageDetail.json
, consulta imageDetailfile.json per le azioni di distribuzione di Amazon ECS blue/green.
Quando crei o modifichi la pipeline e aggiorni o specifichi artefatti di origine per la fase di distribuzione, assicurati di puntare agli artefatti di origine con il nome e la versione più recenti da utilizzare. Dopo aver configurato la pipeline, quando modifichi la definizione dell'immagine o dell'attività, potrebbe essere necessario aggiornare i file di artefatti di origine nei repository e quindi modificare la fase di distribuzione nella pipeline.
Argomenti
- Prerequisiti
- Passaggio 1: creare un'immagine e inviarla a un ECR repository Amazon
- Passaggio 2: crea la definizione dell'attività e i file AppSpec sorgente e inviali a un CodeCommit repository
- Fase 3: creazione dell'Application Load Balancer e dei gruppi di destinazione
- Fase 4: Crea il tuo ECS cluster e il tuo servizio Amazon
- Fase 5: Crea CodeDeploy l'applicazione e il gruppo di distribuzione (piattaforma di ECS elaborazione)
- Fase 6: creazione della pipeline
- Fase 7: modifica della pipeline e verifica della distribuzione
Prerequisiti
Devi aver già creato le seguenti risorse:
-
Un CodeCommit repository. Puoi usare il AWS CodeCommit repository in cui hai creato. Tutorial: crea una pipeline semplice (CodeCommitrepository)
-
Avvia un'istanza Amazon EC2 Linux e installa Docker per creare un'immagine come mostrato in questo tutorial. Se disponi già di un'immagine che intendi utilizzare, puoi ignorare questo prerequisito.
Passaggio 1: creare un'immagine e inviarla a un ECR repository Amazon
In questa sezione, usi Docker per creare un'immagine e poi lo usi AWS CLI per creare un ECR repository Amazon e inviare l'immagine al repository.
Nota
Se disponi già di un'immagine che intendi utilizzare, puoi ignorare questa fase.
Per creare un'immagine
-
Accedi all'istanza Linux in cui è installato Docker.
Seleziona un'immagine per
nginx
. Questo comando fornisce l'immagine:nginx:latest
docker pull nginx
-
Esegui docker images. Dovresti poter visualizzare l'immagine nell'elenco.
docker images
Per creare un ECR repository Amazon e inviare la tua immagine
-
Crea un ECR repository Amazon per archiviare la tua immagine. Prendi nota del valore di
repositoryUri
nell'output.aws ecr create-repository --repository-name nginx
Output:
{ "repository": { "registryId": "
aws_account_id
", "repositoryName": "nginx", "repositoryArn": "arn:aws:ecr:us-east-1
:aws_account_id
:repository/nginx", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id
.dkr.ecr.us-east-1
.amazonaws.com/nginx" } } -
Applica un tag all'immagine con il valore
repositoryUri
ricavato nella fase precedente.docker tag nginx:latest
aws_account_id
.dkr.ecr.us-east-1
.amazonaws.com/nginx:latest -
Esegui il aws ecr get-login-password comando, come mostrato in questo esempio per la
us-west-2
regione e l'ID dell'account 111122223333.aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
-
Invia l'immagine ad Amazon ECR utilizzando il
repositoryUri
passaggio precedente.docker push 111122223333.dkr.ecr.
us-east-1
.amazonaws.com/nginx:latest
Passaggio 2: crea la definizione dell'attività e i file AppSpec sorgente e inviali a un CodeCommit repository
In questa sezione, crei un JSON file di definizione delle attività e lo registri con AmazonECS. Quindi crei un AppSpec file CodeDeploy e usi il tuo client Git per inviare i file al tuo CodeCommit repository.
Per creare una definizione di attività per l'immagine
-
Crea un file denominato
taskdef.json
con i seguenti contenuti. Perimage
, immetti il nome dell'immagine, ad esempio nginx. Tale valore viene aggiornato quando la pipeline viene eseguita.Nota
Assicurati che il ruolo di esecuzione specificato nella definizione dell'attività contenga
AmazonECSTaskExecutionRolePolicy
. Per ulteriori informazioni, consulta Amazon ECS Task Execution IAM Role nella Amazon ECS Developer Guide.{ "executionRoleArn": "arn:aws:iam::
account_ID
:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" } -
Registra la definizione dell'attività con il file
taskdef.json
.aws ecs register-task-definition --cli-input-json file://taskdef.json
-
Una volta registrata la definizione dell'attività, modifica il file per rimuovere il nome dell'immagine e includi il testo segnaposto
<IMAGE1_NAME>
nel campo dell'immagine.{ "executionRoleArn": "arn:aws:iam::
account_ID
:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "<IMAGE1_NAME>", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
Per creare un AppSpec file
-
Il AppSpec file viene utilizzato per le CodeDeploy distribuzioni. Il file, che comprende campi opzionali, utilizza questo formato:
version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "
task-definition-ARN
" LoadBalancerInfo: ContainerName: "container-name
" ContainerPort:container-port-number
# Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-name-1
", "subnet-name-2
"] SecurityGroups: ["security-group
"] AssignPublicIp: "ENABLED
" Hooks: - BeforeInstall: "BeforeInstallHookFunctionName
" - AfterInstall: "AfterInstallHookFunctionName
" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName
" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName
" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName
"Per ulteriori informazioni sul AppSpec file, inclusi esempi, vedere CodeDeploy AppSpec File Reference.
Crea un file denominato
appspec.yaml
con i seguenti contenuti. PerTaskDefinition
, non modificare il testo segnaposto<TASK_DEFINITION>
. Tale valore viene aggiornato quando la pipeline viene eseguita.version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80
Per inviare file al tuo CodeCommit repository
-
Invia o carica i file nel tuo CodeCommit repository. Questi file sono l'elemento sorgente creato dalla procedura guidata Create pipeline per l'azione di distribuzione in. CodePipeline I file dovrebbero avere questo aspetto nella directory locale:
/tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
-
Scegli un metodo per caricare i file:
-
Per usare la riga di comando git da un repository clonato sul computer locale:
-
Cambia le directory nel repository locale:
(For Linux, macOS, or Unix)
cd /tmp/my-demo-repo(For Windows)
cd c:\temp\my-demo-repo -
Esegui il comando seguente per posizionare tutti i file contemporaneamente:
git add -A
-
Esegui il comando seguente per eseguire il commit dei file con un messaggio di commit:
git commit -m "Added task definition files"
-
Esegui il comando seguente per inviare i file dal repository locale al tuo repository: CodeCommit
git push
-
-
Per utilizzare la CodeCommit console per caricare i file:
-
Apri la CodeCommit console e scegli il tuo repository dall'elenco Repository.
-
Seleziona Add file (Aggiungi file), quindi scegli Upload file (Carica file).
-
Seleziona Choose file (Scegli file), quindi seleziona il file. Conferma la modifica inserendo il tuo nome utente e indirizzo e-mail. Scegliere Commit changes (Applica modifiche).
-
Ripeti questa fase per ogni file da caricare.
-
-
Fase 3: creazione dell'Application Load Balancer e dei gruppi di destinazione
In questa sezione, crei un Amazon EC2 Application Load Balancer. Utilizzerai i nomi delle sottoreti e i valori dei gruppi target che creerai con il tuo sistema di bilanciamento del carico in un secondo momento, quando crei il tuo servizio AmazonECS. Puoi creare un Application Load Balancer o un Network Load Balancer. Il load balancer deve utilizzare un sistema VPC con due sottoreti pubbliche in zone di disponibilità diverse. In questi passaggi, confermi le impostazioni predefiniteVPC, crei un sistema di bilanciamento del carico e quindi crei due gruppi target per il sistema di bilanciamento del carico. Per ulteriori informazioni, consulta Gruppi di destinazione per i Network Load Balancer.
Per verificare le sottoreti predefinite VPC e pubbliche
Accedi a AWS Management Console e apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/
. -
Verifica l'impostazione predefinita VPC da utilizzare. Nel riquadro di navigazione, scegli Your VPCs. Nota che VPC mostra Sì nella VPC colonna Predefinito. Questa è l'impostazione predefinitaVPC. Contiene le sottoreti predefinite da selezionare.
-
Scegli Subnets (Sottoreti). Scegli due sottoreti che mostrano Yes (Sì) nella colonna Default subnet (Sottorete predefinita).
Nota
Prendi nota della tua sottoreteIDs. Saranno necessari più avanti in questo tutorial.
-
Scegli le sottoreti, quindi scegli la scheda Description (Descrizione). Verifica che le sottoreti da utilizzare siano in diverse zone di disponibilità.
-
Scegli le sottoreti, quindi scegli la scheda Route Table (Tabella di routing). Per verificare che ciascuna sottorete che desideri utilizzare sia una sottorete pubblica, controlla che una riga di gateway sia inclusa nella tabella di routing.
Per creare un Amazon EC2 Application Load Balancer
Accedi a AWS Management Console e apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Selezionare Sistemi di bilanciamento del carico nel riquadro di navigazione.
-
Seleziona Crea sistema di bilanciamento del carico.
-
Scegli Application Load Balancer, quindi scegli Create (Crea).
-
In Name (Nome), immetti il nome del sistema di bilanciamento del carico.
-
In Scheme (Schema), scegli internet-facing.
-
In IP address type (Tipo di indirizzo IP), scegli ipv4.
-
Configura due porte listener per il sistema di bilanciamento del carico:
-
In Load Balancer Protocol, scegli. HTTP In Load Balancer Port (Porta del sistema di bilanciamento del carico), immetti
80
. -
Scegli Add listener (Aggiungi listener).
-
In Load Balancer Protocol per il secondo listener, scegliete. HTTP In Load Balancer Port (Porta del sistema di bilanciamento del carico), immetti
8080
.
-
-
In Zone di disponibilità, in VPC, scegli l'impostazione predefinita. VPC Quindi, scegli le due sottoreti predefinite da utilizzare.
-
Seleziona Next: Configure Security Settings (Fase successiva: configurazione delle impostazioni di sicurezza).
-
Seleziona Next: Configure Security Groups (Fase successiva: configurazione dei gruppi di sicurezza).
-
Scegli Select an existing security group (Seleziona un gruppo di sicurezza esistente) e prendi nota dell'ID del gruppo di sicurezza.
-
Seleziona Successivo: Configurazione del routing.
-
In Target group (Gruppo di destinazione), scegli New target group (Nuovo gruppo di destinazione) e configura il primo gruppo di destinazione:
-
In Name (Nome), immetti il nome di un gruppo di destinazione (ad esempio,
target-group-1
). -
In Target type (Tipo di destinazione), scegli IP.
-
In Protocollo scegli HTTP. In Port (Porta), immetti
80
. -
Seleziona Next: Register Targets (Fase successiva: registrazione delle destinazioni).
-
-
Scegli Next: Review (Fase successiva: revisione), quindi seleziona Create (Crea).
Per creare un secondo gruppo di destinazione per il sistema di bilanciamento del carico
-
Dopo aver effettuato il provisioning del sistema di bilanciamento del carico, apri la console AmazonEC2. Seleziona Gruppi di destinazioni nel riquadro di navigazione.
-
Scegliere Crea gruppo target.
-
In Name (Nome), immetti il nome di un gruppo di destinazione (ad esempio,
target-group-2
). -
In Target type (Tipo di destinazione), scegli IP.
-
In Protocollo scegli. HTTP In Port (Porta), immetti
8080
. -
In VPC, scegli l'impostazione predefinitaVPC.
-
Scegli Create (Crea) .
Nota
È necessario disporre di due gruppi di destinazione creati per il sistema di bilanciamento del carico affinché la distribuzione si avvii. Devi solo prendere nota ARN del tuo primo gruppo target. Questo ARN viene utilizzato nel
create-service
JSON file nel passaggio successivo.
Per aggiornare il sistema di bilanciamento del carico per includere il secondo gruppo di destinazione
-
Apri la EC2 console Amazon. Selezionare Sistemi di bilanciamento del carico nel riquadro di navigazione.
-
Seleziona il sistema di bilanciamento del carico, quindi la scheda Listeners (Listener). Scegli il listener con porta 8080 e quindi scegli Edit (Modifica).
-
Seleziona l'icona della matita accanto a Forward to (Inoltra a). Scegli il secondo gruppo di destinazione e quindi seleziona il segno di spunta. Seleziona Update (Aggiorna) per salvare gli aggiornamenti.
Fase 4: Crea il tuo ECS cluster e il tuo servizio Amazon
In questa sezione, crei un ECS cluster e un servizio Amazon in cui CodeDeploy indirizza il traffico durante la distribuzione (verso un ECS cluster Amazon anziché verso EC2 le istanze). Per creare il tuo ECS servizio Amazon, devi utilizzare i nomi di sottorete, il gruppo di sicurezza e il valore del gruppo target che hai creato con il tuo sistema di bilanciamento del carico per creare il tuo servizio.
Nota
Quando utilizzi questi passaggi per creare il tuo ECS cluster Amazon, utilizzi il modello di cluster Networking only, che fornisce i contenitori AWS Fargate. AWS Fargate è una tecnologia che gestisce al posto tuo l'infrastruttura delle istanze di container. Non è necessario scegliere o creare manualmente EC2 istanze Amazon per il tuo ECS cluster Amazon.
Per creare un ECS cluster Amazon
Apri la console Amazon ECS Classic all'indirizzo https://console.aws.amazon.com/ecs/
. -
Nel pannello di navigazione scegliere Clusters (Cluster).
-
Scegli Crea cluster.
-
Scegli il modello di cluster Solo rete che utilizza AWS Fargate, quindi scegli Passaggio successivo.
-
Nella pagina Configure cluster (Configura cluster), immetti un nome di cluster. È possibile aggiungere un tag facoltativo per la risorsa. Scegli Create (Crea) .
Per creare un ECS servizio Amazon
Usa il AWS CLI per creare il tuo servizio in AmazonECS.
-
Crea un JSON file e assegnagli un nome
create-service.json
. Incolla quanto segue nel JSON file.Per il
taskDefinition
campo, quando registri una definizione di attività in AmazonECS, le dai una famiglia. L'operazione è analoga a un nome per più versioni della definizione di attività, specificato con un numero di revisione. In questo esempio, utilizza "ecs-demo:1
" per la famiglia e il numero di revisione nel file. Utilizzare i nomi di sottorete, il gruppo di sicurezza e il valore del gruppo di destinazione creati con il sistema di bilanciamento del carico in Fase 3: creazione dell'Application Load Balancer e dei gruppi di destinazione .Nota
Devi includere il tuo gruppo target ARN in questo file. Apri la EC2 console Amazon e dal pannello di navigazione, sotto LOADBALANCING, scegli Target Groups. Scegli il primo gruppo di destinazione. Copia il tuo ARN dalla scheda Descrizione.
{ "taskDefinition": "
family
:revision-number
", "cluster": "my-cluster
", "loadBalancers": [ { "targetGroupArn": "target-group-arn
", "containerName": "sample-website", "containerPort": 80 } ], "desiredCount": 1, "launchType": "FARGATE", "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-1
", "subnet-2
" ], "securityGroups": [ "security-group
" ], "assignPublicIp": "ENABLED" } } } -
Esegui il create-service comando, specificando il JSON file:
Importante
Assicurarsi di includere
file://
prima del nome del file. Questo è obbligatorio in questo comando.Questo esempio crea un servizio denominato
my-service
.Nota
In questo esempio il comando crea un servizio denominato my-service. Se si dispone già di un servizio con questo nome, il comando restituisce un errore.
aws ecs create-service --service-name my-service --cli-input-json file://create-service.json
L'output restituisce i campi di descrizione per il servizio.
-
Esegui il comando describe-services per verificare l'avvenuta creazione del servizio.
aws ecs describe-services --cluster
cluster-name
--servicesservice-name
Fase 5: Crea CodeDeploy l'applicazione e il gruppo di distribuzione (piattaforma di ECS elaborazione)
Quando crei un' CodeDeploy applicazione e un gruppo di distribuzione per la piattaforma di ECS calcolo Amazon, l'applicazione viene utilizzata durante una distribuzione per fare riferimento al gruppo di distribuzione, ai gruppi target, agli ascoltatori e al comportamento di reindirizzamento del traffico corretti.
Per creare CodeDeploy un'applicazione
-
Apri la CodeDeploy console e scegli Crea applicazione.
-
In Application name (Nome applicazione), immetti il nome da utilizzare.
-
Nella piattaforma Compute, scegli Amazon ECS.
-
Scegli Crea applicazione.
Per creare un gruppo di CodeDeploy distribuzione
-
Nella pagina dell'applicazione, nella scheda Deployment groups (Gruppi di distribuzione), scegli Create deployment group (Crea gruppo di distribuzione).
-
In Deployment group name (Nome gruppo di distribuzione), inserire un nome che descriva il gruppo di distribuzione.
-
In Ruolo di servizio, scegli un ruolo di servizio che consenta l' CodeDeployaccesso ad AmazonECS. Per creare un nuovo ruolo del servizio, attenersi alla seguente procedura:
-
Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/
). -
Dal pannello di controllo della console, scegli Roles (Ruoli).
-
Scegliere Crea ruolo.
-
In Seleziona il tipo di entità attendibile, seleziona Servizio AWS. In Scegli un caso d'uso, seleziona CodeDeploy. In Seleziona il tuo caso d'uso, seleziona CodeDeploy - ECS. Scegli Successivo: autorizzazioni. La policy gestita
AWSCodeDeployRoleForECS
è già collegata al ruolo. -
Scegli Next: Tags (Successivo: Tag) e Next: Review (Successivo: Verifica).
-
Immetti un nome per il ruolo, ad esempio
CodeDeployECSRole
, quindi seleziona Create role (Crea ruolo).
-
-
Nella configurazione dell'ambiente, scegli il nome ECS del cluster Amazon e il nome del servizio.
-
In Load balancer, scegli il nome del load balancer che serve il traffico verso il tuo servizio Amazon. ECS
-
Da Production listener port, scegli la porta e il protocollo per il listener che fornisce il traffico di produzione al tuo servizio Amazon. ECS Da Test listener port (Porta listener test), scegli la porta e il protocollo per il listener test.
-
Da Target group 1 name (Nome gruppo di destinazione 1) e Target group 2 name (Nome gruppo di destinazione 2), scegli i gruppi di destinazione utilizzati per instradare il traffico durante la distribuzione. Assicurati che questi siano i gruppi di destinazione creati per il sistema di bilanciamento del carico.
-
Scegli Reindirizzare immediatamente il traffico per determinare quanto tempo dopo una corretta implementazione reindirizzare il traffico verso la tua attività Amazon aggiornata. ECS
-
Scegliere Create deployment group (Crea gruppo di distribuzione).
Fase 6: creazione della pipeline
In questa sezione, andrai a creare una pipeline con le operazioni seguenti:
-
Un' CodeCommit azione in cui gli artefatti di origine sono la definizione dell'attività e il file. AppSpec
-
Una fase di origine con un'azione ECR sorgente Amazon in cui l'artefatto di origine è il file di immagine.
-
Una fase di distribuzione con un'azione di ECS distribuzione di Amazon in cui la distribuzione viene eseguita con un' CodeDeploy applicazione e un gruppo di distribuzione.
Per creare una pipeline a due fasi con la procedura guidata
Accedi AWS Management Console e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home
. -
Nella pagina Welcome (Benvenuto), pagina Getting started (Nozioni di base) o pagina Pipelines (Pipeline), scegliere Create pipeline (Crea pipeline).
-
In Step 1: Choose pipeline settings (Fase 1: scelta delle impostazioni della pipeline), in Pipeline name (Nome pipeline), immettere
MyImagePipeline
. -
Nel tipo di pipeline, scegli V2. Per ulteriori informazioni, consulta Tipi di tubazioni. Scegli Next (Successivo).
-
In Ruolo di servizio, scegli Nuovo ruolo di servizio in cui consentire CodePipeline la creazione di un ruolo di servizio. IAM
-
Lasciare i valori predefiniti delle impostazioni in Advanced settings (Impostazioni avanzate), quindi scegliere Next (Successivo).
-
In Step 2: Add source stage (Fase 2: aggiunta della fase di origine), in Source provider (Provider origine), scegliere AWS CodeCommit. In Nome archivio, scegli il nome del CodeCommit repository in cui hai creato. Fase 1: Creare un CodeCommit repository In Branch name (Nome ramo), scegliere il nome del ramo che contiene l'aggiornamento di codice più recente.
Scegli Next (Successivo).
-
In Step 3: Add build stage (Fase 3: aggiunta della fase di compilazione), scegli Skip build stage (Ignora fase di compilazione) e quindi accetta il messaggio di avviso scegliendo Skip (Ignora). Scegli Next (Successivo).
-
In Step 4: Add deploy stage (Fase 4: aggiunta della fase di distribuzione):
-
In Deploy provider, scegli Amazon ECS (Blue/Green). In Application name (Nome applicazione) immetti o scegli il nome dell'applicazione dall'elenco, ad esempio
codedeployapp
. In Deployment group (Gruppo di distribuzione), immetti o scegli il gruppo di distribuzione dall'elenco, ad esempiocodedeploydeplgroup
.Nota
Il nome "Deploy (Distribuzione)" è quello assegnato per impostazione predefinita alla fase creata in Fase 4: distribuzione, così come "Source (Origine)" è il nome assegnato alla prima fase della pipeline.
-
In Amazon ECS task definition, scegli SourceArtifact. Nel campo, immetti
taskdef.json
. -
In AWS CodeDeploy AppSpec File, scegli SourceArtifact. Nel campo, immetti
appspec.yaml
.Nota
In questa fase, non immettere nessuna informazione in Dynamically update task definition image (Aggiorna dinamicamente l'immagine di definizione dell'attività).
-
Scegli Next (Successivo).
-
-
In Step 5: Review (Fase 5: revisione), esaminare le informazioni e quindi scegliere Create pipeline (Crea pipeline).
Per aggiungere un'azione ECR sorgente Amazon alla tua pipeline
Visualizza la tua pipeline e aggiungi un'azione ECR sorgente Amazon alla tua pipeline.
-
Seleziona la pipeline. In alto a sinistra, scegliere Edit (Modifica).
-
Nella fase di origine, scegli Edit stage (Modifica fase).
-
Aggiungi un'azione parallela selezionando + Aggiungi azione accanto all'azione CodeCommit sorgente.
-
In Action name (Nome operazione), immetti un nome (ad esempio,
Image
). -
In Provider Action, scegli Amazon ECR.
-
In Nome repository, scegli il nome del tuo ECR repository Amazon.
-
In Image tag (Tag immagine), specifica il nome e la versione dell'immagine, se diverso da LATEST.
-
In Elementi di output, scegli l'elemento di output predefinito (ad esempio,
MyImage
) che contiene il nome dell'immagine e le URI informazioni del repository che desideri utilizzare nella fase successiva. -
Scegli Save (Salva) nella schermata dell'operazione. Scegli Done (Fatto) nella schermata della fase. Scegli Save (Salva) nella pipeline. Un messaggio mostra la regola Amazon CloudWatch Events da creare per l'Amazon ECR source action.
Per collegare gli artefatti di origine all'operazione di distribuzione
-
Scegli Modifica nella fase di distribuzione e scegli l'icona per modificare l'azione Amazon ECS (blu/verde).
-
Scorri fino alla fine del riquadro. In Input artifacts (Artefatti di input), scegli Add (Aggiungi). Aggiungi l'elemento sorgente dal tuo nuovo ECR repository Amazon (ad esempio,).
MyImage
-
In Task Definition, scegli SourceArtifact, quindi inserisci la verifica
taskdef.json
. -
In AWS CodeDeploy AppSpec File, scegliete SourceArtifact, quindi
appspec.yaml
viene inserita la verifica. -
In Aggiorna dinamicamente l'immagine di definizione dell'attività, in Inserisci artifatto con URI immagine, MyImagescegli, quindi inserisci il testo segnaposto utilizzato nel file:.
taskdef.json
IMAGE1_NAME
Seleziona Salva. -
Nel AWS CodePipeline riquadro, scegliete Salva modifica alla pipeline, quindi scegliete Salva modifica. Visualizza la pipeline aggiornata.
Dopo la creazione di questa pipeline di esempio, la configurazione dell'operazione per le voci della console viene visualizzata nella struttura della pipeline come segue:
"configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
-
Per inviare le modifiche e avviare una compilazione tramite pipeline, scegliere Release change (Rilascia modifica) e quindi scegliere Release (Rilascia).
-
Scegli l'azione di distribuzione in cui visualizzarla CodeDeploy e vedere l'avanzamento dello spostamento del traffico.
Nota
È possibile che venga visualizzato un passaggio di distribuzione che mostra un tempo di attesa opzionale. Per impostazione predefinita, CodeDeploy attende un'ora dopo una corretta distribuzione prima di terminare il set di attività originale. È possibile utilizzare questo tempo per ripristinare o terminare l'attività. La distribuzione viene completata al termine del set di attività.
Fase 7: modifica della pipeline e verifica della distribuzione
Apporta una modifica alla tua immagine e poi trasferisci la modifica al tuo ECR repository Amazon. In questo modo viene attivata la pipeline per l'esecuzione. Verifica che l'origine dell'immagine venga distribuita.