D: Cos'è AWS CodeDeploy?
AWS CodeDeploy è un servizio che automatizza l'implementazione di software in ogni istanza, incluse le istanze di Amazon EC2 e le istanze eseguite localmente. AWS CodeDeploy semplifica le operazioni di distribuzione di nuove funzionalità, consente di evitare i tempi di inattività durante l'implementazione 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.

D: A chi è rivolto AWS CodeDeploy?
AWS CodeDeploy è progettato per sviluppatori e amministratori che devono distribuire applicazioni a qualunque istanza, fra cui le istanze di Amazon EC2 e le istanze eseguite localmente. È un servizio flessibile e può anche essere usato per gli aggiornamenti di software o l’esecuzione di script su istanze.

D: Quali tipi di applicazione possono essere distribuiti con AWS CodeDeploy?
AWS CodeDeploy può essere utilizzato per distribuire qualunque tipo di applicazione. Per utilizzare AWS CodeDeploy, bisogna 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.

D: Quali sistemi operativi supporta AWS CodeDeploy?
AWS CodeDeploy supporta un’ampia gamma di sistemi operativi. AWS CodeDeploy fornisce agenti che sono stati testati su Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server e Microsoft Windows Server. Per utilizzare altri sistemi operativi, l’agente AWS CodeDeploy è disponibile come software open source su questa pagina. Per ulteriori informazioni sul supporto di sistemi operativi, consulta la documentazione di AWS CodeDeploy.

D: AWS CodeDeploy può funzionare con la mia toolchain esistente?
Sì. AWS CodeDeploy funziona con numerosi sistemi di gestione della configurazione, sistemi di integrazione continua e distribuzione continua e sistemi di controllo del codice sorgente. Per ulteriori informazioni, consulta la pagina di integrazione del prodotto.

D: Qual è la differenza fra AWS CodeDeploy e altri servizi di distribuzione e gestione di AWS come AWS Elastic Beanstalk e AWS OpsWorks?
AWS CodeDeploy è un servizio di base destinato ad aiutare gli sviluppatori a distribuire e aggiornare software su qualunque istanza, fra cui le istanze di Amazon EC2 e le istanze eseguite localmente. AWS Elastic Beanstalk e AWS OpsWorks sono soluzioni di gestione dell’applicazione complete.

D: AWS CodeDeploy supporta le istanze locali?
Sì. AWS CodeDeploy supporta qualunque istanza che può installare un agente CodeDeploy e collegarsi agli endpoint pubblici di AWS.

 

D: Cos'è un'applicazione ?
Un’applicazione è una raccolta di software e configurazioni da distribuire a un gruppo di istanze. Di solito le istanze di un 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.

D: Che cos'è una revisione?
Una revisione è una versione specifica di contenuto distribuibile, come codice sorgente, elementi post-build, 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.

D: Cos'è un gruppo di distribuzione?
Un gruppo di distribuzione è un gruppo di istanze associate all’applicazione di destinazione di una distribuzione. Si possono aggiungere istanze a un gruppo di distribuzione specificando un tag, un nome di gruppo Auto Scaling o entrambi. Si possono definire più gruppi di distribuzione per un’applicazione, come ad esempio gestione temporanea e produzione. Per informazioni sui tag, consulta Working with Amazon EC2 Tags in the Console. Per ulteriori informazioni sulla distribuzione ai gruppi Auto Scaling, consulta Auto Scaling Integration.

D: Cos’è una configurazione di distribuzione?
Una configurazione di distribuzione è una restrizione che determina il progresso di una distribuzione attraverso le istanze in un gruppo di distribuzione. Si può utilizzare una configurazione di distribuzione per effettuare distribuzioni senza tempi di inattività a gruppi di distribuzione multi-istanza. Per esempio, se la tua applicazione necessita almeno il 50% delle istanze in un gruppo di distribuzione per funzionare ed essere utilizzata per il traffico, puoi specificarlo nella tua configurazione di distribuzione in modo che la distribuzione non provochi tempi di inattività. Se nessuna configurazione di distribuzione è associata alla distribuzione o al gruppo di distribuzione, per impostazione predefinita AWS CodeDeploy distribuirà un’istanza alla volta. Per ulteriori informazioni sulla configurazione di distribuzione, leggi la pagina Instance Health.

D: Di quali parametri ho bisogno per specificare una distribuzione?
Ci sono tre parametri da specificare per una distribuzione:

  1. Revisione: specifica quello che va distribuito
  2. Gruppo di distribuzione: specifica dove effettuare la distribuzione. 
  3. Configurazione di distribuzione: un parametro opzionale che specifica come effettuare la distribuzione.
D: Cos’è un file AppSpec?
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 va incluso nella directory radice della revisione. Il file AppSpec è utilizzato dall’agente AWS CodeDeploy e consiste in due sezioni. La sezione dei file specifica i file di origine nella revisione che vanno copiati e la cartella di destinazione su ogni istanza. La sezione degli hook specifica l’ubicazione (come percorsi relativi che iniziano dalla radice del pacchetto di revisione) degli script da eseguire durante ciascuna fase della distribuzione. Ogni fase della distribuzione è chiamata evento del ciclo di vita della distribuzione. Di seguito trovi un esempio di file AppSpec. Per ulteriori informazioni sul file AppSpec, incluse tutte le opzioni che possono essere specificate, consulta la pagina AppSpec File Reference.

versione: 0.0

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

D: Cosa sono gli eventi del ciclo di vita di distribuzione?
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 come parte 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 Descrizione
ApplicationStop

Questo è il primo evento del ciclo di vita di distribuzione che 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 di utente.
BeforeInstall L’evento del ciclo di vita di distribuzione BeforeInstall può essere utilizzato per attività di preinstallazione come la decrittografia di file e la creazione di backup della versione attuale.
Installazione 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 di 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 Di solito si utilizza l’evento del ciclo di vita di distribuzione ApplicationStart 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.

D: Come si inizia a usare AWS CodeDeploy?
Puoi accedere alla Console di gestione AWS e iniziare a usare AWS CodeDeploy. Se desideri una rapida introduzione al servizio, consulta la guida Nozioni di base, che include un tutorial dettagliato.

D: Quali sono i prerequisiti per utilizzare un’istanza di Amazon EC2 con AWS CodeDeploy?
L’istanza di Amazon EC2 deve essere associata a un profilo di istanza IAM e deve essere eseguita su un sistema operativo supportato. Per ulteriori informazioni, leggi Use an Existing Amazon EC2 Instance.

D: Quali sono le fasi tipiche della distribuzione di un’applicazione con AWS CodeDeploy?
Il diagramma seguente mostra le fasi tipiche durante una distribuzione. La creazione di un’applicazione e di un gruppo di distribuzione (consulta la sezione Concetti per una definizione di questi termini) sono attività di configurazione singole tipiche. Le operazioni ricorrenti sono il carico di una revisione e la sua distribuzione. Per una spiegazione che includa istruzioni dettagliate per ognuna di queste attività, consulta la pagina Deployments.

D: Come si esegue l'accesso ad AWS CodeDeploy?
Si può accedere ad AWS CodeDeploy utilizzando la Console di gestione AWS, l'interfaccia a riga di comando di AWS (CLI di AWS), gli SDK di AWS e le API AWS CodeDeploy.

D: Quali modifiche devo effettuare al mio codice per effettuare distribuzioni con AWS CodeDeploy?
Non c’è bisogno di modificare il codice. Basta aggiungere un file di configurazione (chiamato file AppSpec nella directory radice del tuo pacchetto di revisione che specifica i file da copiare e gli script da eseguire.

D: Come posso distribuire un’applicazione dal mio sistema di controllo di codice sorgente con AWS CodeDeploy?
Se utilizzi GitHub, puoi distribuire una revisione in formato .zip, .tar o .tar.gz dal tuo repository direttamente alle istanze. Per altri sistemi di controllo di codice sorgente, puoi creare un pacchetto e caricare la revisione su un bucket Amazon S3 in formato .zip, .tar o .tar.gz e specificare il percorso di Amazon S3 al momento della distribuzione. Se l’applicazione necessita una fase di compilazione, assicurati che il repository GitHub o il bucket Amazon S3 contenga gli elementi post-build. For ulteriori informazioni sull’utilizzo di GitHub con AWS CodeDeploy, consulta la nostra pagina sull'integrazione di prodotti. Per ulteriori informazioni sull’utilizzo di Amazon S3 per archiviare revisioni, consulta la pagina Push a Revision.

D: Come funziona AWS CodeDeploy con il mio strumento di gestione di configurazione?
Puoi chiamare il tuo strumento di gestione di configurazione da qualunque hook di evento di ciclo di vita di distribuzione nel file AppSpec. Ad esempio, se vuoi eseguire una recipe di Chef come parte di una distribuzione, puoi farlo specificandola nell’hook di evento di ciclo di vita di distribuzione appropriato nel file AppSpec. Inoltre puoi sfruttare il tuo sistema di gestione di configurazione per installare l’agente AWS CodeDeploy sulle istanze. Puoi consultare esempi che illustrano l’utilizzo di AWS CodeDeploy con sistemi di gestione di configurazione quali Chef, Puppet, Ansible e Saltstack nella nostra pagina sull'integrazione di prodotti.

D: Posso usare AWS CodeDeploy con sistemi di integrazione e distribuzione continua?
Sì. Puoi integrare AWS CodeDeploy con i tuoi sistemi di integrazione e distribuzione continua chiamando le API pubbliche o utilizzando la CLI di AWS o gli SDK di AWS. Puoi trovare integrazioni ed esempi predefiniti nella nostra pagina sull'integrazione di prodotti.

D: Come posso estendere la mia applicazione alle istanze che ho appena aggiunto al gruppo di distribuzione?
Per estendere l’applicazione, bisogna 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.

D: Come funziona AWS CodeDeploy con Auto Scaling?
Si può associare un gruppo Auto Scaling con un gruppo di distribuzione per assicurarsi che le istanze appena avviate ottengano sempre la versione più recente dell’applicazione. Ogni volta che viene avviata un’istanza di Amazon EC2 per quel gruppo Auto Scaling, verrà messa in stato Pending e poi verrà attivata la distribuzione dell’ultima revisione avvenuta correttamente su quell’istanza di Amazon EC2. Se la distribuzione viene completata correttamente, lo stato dell’istanza di Amazon EC2 cambia a InService. Se la distribuzione non viene completata correttamente, l’istanza di Amazon EC2 viene terminata, viene avviata una nuova istanza di Amazon EC2 in stato Pending e viene attivata una distribuzione per l’istanza EC2 appena avviata. Per ulteriori informazioni sugli eventi di ciclo di vita di istanze dei gruppi gruppo Auto Scaling, consulta Auto Scaling Group Lifecycle.

D: Come si consulta lo stato di una distribuzione?
Si può consultare lo stato di una distribuzione utilizzando la Console di gestione AWS, l'interfaccia a riga di comando di AWS (CLI di AWS), gli SDK di AWS e le API AWS CodeDeploy. Si può vedere lo stato generale di una distribuzione ed eseguire un drill-down per vedere lo stato di ogni istanza e di ogni evento di ciclo di vita di distribuzione. 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.

D: Posso interrompere una distribuzione in corso?
Sì. Quando si interrompe una distribuzione in corso, il servizio AWS CodeDeploy ordina all’agente di ogni istanza di smettere di eseguire gli script rimanenti. Per rimettere l’applicazione a uno stato di consistenza, si può distribuire di nuovo la revisione o distribuirne un’altra.

D: Come si riporta un’applicazione alla fase precedente?
Per riportare un’applicazione alla fase precedente, basta distribuire la revisione corrispondente. AWS CodeDeploy tiene traccia dei file che sono stati copiati per la versione attuale e li rimuove prima di iniziare una nuova distribuzione, quindi non c’è differenza fra una ridistribuzione e un rollback. Tuttavia bisogna assicurarsi che le revisioni precedenti siano disponibili per il rollback.

D: Si può usare un bucket Amazon S3 con versioni multiple per memorizzare le revisioni?
Sì. Si può usare un bucket Amazon S3 con versioni multiple e specificare l’ID della versione per identificare la versione in modo univoco.

D: Quali sono le limitazioni di servizio quando di utilizza AWS CodeDeploy?
Per informazioni sulle limitazioni di servizio, consulta le Limitazioni. Per aumentare le tue limitazioni di servizio, invia una richiesta tramite l'AWS Support Center.

D: È possibile ottenere uno storico di tutte le chiamate API AWS CodeDeploy effettuate sull'account per analizzare la sicurezza e per la risoluzione dei problemi operativi?
Sì. Per ricevere uno storico delle chiamate API AWS CodeDeploy effettuate sul tuo account, è sufficiente attivare AWS CloudTrail nella Console di gestione AWS.

Q: Posso usare AWS CodeDeploy per distribuire un’applicazione alle istanze di Amazon EC2 in esecuzione in un Amazon Virtual Private Cloud (VPC)?
Sì, ma l’agente AWS CodeDeploy installato sulle istanze di Amazon EC2 deve poter accedere agli endpoint del servizio pubblici di AWS CodeDeploy e Amazon S3. Per ulteriori informazioni, consulta gli Endpoint di AWS CodeDeploy e gli Endpoint di Amazon S3.

D: Posso utilizzare AWS Identity and Access Management (IAM) per gestire l’accesso ad AWS CodeDeploy?
Sì. AWS CodeDeploy supporta i permessi a livello di risorsa. Per ogni risorsa AWS CodeDeploy, si può specificare quale utente ha accesso e a quali operazioni. Per esempio, puoi stabilire una policy IAM per consentire a un utente di distribuire una particolare applicazione ma solo elencare le revisioni per altre applicazioni. Puoi perciò impedire agli utenti di effettuare involontariamente modifiche all’applicazione sbagliata. Per ulteriori informazioni sull’utilizzo di IAM con AWS CodeDeploy, vedi Access Permissions Reference.

D: Quali regioni supporta AWS CodeDeploy?
Per ulteriori informazioni sulla disponibilità dei servizi di CodeDeploy, consulta la sezione relativa a prodotti e servizi per regione.

D: Come si distribuisce un’applicazione AWS CodeDeploy a più regioni?
AWS CodeDeploy effettua distribuzioni con risorse AWS ubicate 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.

D: Quanto costa AWS CodeDeploy?
Non sono previsti costi aggiuntivi per le distribuzioni di codice alle istanze di Amazon EC2 tramite AWS CodeDeploy. Si pagano 0,02 USD per l’aggiornamento di un’istanza locale utilizzando AWS CodeDeploy. Per ulteriori informazioni, consulta la pagina dei prezzi.