Domande generali

D: Cos'è AWS CodeDeploy?
AWS 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. AWS CodeDeploy può essere impiegato per automatizzare le distribuzioni ed eliminare gli interventi manuali, più facilmente soggetti a errore; il servizio ridimensiona le proprie risorse secondo l'infrastruttura, consentendo una distribuzione efficiente sia in una sola istanza sia in migliaia di istanze.

D: A chi è rivolto AWS CodeDeploy?
AWS CodeDeploy è progettato per sviluppatori e amministratori che devono distribuire applicazioni sia in istanze Amazon EC2 sia in istanze locali. È un servizio flessibile che può anche essere impiegato per gli aggiornamenti di software o l'esecuzione di script su istanze.
 
D: Quali tipi di applicazione è possibile distribuire con AWS CodeDeploy?
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 una sintassi o un'architettura specifiche, perciò è possibile utilizzare script per qualsiasi logica di distribuzione personalizzata.
 
D: Quali sistemi operativi supporta AWS CodeDeploy?
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. Per utilizzare altri sistemi operativi, l'agente AWS CodeDeploy è disponibile come software open source in questa pagina. Per ulteriori informazioni sui sistemi operativi supportati, consulta la documentazione di AWS CodeDeploy.
 
D: È possibile utilizzare AWS CodeDeploy con una toolchain esistente?
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 relativa alle integrazione di prodotti.
 
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 sia in istanze Amazon EC2 sia in istanze locali. AWS Elastic Beanstalk e AWS OpsWorks sono soluzioni di gestione di applicazioni complete.

D: AWS CodeDeploy supporta le istanze locali?
Sì. AWS CodeDeploy supporta tutte le istanze su cui è possibile installare un agente CodeDeploy e in grado di collegarsi agli endpoint pubblici di AWS.
 
 

Nozioni di base

D: Cos'è un'applicazione ?
Un'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. Ad esempio, nel caso di un sistema distribuito di grandi dimensioni, 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 disponibile alla distribuzione, ad esempio codice sorgente, artefatti post-build, pagine Web, file eseguibili e script di distribuzione, oltre a un file AppSpec. L'agente AWS CodeDeploy può accedere a una revisione da GitHub oppure da un bucket Amazon S3.
 
D: Cos'è un gruppo di distribuzione?
Un gruppo di distribuzione è un'entità di AWS CodeDeploy per il raggrupamento di istanze EC2 o funzioni AWS Lambda in una distribuzione di CodeDepoy. In una distribuzione EC2, è un set di istanze associate a un'applicazione di destinazione per 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 il documento Working with Amazon EC2 Tags in the Console. Per ulteriori informazioni sulla distribuzione in gruppi Auto Scaling, consulta il documento Auto Scaling Integration.
 
D: Cos'è una configurazione di distribuzione?
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 su configurazioni di distribuzione, consulta la pagina Instance Health.
 
D: Quali sono i parametri necessari per una distribuzione?
I parametri che è necessario indicare per una distribuzione sono tre:
  1. Revisione: specifica l'oggetto della distribuzione.
  2. Gruppo di distribuzione: specifica dove eseguirela distribuzione.
  3. Configurazione di distribuzione: un parametro opzionale che specifica come eseguire 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. Adotta il formato YAML e va incluso nella directory root 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 sui file AppSpec, incluse tutte le opzioni selezionabili, consulta la pagina AppSpec File Reference.

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - location: helper_scripts/start_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 nell'ambito della distribuzione. La seguente tabella elenca gli eventi del ciclo di vita di distribuzione attualmente supportati, secondo il ordine di esecuzione, ed esempi di quando possono essere usati.

Eventi del ciclo di vita di distribuzione Descrizione
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 offre l'opportunità di verificare che la distribuzione sia stata completata correttamente.

Nozioni di base

D: Come si inizia a usare AWS CodeDeploy?
Per iniziare a utilizzare AWS CodeDeploy, è sufficiene accedere alla Console di gestione AWS. Per una panoramica rapida del servizio, consulta il documento Getting Started, che include un tutorial dettagliato.

Utilizzo di AWS CodeDeploy

D: Quali sono i prerequisiti per l'utilizzo di istanze Amazon EC2 esistenti con AWS CodeDeploy?
Un'istanza Amazon EC2 deve essere associata a un profilo istanza IAM e deve essere eseguita su un sistema operativo supportato. Per ulteriori informazioni, consulta il documento 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 Nozioni di base per una definizione di questi termini) sono in genere attività di configurazione una tantum. Le operazioni ricorrenti sono il caricamento di una revisione e la sua distribuzione. Per una spiegazione che includa istruzioni dettagliate per ognuna di queste attività, consulta la pagina Deployments.
 
D: In che modo è possibile eseguire l'accesso ad AWS CodeDeploy?
Per accedere ad AWS CodeDeploy è possibile utilizzare Console di gestione AWS, interfaccia a riga di comando di AWS, kit SDK AWS o API AWS CodeDeploy.
 
D: Quali modifiche è necessario apportare al codice per eseguire distribuzioni con AWS CodeDeploy?
Non è necessaria alcuna modifica al codice. È sufficiente aggiungere un file di configurazione (chiamato file AppSpec) nella directory root del bundle di revisione, che specifichi i file da copiare e gli script da eseguire.
 
D: In che modo è possibile distribuire un'applicazione dal mio sistema di controllo di codice sorgente con AWS CodeDeploy?
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 pagina relativa alle integrazioni di prodotti. Per ulteriori informazioni sull'utilizzo di Amazon S3 per la memorizzazione di revisioni, consulta la pagina Push a Revision.
 
D: In che modo è possibile utilizzare AWS CodeDeploy con uno strumento di gestione di configurazione personalizzato?
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 di utilizzo di AWS CodeDeploy con sistemi di gestione della configurazione quali Chef, Puppet, Ansible e Saltstack, consulta la pagina relativa alle integrazioni di prodotti.
 
D: È possibile usare AWS CodeDeploy con sistemi di integrazione e distribuzione continua?
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. Integrazioni ed esempi predefiniti sono disponibili nella nostra pagina relativa alle integrazioni di prodotti.
 
D: In che modo è possibile estendere un'applicazione a istanze appena aggiunte a un gruppo di distribuzione?
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 in un gruppo Auto Scaling, AWS CodeDeploy non distribuisce automaticamente la revisione più recente nelle nuove istanze.
 
D: In che modo è possibile utilizzare AWS CodeDeploy con Auto Scaling?
È 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 di ciclo di vita di istanze dei gruppi Auto Scaling, consulta il documento Auto Scaling Group Lifecycle.
 
D: In che modo è possibile consultare lo stato di una distribuzione?
Lo stato di una distribuzione può essere visualizzato tramite Console di gestione AWS, interfaccia a riga di comando, kit SDK AWS e API AWS CodeDeploy. Sarà possibile consultare lo stato generale della distribuzione ed eseguire un drill-down per visionare lo stato di ogni istanza e di ogni evento di ciclo di vita di distribuzione. È anche possibile consultare le voci di log che corrispondono a un errore, facilitando il debug dei problemi di distribuzione senza dover accedere all'istanza.
 
D: È possibile interrompere una distribuzione in corso?
Sì. Quando una distribuzione viene interrotta, il servizio AWS CodeDeploy ordina all'agente di ogni istanza di arrestare l'esecuzione di script. Per reimpostare l'applicazione in uno stato di consistenza, è possibile distribuire nuovamente la revisione oppure selezionarne una differente da distribuire.
 
D: In che modo è possibile riportare un'applicazione a una fase precedente?
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 è necessario accertare che le revisioni precedenti siano disponibili per il rollback.
 
D: È possibile utilizzare un bucket Amazon S3 con versioni multiple per memorizzare le revisioni?
Sì. È possibile utilizzare un bucket Amazon S3 con versioni multiple e specificare l'ID della versione per identificare la versione in modo univoco.
 
D: Quali restrizioni sono previste all'utilizzo di AWS CodeDeploy?
Per informazioni sulle restrizioni al servizio, consulta la relativa pagina. Per sforare le restrizioni, invia una richiesta tramite il Centro di supporto AWS.
 
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.

Sicurezza

D: È possibile utilizzare AWS CodeDeploy per distribuire un'applicazione in istanze di Amazon EC2 in esecuzione in un cloud privato virtuale VPC?
Sì, 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 i documenti AWS CodeDeploy Endpoints e Amazon S3 Endpoints.

D: È possibile utilizzare AWS Identity and Access Management (IAM) per gestire l'accesso ad AWS CodeDeploy?
Sì. AWS CodeDeploy supporta le 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 il documento Access Permissions Reference.

Regioni

D: In quali regioni è disponibile AWS CodeDeploy?
Per informazioni sulla disponibilità di CodeDeploy, consulta la sezione relativa a prodotti e servizi per regione.

D: In che modo è possibile distribuire un'applicazione AWS CodeDeploy su più regioni?
AWS CodeDeploy permette di eseguire distribuzioni con risorse AWS situate nella stessa regione. Per distribuire un'applicazione su più regioni, è necessario definire l'applicazione nelle regioni di destinazione, copiare il bundle dell'applicazione in un bucket Amazon S3 in ciascuna regione e avviare le distribuzioni tramite implementazione in serie o in parallelo.

Fatturazione

D: Quanto costa AWS CodeDeploy?
Non 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 il servizio. Per ulteriori informazioni, consulta la pagina dei prezzi.

Esplora le integrazioni per AWS CodeDeploy

Consulta la pagina sulle integrazioni di prodotti
Ti senti pronto?
Inizia a usare AWS CodeDeploy
Hai altre domande?
Contattaci