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 una sorgente e una distribuzione Amazon ECR ECS-to-CodeDeploy
In questo tutorial, configurerai una pipeline per distribuire applicazioni container utilizzando una blue/green deployment that supports Docker images. In a blue/green distribuzione, potrai avviare la nuova versione dell'applicazione insieme a AWS CodePipeline quella 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 di Amazon ECS to CodeDeploy blu/green. CodePipeline Per un tutorial che utilizza l'azione di distribuzione standard di Amazon ECS in CodePipeline, consultaTutorial: distribuzione standard di Amazon ECS con CodePipeline.
La pipeline completata rileva le modifiche all'immagine, che viene archiviata in un repository di immagini come Amazon ECR e utilizzata CodeDeploy per indirizzare e distribuire il traffico verso un cluster Amazon ECS 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 l'applicazione Amazon ECS vengono utilizzati in una distribuzione blu/verde, consulta Tutorial: Deploy an Amazon ECS Service.
La pipeline è inoltre configurata per utilizzare una posizione di origine CodeCommit, ad esempio dove è archiviata la definizione delle attività di Amazon ECS. 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 immagini di 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'URI del repository del tuo repository di immagini Amazon ECR.
-
Una definizione di attività Amazon ECS che elenca il nome dell'immagine Docker, il nome del contenitore, il nome del servizio Amazon ECS e la configurazione del load balancer.
-
Un CodeDeploy AppSpec file che specifica il nome del file di definizione delle attività di Amazon ECS, 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 repository di immagini Amazon ECR, 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
- Fase 1: creare un'immagine e inviarla a un repository Amazon ECR
- Fase 2: Creare la definizione delle attività e i file AppSpec sorgente e inviarli a un repository CodeCommit
- Fase 3: creazione dell'Application Load Balancer e dei gruppi di destinazione
- Fase 4: crea il cluster e il servizio Amazon ECS
- Fase 5: creazione dell'applicazione e del gruppo di distribuzione CodeDeploy (piattaforma di calcolo ECS)
- Fase 6: creazione della pipeline
- Fase 7: modifica della pipeline e verifica della distribuzione
Prerequisiti
Devi aver già creato le seguenti risorse:
-
Un repository. CodeCommit È possibile utilizzare il AWS CodeCommit repository in cui è stato creato. Tutorial: creazione di una pipeline semplice (repository CodeCommit)
-
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.
Fase 1: creare un'immagine e inviarla a un repository Amazon ECR
In questa sezione, usi Docker per creare un'immagine e poi lo usi AWS CLI per creare un repository Amazon ECR 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 repository Amazon ECR e inviare la tua immagine
-
Crea un repository Amazon ECR per archiviare l'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
Fase 2: Creare la definizione delle attività e i file AppSpec sorgente e inviarli a un repository CodeCommit
In questa sezione, crei un file JSON di definizione delle attività e lo registri con Amazon ECS. 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 file AppSpec
-
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'artefatto di origine creato dalla procedura guidata Create pipeline (Crea pipeline) per l'operazione 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 CodeCommit repository:
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 Amazon ECS. Puoi creare un Application Load Balancer o un Network Load Balancer. Il sistema di bilanciamento del carico deve utilizzare un VPC con due sottoreti pubbliche in zone di disponibilità diverse. In queste fasi, confermerai il VPC predefinito, creerai un sistema di bilanciamento del carico, quindi due gruppi di destinazione per il sistema di bilanciamento del carico. Per ulteriori informazioni, consulta Gruppi di destinazione per i Network Load Balancer.
Per verificare il VPC predefinito e le sottoreti pubbliche
Accedi a AWS Management Console e apri la console Amazon VPC all'indirizzo. https://console.aws.amazon.com/vpc/
-
Verifica il VPC predefinito da utilizzare. Nel riquadro di navigazione, scegli Your VPCs. Controlla quale VPC mostra Yes (Sì) nella colonna Default VPC (VPC predefinito). Questo è il VPC predefinito. 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 sottorete IDs. 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 (Protocollo del sistema di bilanciamento del carico), scegli HTTP. In Load Balancer Port (Porta del sistema di bilanciamento del carico), immetti
80
. -
Scegli Add listener (Aggiungi listener).
-
In Load Balancer Protocol (Protocollo del sistema di bilanciamento del carico) per il secondo listener, scegli HTTP. In Load Balancer Port (Porta del sistema di bilanciamento del carico), immetti
8080
.
-
-
In Availability Zones (Zone di disponibilità), in VPC, scegli il VPC predefinito. 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 Protocol (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 Amazon EC2 . 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 Protocol (Protocollo), scegli HTTP. In Port (Porta), immetti
8080
. -
In VPC, scegli il VPC predefinito.
-
Scegli Create (Crea) .
Nota
È necessario disporre di due gruppi di destinazione creati per il sistema di bilanciamento del carico affinché la distribuzione si avvii. È necessario solo annotare l'ARN del primo gruppo di destinazione. Questo ARN è utilizzato nel file JSON
create-service
nella prossima fase.
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 cluster e il servizio Amazon ECS
In questa sezione, crei un cluster e un servizio Amazon ECS in cui CodeDeploy indirizza il traffico durante la distribuzione (verso un cluster Amazon ECS anziché EC2 istanze). Per creare il tuo servizio Amazon ECS, 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 un cluster Amazon ECS, 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 cluster Amazon ECS.
Come creare un cluster Amazon ECS
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 servizio Amazon ECS
Usa il AWS CLI per creare il tuo servizio in Amazon ECS.
-
Crea un file JSON e denominalo
create-service.json
. Incolla quanto segue nel file JSON.Per il
taskDefinition
campo, quando registri una definizione di attività in Amazon ECS, 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
È necessario includere l'ARN del gruppo di destinazione in questo file. Apri la EC2 console Amazon e dal pannello di navigazione, in LOAD BALANCING, scegli Target Groups. Scegli il primo gruppo di destinazione. Copia l'ARN dalla scheda Description (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 comando create-service e specifica il file JSON:
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: creazione dell'applicazione e del gruppo di distribuzione CodeDeploy (piattaforma di calcolo ECS)
Quando crei un' CodeDeploy applicazione e un gruppo di distribuzione per la piattaforma di calcolo Amazon ECS, 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.
-
In Compute platform (Piattaforma di calcolo), scegli Amazon ECS.
-
Scegli Crea applicazione.
Per creare un gruppo CodeDeploy di 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 garantisca CodeDeploy l'accesso ad Amazon ECS. Per creare un nuovo ruolo del servizio, attenersi alla seguente procedura:
-
Apri la console IAM 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à affidabile, 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).
-
-
In Configurazione dell'ambiente, scegli il nome del cluster Amazon ECS 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 (Porta del listener di produzione), scegli la porta e il protocollo per il listener che serve il traffico di produzione al 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 ECS aggiornata.
-
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 sorgente Amazon ECR in cui l'artefatto di origine è il file di immagine.
-
Una fase di distribuzione con un'azione di distribuzione di Amazon ECS 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
-
Nella pagina Welcome (Benvenuto), pagina Getting started (Nozioni di base) o pagina Pipelines (Pipeline), scegliere Create pipeline (Crea pipeline).
-
Nella pagina Passaggio 1: Scegli l'opzione di creazione, in Opzioni di creazione, scegli l'opzione Crea pipeline personalizzata. Scegli Next (Successivo).
-
Nel Passaggio 2: Scegliete le impostazioni della pipeline, in Nome della tubazione, immettete.
MyImagePipeline
-
CodePipeline fornisce condotte di tipo V1 e V2, che differiscono per caratteristiche e prezzo. Il tipo V2 è l'unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta i tipi di pipeline. Per informazioni sui prezzi di CodePipeline, consulta la sezione Prezzi
. -
In Ruolo di servizio, scegli Nuovo ruolo di servizio CodePipeline per consentire la creazione di un ruolo di servizio in IAM.
-
Lasciare i valori predefiniti delle impostazioni in Advanced settings (Impostazioni avanzate), quindi scegliere Next (Successivo).
-
Nel passaggio 3: Aggiungi la fase di origine, in Provider di origine, scegli AWS CodeCommit. In Repository name (Nome repository), scegliere il nome del repository CodeCommit creato in Passaggio 1: crea un CodeCommit repository. In Branch name (Nome ramo), scegliere il nome del ramo che contiene l'aggiornamento di codice più recente.
Scegli Next (Successivo).
-
Nel passaggio 4: Aggiungi la fase di compilazione, scegli Ignora fase di compilazione, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora. Scegli Next (Successivo).
-
Nel passaggio 5: aggiungi la fase di test, scegli Ignora fase di test, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora.
Scegli Next (Successivo).
-
Nel passaggio 6: aggiungi la fase di implementazione:
-
In Deploy provider (Distribuisci provider), scegli Amazon ECS (Blue/Green) (Blu/verde)). 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.
-
Nella definizione delle attività di Amazon ECS, 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).
-
-
Nel passaggio 7: rivedi, esamina le informazioni, quindi scegli Crea pipeline.
Per aggiungere un'azione sorgente Amazon ECR alla tua pipeline
Visualizza la tua pipeline e aggiungi un'azione sorgente Amazon ECR 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 Action provider (Provider operazione), scegli Amazon ECR.
-
In Nome repository, scegli il nome del tuo repository Amazon ECR.
-
In Image tag (Tag immagine), specifica il nome e la versione dell'immagine, se diverso da LATEST.
-
In Output artifacts (Artefatti di output), scegli l'artefatto di output predefinito (ad esempio
MyImage
), che include il nome dell'immagine e le informazioni di URI del repository che desideri sia utilizzato nella prossima fase. -
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'azione sorgente di Amazon ECR.
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 repository Amazon ECR (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 Input Artifact with Image URI, 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 repository Amazon ECR. In questo modo viene attivata la pipeline per l'esecuzione. Verifica che l'origine dell'immagine venga distribuita.