- Strumenti per sviluppatori›
- AWS CodeDeploy›
- Domande frequenti
Domande frequenti su AWS CodeDeploy
Argomenti della pagina
Generali
Apri tuttoAWS CodeDeploy è un servizio che automatizza la distribuzione di software sia in istanze Amazon EC2 sia in istanze locali. Il servizio semplifica le operazioni di rilascio di nuove caratteristiche, consente di evitare tempi di inattività durante la distribuzione e gestisce le complesse attività di aggiornamento delle applicazioni. Puoi usare AWS CodeDeploy per automatizzare le distribuzioni ed eliminare il bisogno di operazioni manuali soggette a errore; il servizio si ridimensiona con la tua infrastruttura in modo da permetterti di distribuire una sola istanza o migliaia.
AWS CodeDeploy è progettato per sviluppatori e amministratori che devono distribuire applicazioni sia in istanze Amazon EC2 sia in istanze locali. È un servizio flessibile e può anche essere usato per gli aggiornamenti di software o l’esecuzione di script su istanze.
AWS CodeDeploy può essere utilizzato per distribuire qualunque tipo di applicazione. Per utilizzare AWS CodeDeploy, è necessario specificare i file da copiare e gli script da eseguire su ciascuna istanza durante la distribuzione. AWS CodeDeploy non è basato su un linguaggio o un’architettura specifici, quindi si possono usare script per ogni logica di distribuzione personalizzata.
AWS CodeDeploy supporta un'ampia gamma di sistemi operativi. AWS CodeDeploy fornisce agenti testati per Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server e Microsoft Windows Server. Se desideri utilizzare altri sistemi operativi, l'agente AWS CodeDeploy è disponibile come software open source qui. Per ulteriori informazioni sul supporto dei sistemi operativi, consulta la documentazione di AWS CodeDeploy.
Sì. AWS CodeDeploy è compatibile con numerosi sistemi di gestione della configurazione, sistemi di integrazione e distribuzione continua e sistemi di controllo del codice sorgente. Per ulteriori informazioni, consulta la pagina sulle integrazioni dei prodotti.
AWS CodeDeploy è un servizio di base destinato ad aiutare gli sviluppatori a distribuire e aggiornare software sia in istanze Amazon EC2 sia in istanze locali. AWS Elastic Beanstalk e AWS OpsWorks sono soluzioni di gestione di applicazioni complete.
Nozioni di base
Apri tuttoUn'applicazione è una raccolta di software e configurazioni da distribuire in un gruppo di istanze. In genere, le istanze in uno stesso gruppo eseguono lo stesso software. Per esempio, nel caso di un sistema distribuito su larga scala, il livello Web è probabilmente costituito da un’applicazione e il livello dati da un’altra applicazione.
Una revisione è una versione specifica del contenuto distribuibile, ad esempio codice sorgente, artefatti post-compilazione, pagine Web, file eseguibili e script di distribuzione, insieme a un file AppSpec. L’agente AWS CodeDeploy può accedere a una revisione da GitHub o da un bucket Amazon S3.
Un gruppo di distribuzione è l'entità AWS CodeDeploy per raggruppare istanze EC2 o funzioni AWS Lambda in una distribuzione CodeDeploy. Per distribuzioni EC2, si tratta di un gruppo di istanze associate all’applicazione di destinazione di una distribuzione. È possibile aggiungere istanze a un gruppo di distribuzione specificando tag, nome di gruppo Auto Scaling o entrambi. In una distribuzione AWS Lambda, un gruppo di distribuzione definisce un set di configurazioni di AWS CodeDeploy per distribuzioni Lambda serverless future nel gruppo stesso, ad esempio allarmi e rollback.
È possibile definire diversi gruppi di distribuzione per un'applicazione, ad esempio per gestione temporanea e produzione. Per informazioni sui tag, consulta Lavorare con i tag Amazon EC2 nella console. Per ulteriori informazioni sulla distribuzione nei gruppi Auto Scaling, consulta Auto Scaling Integration.
Una configurazione di distribuzione specifica le modalità della distribuzione, ad esempio in che modo gestire gli errori, attraverso un gruppo di distribuzione. È possibile utilizzare una configurazione di distribuzione per eseguire distribuzioni senza tempi di inattività in gruppi di distribuzione composti da più istanze. Ad esempio, se un'applicazione necessita di almeno il 50% delle istanze in un gruppo di distribuzione per operare ed elaborare traffico, è possibile specificare questa impostazione nella configurazione; in tal modo la distribuzione non provocherà tempi di inattività. Se non è associata alcuna configurazione alla distribuzione o al gruppo di distribuzione, per impostazione predefinita AWS CodeDeploy procederà un'istanza alla volta. Per ulteriori informazioni sulla configurazione della distribuzione, consulta Instance Health.
Ci sono tre parametri da specificare per una distribuzione:
- Revisione: specifica l'oggetto della distribuzione.
- Gruppo di distribuzione: specifica dove eseguirela distribuzione.
- Configurazione di distribuzione: un parametro opzionale che specifica come effettuare la distribuzione.
Un file AppSpec è un file di configurazione che specifica i file da copiare e gli script da eseguire. Il file AppSpec utilizza il formato YAML e lo includi nella directory principale della revisione. Questo tipo di file è utilizzato dall'agente AWS CodeDeploy ed è composto da due sezioni. La sezione relativa ai file specifica i file di origine nella revisione che vanno copiati e la cartella di destinazione su ogni istanza. La sezione relativa agli hook specifica il percorso degli script (ad esempio i percorsi relativi che iniziano dalla directory root del bundle di revisione) da eseguire durante ciascuna fase della distribuzione. Ogni fase della distribuzione è un evento del ciclo di vita della distribuzione. Di seguito è disponibile un esempio di file AppSpec. Per ulteriori informazioni su un file AppSpec, incluse tutte le opzioni che possono essere specificate, vedere AppSpec File Reference.
os: linux
file:
# Puoi specificare una o più mappature nella sezione dei file.
- origine: /
destinazione: /var/www/html/WordPress
hook:
# La sezione degli hook del ciclo di vita permette di specificare gli script di distribuzione.
ApplicationStop:
# Fase 1: arresto di Apache e MySQL se in esecuzione.
- ubicazione: helper_scripts/stop_server.sh
BeforeInstall:
# Fase 2: installazione di Apache e MySQL.
# Si possono specificare uno o più script per evento di ciclo di vita di distribuzione.
- percorso: deploy_hooks/puppet-apply-apache.sh
- percorso: deploy_hooks/puppet-apply-mysql.sh
AfterInstall:
# Fase 3: Impostazione dei permessi.
- percorso: deploy_hooks /change_permissions.sh
timeout: 30
runas: root
# Fase 4: avvio del server.
- percorso: helper_scripts/stop_server.sh
timeout: 30
runas: root
Una distribuzione passa attraverso una serie di fasi predefinite chiamate eventi del ciclo di vita di distribuzione. Un evento del ciclo di vita di distribuzione offre la possibilità di eseguire del codice nell'ambito della distribuzione. La tabella seguente elenca i diversi eventi del ciclo di vita di distribuzione attualmente supportati, nell’ordine di esecuzione, insieme a esempi di quando possono essere usati.
Eventi del ciclo di vita di distribuzione:
- ApplicationStop
-
È il primo evento del ciclo di vita di distribuzione; ha luogo prima ancora che la revisione venga scaricata. Il file AppSpec e gli script utilizzati per questo evento del ciclo di vita di distribuzione provengono dall'ultima revisione distribuita correttamente.
L'evento del ciclo di vita di distribuzione ApplicationStop può essere usato per arrestare l'applicazione senza errori gravi o rimuovere pacchetti già installati in preparazione di una distribuzione.
-
-
DownloadBundle
-
Durante questo evento del ciclo di vita di distribuzione, l'agente copia i file di revisione in un percorso temporaneo sull'istanza. Questo evento del ciclo di vita di distribuzione viene prenotato dall'agente e non può essere utilizzato per eseguire script utente.
-
-
BeforeInstall
-
L'evento del ciclo di vita di distribuzione BeforeInstall può essere utilizzato per attività di installazione preliminare come la decrittografia di file e la creazione di backup della versione attuale.
-
-
Install
-
Durante questo evento del ciclo di vita di distribuzione, l'agente copia i file di revisione dal percorso temporaneo alla cartella di destinazione finale. Questo evento del ciclo di vita di distribuzione viene prenotato dall'agente e non può essere utilizzato per eseguire script utente.
-
-
AfterInstall
-
L'evento del ciclo di vita di distribuzione AfterInstall può essere utilizzato per attività quali la configurazione dell'applicazione o la modifica dei permessi del file.
-
-
ApplicationStart
-
In genere l'evento del ciclo di vita di distribuzione ApplicationStart viene impiegato per riavviare i servizi interrotti durante ApplicationStop.
-
-
ValidateService
-
ValidateService è l’ultimo evento del ciclo di vita di distribuzione ed è l’opportunità di verificare che la distribuzione è stata completata correttamente.
-
Nozioni di base
Apri tuttoPuoi accedere alla Console di gestione AWS e iniziare a usare AWS CodeDeploy. Se stai cercando una rapida panoramica del servizio, consulta Guida introduttiva, che include un tutorial dettagliato.
Utilizzo di AWS CodeDeploy
Apri tuttoL'istanza Amazon EC2 deve essere associata a un profilo di istanza IAM e deve eseguire un sistema operativo supportato. Per ulteriori informazioni, consulta Utilizzare un'istanza Amazon EC2 esistente.
Il diagramma seguente mostra le fasi tipiche durante una distribuzione. La creazione di un'applicazione e di un gruppo di distribuzione (vedere la sezione Concetti per una spiegazione di questi termini) sono in genere attività di configurazione una tantum per applicazione. Le operazioni ricorrenti sono il caricamento di una revisione e la sua distribuzione. Per una spiegazione dettagliata, incluse istruzioni dettagliate per ciascuna di queste attività, vedi Distribuzioni.
Non è necessaria alcuna modifica al codice. È sufficiente aggiungere un file di configurazione (chiamato file AppSpec) nella directory principale del pacchetto di revisione che specifica i file da copiare e gli script da eseguire.
Con GitHub, è possibile distribuire una revisione in formato .zip, .tar o .tar.gz dal repository direttamente nelle istanze. Con altri sistemi di controllo del codice sorgente, è possibile creare un pacchetto e caricare la revisione su un bucket Amazon S3 in formato .zip, .tar o .tar.gz e specificare il percorso in Amazon S3 al momento della distribuzione. Se l'applicazione richiede una fase di creazione di build, è necessario accertarsi che il repository GitHub o il bucket Amazon S3 contengano gli artefatti post-build. Per ulteriori informazioni sull'utilizzo di GitHub con AWS CodeDeploy, consulta la nostra pagina sulle integrazioni dei prodotti. Per ulteriori informazioni sull'utilizzo di Amazon S3 per l'archiviazione delle revisioni, consulta Push a Revision.
Lo strumento di gestione della configurazione può essere richiamato da qualunque hook di evento di ciclo di vita di distribuzione nel file AppSpec. Ad esempio, per eseguire una recipe di Chef nell'ambito di una distribuzione, è possibile indicarla nel relativo hook di evento di ciclo di vita di distribuzione nel file AppSpec. Inoltre, è possibile sfruttare il sistema di gestione della configurazione per installare l'agente AWS CodeDeploy sulle istanze. Per esempi che illustrano l'utilizzo di AWS CodeDeploy con sistemi di gestione della configurazione come Chef, Puppet, Ansible e Saltstack, consulta la nostra pagina sulle integrazioni dei prodotti.
Sì. È possibile integrare AWS CodeDeploy con sistemi di integrazione e distribuzione continua personalizzati richiamando le API pubbliche o utilizzando interfaccia a riga di comando o kit SDK AWS. Puoi trovare integrazioni ed esempi predefiniti nella nostra pagina sulle integrazioni dei prodotti.
Per estendere un'applicazione, è necessario distribuire la revisione più recente al gruppo di distribuzione per le istanze appena aggiunte. A parte le istanze di Amazon EC2 che vengono avviate come parte di un gruppo Auto Scaling, AWS CodeDeploy non distribuisce automaticamente la revisione più recente alle nuove istanze.
È possibile associare un gruppo Auto Scaling con un gruppo di distribuzione per accertare che le istanze appena avviate ottengano sempre la versione più recente dell'applicazione. Ogni volta che un'istanza di Amazon EC2 per quel gruppo Auto Scaling viene avviata, le sarà assegnato lo stato "Pending" e quindi sarà attivata la distribuzione dell'ultima revisione completata correttamente in tale istanza Amazon EC2. Se la distribuzione viene completata correttamente, lo stato dell'istanza di Amazon EC2 viene modificato in "InService". Se la distribuzione non viene completata correttamente, l'istanza di Amazon EC2 viene terminata, viene avviata una nuova istanza Amazon EC2 con stato "Pending" e viene attivata una distribuzione per l'istanza EC2 appena avviata. Per ulteriori informazioni sugli eventi del ciclo di vita delle istanze di gruppo Auto Scaling, consulta Auto Scaling Group Lifecycle.
Puoi monitorare lo stato di una distribuzione utilizzando la Console di gestione AWS, l'interfaccia a riga di comando AWS (AWS CLI), gli SDK AWS e le API AWS CodeDeploy . È possibile visualizzare lo stato generale di una distribuzione e approfondire ulteriormente per visualizzare lo stato di ciascuna istanza e lo stato di ogni evento del ciclo di vita della distribuzione per l'istanza. Si possono anche consultare le voci di log che corrispondono a un errore, facilitando il debug dei problemi di distribuzione senza dover accedere all’istanza.
Sì. Quando una distribuzione viene interrotta, il servizio AWS CodeDeploy ordina all'agente di ogni istanza di arrestare l'esecuzione di script. Per rimettere l’applicazione a uno stato di consistenza, si può distribuire di nuovo la revisione o distribuirne un’altra.
Per riportare un'applicazione a una fase precedente, è sufficiente distribuire la revisione corrispondente. AWS CodeDeploy tiene traccia dei file che sono stati copiati per la revisione corrente e li rimuove prima di iniziare una nuova distribuzione, quindi non c'è differenza fra una nuova distribuzione e un rollback. Tuttavia bisogna assicurarsi che le revisioni precedenti siano disponibili per il rollback.
Sì. Si può usare un bucket Amazon S3 con versioni multiple e specificare l’ID della versione per identificare la versione in modo univoco.
Per informazioni sui limiti del servizio, consulta Limiti. Per aumentare i limiti di servizio, invia una richiesta tramite l'AWS Support Center.
Sì. Per ricevere uno storico delle chiamate API AWS CodeDeploy effettuate sul tuo account, è sufficiente attivare AWS CloudTrail nella Console di gestione AWS.
È possibile creare notifiche per eventi che incidono sulle distribuzioni. Le notifiche arriveranno sotto forma di notifiche Amazon SNS. Ogni notifica includerà un messaggio sullo stato e un link alle risorse il cui evento ha generato la notifica in questione. Le notifiche non hanno costi aggiuntivi, ma potrebbero essere addebitati costi per altri servizi AWS utilizzati dalle notifiche, tra cui Amazon SNS. Per informazioni su come iniziare con le notifiche, consulta la guida per l'utente delle notifiche. Inoltre, i clienti che utilizzano AWS Chatbot possono configurare le notifiche da inviare ai loro canali Slack o alle chat room di Amazon Chime. Per maggiori dettagli, consulta qui.
Sicurezza
Apri tuttoSì, ma l'agente AWS CodeDeploy installato sulle istanze di Amazon EC2 deve poter accedere agli endpoint pubblici di AWS CodeDeploy e di Amazon S3. Per ulteriori informazioni, consulta AWS CodeDeploy Endpoints e Amazon S3 Endpoints.
Sì. AWS CodeDeploy supporta autorizzazioni a livello di risorsa. Per ogni risorsa AWS CodeDeploy, è possibile specificare gli utenti che hanno accesso a specifiche operazioni. Ad esempio, è possibile stabilire una policy IAM per consentire a un utente specifico di distribuire una determinata applicazione, elencando però solo le revisioni per altre applicazioni. È perciò possibile impedire agli utenti di effettuare involontariamente modifiche all'applicazione sbagliata. Per ulteriori informazioni sull'utilizzo di IAM con AWS CodeDeploy, consulta Access Permissions Reference.
Regioni
Apri tuttoFai riferimento a Prodotti e servizi regionali per i dettagli sulla disponibilità di CodeDeploy per regione.
AWS CodeDeploy permette di eseguire distribuzioni con risorse AWS situate nella stessa regione. Per distribuire un’applicazione a più regioni, si deve definire l’applicazione nelle regioni di destinazione, copiare il pacchetto di applicazione in un bucket Amazon S3 in ogni regione e iniziare le distribuzioni utilizzando un’implementazione seriale o parallela sulle regioni.
Fatturazione
Apri tuttoNon sono previsti costi aggiuntivi per le distribuzioni di codice nelle istanze Amazon EC2 tramite AWS CodeDeploy. Sarà però addebitata una tariffa di 0,02 USD per ogni aggiornamento di istanza locale eseguito tramite AWS CodeDeploy. Per maggiori dettagli, consulta la pagina dei prezzi.