

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à.

# Spiegazione passo per passo: creazione di una pipeline per stack di test e produzione
<a name="continuous-delivery-codepipeline-basic-walkthrough"></a>

Immagina un processo di rilascio in cui invii un CloudFormation modello, che CloudFormation poi viene utilizzato per creare automaticamente uno stack di test. Dopo avere esaminato lo stack di test, puoi visualizzare in anteprima gli effetti delle modifiche apportate allo stack e decidere se implementarle. Per realizzare questo flusso di lavoro, puoi CloudFormation creare lo stack di test, eliminare lo stack di test, creare un set di modifiche e quindi eseguire il set di modifiche. Tuttavia ciascuna operazione prevede l'interazione manuale con CloudFormation. In questa procedura dettagliata, creeremo una CodePipeline pipeline che automatizza molte di queste azioni, aiutandoti a ottenere un flusso di lavoro di distribuzione continua con i tuoi stack. CloudFormation 

## Prerequisiti
<a name="w2aac21c11b5"></a>

Questa procedura dettagliata presuppone che tu abbia utilizzato CodePipeline e sappia come funzionano le pipeline CloudFormation, i modelli e gli stack. AWS CloudFormation [Per ulteriori informazioni in merito CodePipeline, consulta la Guida per l'utente.AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) È inoltre necessario disporre di un bucket Amazon S3 nello stesso in Regione AWS cui si crea la pipeline.

**Importante**  
Il WordPress modello di esempio crea un'istanza EC2 che richiede una connessione a Internet. Verifica che la sottorete e il VPC predefiniti consentano il traffico in Internet.

## Panoramica della spiegazione passo per passo
<a name="w2aac21c11b7"></a>

Questa procedura dettagliata crea una pipeline per un sito di esempio WordPress in uno stack. La pipeline è suddivisa in tre fasi. Ogni fase deve contenere almeno un’operazione, ovvero un’attività eseguita dalla pipeline sul tuo artefatto (il tuo input). Una fase organizza le operazioni in una pipeline. CodePipeline deve completare tutte le operazioni in una fase prima che la fase elabori nuovi artefatti, ad esempio, se è stato inviato un nuovo input per eseguire nuovamente la pipeline.

Al termine di questa procedura guidata, avrai una pipeline che esegue il flusso di elaborazione seguente:

1. La prima fase della pipeline recupera un elemento sorgente (un CloudFormation modello e i relativi file di configurazione) da un repository.

   Preparerai un artefatto che include un WordPress modello di esempio e lo caricherai in un bucket S3.

1. Nella seconda fase la pipeline crea uno stack di test e attende la tua approvazione.

   Dopo avere esaminato lo stack di test, puoi scegliere di continuare con la pipeline originale o di creare e inviare un altro artefatto per apportare modifiche. Se approvi, questa fase elimina lo stack di test e la pipeline procede con la fase successiva.

1. Nella terza fase la pipeline crea un set di modifiche su uno stack di produzione e attende la tua approvazione.

   Nell’esecuzione iniziale non avrai uno stack di produzione. Il set di modifiche mostra tutte le risorse che verranno create. CloudFormation Se approvi, questa fase esegue il set di modifiche e crea il tuo stack di produzione.

**Nota**  
CloudFormation è un servizio gratuito. Tuttavia, ti verranno addebitati i costi per le AWS risorse, come l'istanza EC2, che includi nel tuo stack alla tariffa corrente per ciascuna di esse. [Per ulteriori informazioni sui AWS prezzi, consulta la pagina dei dettagli di ciascun prodotto all'indirizzo http://aws.amazon.com.](https://aws.amazon.com/)

## Fase 1: modifica dell’artefatto e caricamento in un bucket S3
<a name="w2aac21c11b9"></a>

Prima di creare la pipeline, è necessario configurare l'archivio e i file di origine. CodePipelinecopia questi file sorgente nell'[archivio degli artefatti](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-artifacts) della pipeline e quindi li usa per eseguire azioni nella pipeline, come la creazione di uno stack. CloudFormation 

Quando utilizzi Amazon Simple Storage Service (Amazon S3) come repository di origine CodePipeline , è necessario comprimere i file sorgente prima di caricarli in un bucket S3. Il file compresso è un CodePipeline artefatto che può contenere un modello, un file di configurazione del CloudFormation modello o entrambi. Forniamo un artefatto che contiene un modello di esempio e due file di configurazione del WordPress modello. I due file di configurazione specificano i valori dei parametri per il WordPress modello. CodePipeline li usa quando crea gli WordPress stack. Un file contiene i valori dei parametri per uno stack di test, l’altro per uno stack di produzione. È necessario modificare i file di configurazione, ad esempio specificare un nome di coppia di chiavi EC2 esistente di tua proprietà. Per ulteriori informazioni sugli artefatti, vedi [CloudFormation artefatti](continuous-delivery-codepipeline-cfn-artifacts.md).

Dopo aver creato il tuo artefatto, potrai caricarlo in un bucket S3.

**Per modificare e caricare l’artefatto**

1. Scarica e apri l'artefatto di esempio: [https://s3.amazonaws.com/cloudformation-examples/user](https://s3.amazonaws.com/cloudformation-examples/user-guide/continuous-deployment/wordpress-single-instance.zip) - -single-instance.zip. guide/continuous-deployment/wordpress

   L’artefatto contiene tre file:
   + Il modello di esempio WordPress : `wordpress-single-instance.yaml`
   + Il file di configurazione del modello per lo stack di test: `test-stack-configuration.json` 
   + Il file di configurazione del modello per lo stack di produzione: `prod-stack-configuration.json`

1. Estrarre tutti i file e utilizzare un editor di testo per modificare i file di configurazione del modello.

   Apri i file di configurazione per vedere che contengono coppie chiave-valore che corrispondono ai parametri del WordPress modello. I file di configurazione specificano i valori dei parametri utilizzati dalla tua pipeline quando crea gli stack di test e di produzione.

   Modificare il ile `test-stack-configuration.json` per specificare i valori dei parametri per lo stack di test e il file `prod-stack-configuration.json` per lo stack di produzione.
   + Cambia i valori `DBPassword` e le `DBRootPassword` chiavi in password che puoi usare per accedere al tuo database. WordPress Come definito nel WordPress modello, i valori dei parametri devono contenere solo caratteri alfanumerici.
   + Cambiare il valore della chiave `KeyName` in un nome di coppia di chiavi EC2 esistente in cui si crea la pipeline.

1. Aggiungere i file di configurazione modificati al file di artefatto originale (`.zip`), sostituendo i file duplicati.

   A questo punto hai un artefatto personalizzato che puoi caricare in un bucket S3.

1. [Caricare l’artefatto in un bucket S3 di cui si è proprietari](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

   Prendere nota della posizione del file. Si dovrà specificare il percorso di questo file quando si creerà la pipeline.

   Note sugli artefatti e sul bucket S3:
   + Usa un bucket che si trova nella stessa AWS regione in cui creerai la pipeline.
   + CodePipeline [richiede che il bucket sia abilitato al controllo delle versioni.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/versioning-workflows.html)
   + Puoi anche utilizzare servizi che non richiedono di comprimere i file prima di caricarli, ad esempio nel tuo GitHub repository CodeCommit di origine.
   + Gli artefatti possono contenere informazioni sensibili, ad esempio password. Limitare l’accesso in modo che solo gli utenti autorizzati possano visualizzare il file. Quando lo fai, assicurati che CodePipeline possa ancora accedere al file. Ad esempio, se carichi l’artefatto su un bucket S3, utilizza le [policy del bucket S3 o le policy utente](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html) per limitare l’accesso.

Ora hai un artefatto che CodePipeline può entrare nella tua pipeline. Nel passaggio successivo, specificherai la posizione dell'artefatto e costruirai la pipeline. WordPress 

## Fase 2: creazione dello stack della pipeline
<a name="w2aac21c11c11"></a>

Per creare la WordPress pipeline, utilizzerai un modello di esempio. CloudFormation Oltre a creare la pipeline, il modello imposta i ruoli di servizio AWS Identity and Access Management (IAM) per CodePipeline e CloudFormation, un bucket S3 per l' CodePipeline artifact store e un argomento Amazon Simple Notification Service (Amazon SNS) a cui la pipeline invia notifiche, ad esempio notifiche sulle recensioni. Il modello di esempio semplifica il provisioning e la configurazione di queste risorse in un unico stack. CloudFormation 

Per ulteriori dettagli sulla configurazione della pipeline, vedi [Operazioni della pipeline](#codepipeline-basic-walkthrough-template-details).

**Importante**  
Il WordPress modello di esempio crea un'istanza EC2 che richiede una connessione a Internet. Verifica che la sottorete e il VPC predefiniti consentano il traffico in Internet.

**Per creare lo stack della pipeline**

1. Scarica il modello di esempio all'indirizzo [https://s3.amazonaws.com/cloudformation-examples/user- guide/continuous-deployment/basic -pipeline.yml](https://s3.amazonaws.com/cloudformation-examples/user-guide/continuous-deployment/basic-pipeline.yml). Salvarlo sul computer.

1. Apri la console all'indirizzo. CloudFormation [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/)

1. Scegli una AWS regione che supporti CodePipeline e CloudFormation.

   Per ulteriori informazioni, consulta [CodePipeline endpoint e quote](https://docs.aws.amazon.com/general/latest/gr/codepipeline.html) e [CloudFormation endpoint e quote](https://docs.aws.amazon.com/general/latest/gr/cfn.html) in. *Riferimenti generali di AWS*

1. Seleziona **Crea stack**.

1. In **Specify template (Specifica modello)**, scegli **Upload a template file (Carica un file modello)**, quindi scegli il modello appena scaricato, `basic-pipeline.yml`.

1. Scegli **Next (Successivo)**.

1. Per **Stack name (Nome stack)**, digitare `sample-WordPress-pipeline`.

1. Nella sezione **Parameters (Parametri)** specificare i seguenti valori di parametro, quindi selezionare **Next (Avanti)**. Quando impostate i parametri dello stack, se avete mantenuto gli stessi nomi per il WordPress modello e i relativi file di configurazione, potete utilizzare i valori predefiniti. In caso contrario, specificare i nomi file utilizzati.  
**PipelineName**  
Il nome della pipeline, ad esempio `WordPress-test-pipeline`.  
**S3Bucket**  
Nome del bucket S3 in cui hai salvato il tuo artefatto (file `.zip`).  
**SourceS3Key**  
Nome file dell’artefatto. Se hai salvato l’artefatto in una cartella, includila come parte del nome file, ad esempio `folder/subfolder/wordpress-single-instance.zip`.  
**E-mail**  
L'indirizzo e-mail a cui CodePipeline invia la notifica della pipeline, ad esempio. `myemail@example.com`

1. Per questa procedura guidata, non è necessario aggiungere tag o specificare impostazioni avanzate, quindi selezionare **Next (Avanti)**.

1. Assicurarsi che il nome dello stack e l’URL del modello siano corretti e scegliere **Create stack (Crea stack)**.

1. Per confermare che sei a conoscenza del fatto che CloudFormation potrebbe creare risorse IAM, seleziona la casella di controllo.

La creazione del tuo stack potrebbe richiedere alcuni minuti. AWS CloudFormation È possibile controllare l’avanzamento negli eventi per lo stack. Per ulteriori informazioni, consulta [Monitoraggio dell’avanzamento dello stack](monitor-stack-progress.md).

Dopo aver creato lo stack, CodePipeline avvia la nuova pipeline. Per visualizzarne lo stato, vedi la [console CodePipeline ](https://console.aws.amazon.com/codepipeline/). **Dall'elenco delle pipeline, scegli -test-pipeline. WordPress**

### Operazioni della pipeline
<a name="codepipeline-basic-walkthrough-template-details"></a>

Questa sezione spiega le tre fasi della pipeline, utilizzando frammenti del modello di pipeline di esempio. WordPress 

#### Fase 1: origine
<a name="w2aac21c11c11c15b5"></a>

La prima fase della pipeline è una fase di origine in cui si specifica la posizione del codice sorgente. Ogni volta che invii una revisione a questa posizione, riesegue la pipeline. CodePipeline 

Il codice sorgente si trova in un bucket S3 e viene identificato dal relativo nome file. Questi valori sono stati specificati come valori dei parametri di input al momento della creazione dello stack della pipeline. Per consentire l’utilizzo dell’artefatto di origine nelle fasi successive, il frammento specifica la proprietà `OutputArtifacts` con il nome `TemplateSource`. Per utilizzare questo artefatto nelle fasi successive, è necessario specificare `TemplateSource` come artefatto di input.

```
- Name: S3Source
  Actions:
    - Name: TemplateSource
      ActionTypeId:
        Category: Source
        Owner: AWS
        Provider: S3
        Version: '1'
      Configuration:
        S3Bucket: !Ref 'S3Bucket'
        S3ObjectKey: !Ref 'SourceS3Key'
      OutputArtifacts:
        - Name: TemplateSource
```

#### Fase 2: TestStage
<a name="w2aac21c11c11c15b7"></a>

Nella fase `TestStage` la pipeline crea lo stack di test, attende l’approvazione, quindi elimina lo stack di test.

Per l'`CreateStack`azione, la pipeline utilizza il file e il WordPress modello di configurazione del test per creare lo stack di test. Entrambi i file sono contenuti nell’artefatto di input `TemplateSource`, che viene introdotto dalla fase di origine. Il frammento utilizza la modalità di operazione `REPLACE_ON_FAILURE`. Se si la creazione dello stack non riesce la pipeline lo sostituisce, in questo modo non è più necessario eseguire la pulizia o risolvere i problemi dello stack prima di poter eseguire nuovamente la pipeline. La modalità di operazione è utile per effettuare in modo rapido iterazioni sugli stack di test. Per la `RoleArn` proprietà, il valore è un ruolo AWS CloudFormation di servizio dichiarato altrove nel modello.

L’operazione `ApproveTestStack` sospende la pipeline e invia una notifica all’indirizzo e-mail da te indicato al momento della creazione dello stack della pipeline. Mentre la pipeline è in pausa, puoi controllare lo stack di WordPress test e le sue risorse. Utilizzare CodePipeline per [approvare o](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html) rifiutare questa azione. La proprietà `CustomData` include una descrizione dell’operazione che stai approvando, che la pipeline aggiunge all’e-mail di notifica.

Dopo aver approvato questa azione, CodePipeline passa all'`DeleteTestStack`azione ed elimina lo WordPress stack di test e le relative risorse.

```
- Name: TestStage
  Actions:
    - Name: CreateStack
      ActionTypeId:
        Category: Deploy
        Owner: AWS
        Provider: CloudFormation
        Version: '1'
      InputArtifacts:
        - Name: TemplateSource
      Configuration:
        ActionMode: REPLACE_ON_FAILURE
        RoleArn: !GetAtt [CFNRole, Arn]
        StackName: !Ref TestStackName
        TemplateConfiguration: !Sub "TemplateSource::${TestStackConfig}"
        TemplatePath: !Sub "TemplateSource::${TemplateFileName}"
      RunOrder: '1'
    - Name: ApproveTestStack
      ActionTypeId:
        Category: Approval
        Owner: AWS
        Provider: Manual
        Version: '1'
      Configuration:
        NotificationArn: !Ref CodePipelineSNSTopic
        CustomData: !Sub 'Do you want to create a change set against the production stack and delete the ${TestStackName} stack?'
      RunOrder: '2'
    - Name: DeleteTestStack
      ActionTypeId:
        Category: Deploy
        Owner: AWS
        Provider: CloudFormation
        Version: '1'
      Configuration:
        ActionMode: DELETE_ONLY
        RoleArn: !GetAtt [CFNRole, Arn]
        StackName: !Ref TestStackName
      RunOrder: '3'
```

#### Fase 3: ProdStage
<a name="w2aac21c11c11c15b9"></a>

La fase `ProdStage` della pipeline crea un set di modifiche sullo stack di produzione esistente, attende l’approvazione, quindi esegue il set di modifiche.

Un set di modifiche fornisce un'anteprima di tutte le modifiche che AWS CloudFormation verranno apportate allo stack di produzione prima di implementarle. Sulla prima pipeline eseguita non avrai uno stack di produzione in esecuzione. Il set di modifiche mostra le azioni AWS CloudFormation eseguite durante la creazione dello stack di test. Per creare il set di modifiche, l'`CreateChangeSet`azione utilizza il modello di WordPress esempio e la configurazione del modello di produzione dall'elemento `TemplateSource` di input.

Analogamente alla fase precedente, l’operazione `ApproveChangeSet` sospende la pipeline e invia una notifica e-mail. Mentre la pipeline è in pausa, è possibile visualizzare il set di modifiche per verificare tutte le modifiche proposte allo stack di produzione. WordPress CodePipeline Utilizzatelo per [approvare o rifiutare](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html) questa azione rispettivamente per continuare o arrestare la pipeline.

Dopo aver approvato questa azione, l'`ExecuteChangeSet`azione esegue il set di modifiche, in modo da AWS CloudFormation eseguire tutte le azioni descritte nel set di modifiche. Per l'esecuzione iniziale, AWS CloudFormation crea lo stack di WordPress produzione. Con le esecuzioni successive AWS CloudFormation aggiorna lo stack.

```
- Name: ProdStage
  Actions:
    - Name: CreateChangeSet
      ActionTypeId:
        Category: Deploy
        Owner: AWS
        Provider: CloudFormation
        Version: '1'
      InputArtifacts:
        - Name: TemplateSource
      Configuration:
        ActionMode: CHANGE_SET_REPLACE
        RoleArn: !GetAtt [CFNRole, Arn]
        StackName: !Ref ProdStackName
        ChangeSetName: !Ref ChangeSetName
        TemplateConfiguration: !Sub "TemplateSource::${ProdStackConfig}"
        TemplatePath: !Sub "TemplateSource::${TemplateFileName}"
      RunOrder: '1'
    - Name: ApproveChangeSet
      ActionTypeId:
        Category: Approval
        Owner: AWS
        Provider: Manual
        Version: '1'
      Configuration:
        NotificationArn: !Ref CodePipelineSNSTopic
        CustomData: !Sub 'A new change set was created for the ${ProdStackName} stack. Do you want to implement the changes?'
      RunOrder: '2'
    - Name: ExecuteChangeSet
      ActionTypeId:
        Category: Deploy
        Owner: AWS
        Provider: CloudFormation
        Version: '1'
      Configuration:
        ActionMode: CHANGE_SET_EXECUTE
        ChangeSetName: !Ref ChangeSetName
        RoleArn: !GetAtt [CFNRole, Arn]
        StackName: !Ref ProdStackName
      RunOrder: '3'
```

## Fase 3: Visualizza lo stack WordPress
<a name="w2aac21c11c13"></a>

Durante CodePipeline la pipeline, viene utilizzato CloudFormation per creare stack di test e produzione. Per vedere lo stato di questi stack e il loro output, usa la console. CloudFormation 

**Per visualizzare uno stack**

1. Apri la CloudFormation console all'indirizzo [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

1. A seconda che la pipeline sia in fase di test o di produzione, scegliere lo stack `Test-MyWordPressSite` o `Prod-MyWordPressSite`.

1. Per controllare lo stato dello stack, visualizzare gli [eventi](cfn-console-view-stack-data-resources.md) dello stack.

Se lo stack si trova nello stato non riuscito, visualizzare il motivo per individuare l’errore. Correggere l’errore ed eseguire nuovamente la pipeline. Se lo stack è nello `CREATE_COMPLETE` stato, visualizza i suoi output per ottenere l'URL del tuo WordPress sito.

Lo hai utilizzato con successo CodePipeline per creare un flusso di lavoro di distribuzione continua per un sito di esempio WordPress . Se invii modifiche al bucket S3, rileva CodePipeline automaticamente una nuova versione e quindi riesegue la pipeline. Questo flusso di elaborazione semplifica l’invio e il test delle modifiche prima di apportare modifiche al sito di produzione.

## Fase 4: Eliminazione delle risorse
<a name="w2aac21c11c15"></a>

Per essere sicuro che non ti vengano addebitati servizi indesiderati, elimina le risorse.

**Importante**  
Elimina gli stack di test e produzione WordPress prima di eliminare lo stack di pipeline. Lo stack di pipeline contiene un ruolo di servizio necessario per eliminare gli stack. WordPress Se hai eliminato prima lo stack di pipeline, puoi associare un altro ruolo di servizio Amazon Resource Name (ARN) agli WordPress stack e quindi eliminarli.

**Per eliminare oggetti nello store degli artefatti**

1. Apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Scegli il bucket S3 CodePipeline utilizzato come archivio degli artefatti della tua pipeline.

   Il nome del bucket segue il formato: `{{stackname-artifactstorebucket-id}}`. Se è stata seguita questa procedura guidata, il nome del bucket potrebbe essere simile all’esempio seguente: `sample-WordPress-pipeline-artifactstorebucket-12345abcd12345`.

1. Eliminare tutti gli oggetti nel bucket S3 dello store di artefatti.

   Quando si elimina lo stack della pipeline nella fase successiva, questo bucket deve essere vuoto. Altrimenti, CloudFormation non sarà possibile eliminare il bucket.

**Per eliminare gli stack**

1. Dalla CloudFormation console, scegli lo stack che desideri eliminare.

   Se gli WordPress stack creati dalla pipeline sono ancora in esecuzione, sceglili prima. Per impostazione predefinita, i nomi degli stack sono `Test-MyWordPressSite` e `Prod-MyWordPressSite`.

   Se hai già eliminato gli WordPress stack, scegli lo stack. `sample-WordPress-pipeline`

1. Scegliere **Actions (Operazioni)**, quindi **Delete Stack (Elimina stack)**.

1. Nel messaggio di conferma, scegliere **Yes, Delete (Sì, elimina)**.

CloudFormation elimina lo stack con tutte le risorse dello stack, come l'istanza EC2, l'argomento della notifica, il ruolo di servizio e la pipeline.

Ora che hai capito come creare un CloudFormation flusso di lavoro di base CodePipeline, puoi utilizzare il modello di esempio e gli artefatti come punto di partenza per crearne uno personalizzato.

## Consulta anche
<a name="w2aac21c11c17"></a>

Le risorse correlate seguenti possono rivelarsi utili durante l’utilizzo di questi parametri.
+ *Per ulteriori informazioni sui parametri di CloudFormation azione in CodePipeline, consulta il [riferimento alla configurazione dell'azione di CloudFormation distribuzione](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html) nella Guida per l'AWS CodePipeline utente.*
+ Per i valori del modello di esempio per provider di operazioni, ad esempio per il campo `Owner` o i campi `configuration`, consulta il [Riferimento per la struttura delle operazioni](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html) nella *Guida per l’utente di AWS CodePipeline *.
+ Per scaricare modelli di stack di pipeline di esempio in formato YAML o JSON, consulta [Tutorial: Create a pipeline with CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html) nella *Guida per l’utente di AWS CodePipeline *.