

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 che pubblichi la tua applicazione serverless su AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Puoi utilizzarla AWS CodePipeline per fornire continuamente la tua applicazione AWS SAM serverless a. AWS Serverless Application Repository

**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 

Questo tutorial mostra come creare e configurare una pipeline per creare un'applicazione serverless ospitata su e pubblicarla automaticamente. GitHub AWS Serverless Application Repository La pipeline utilizza GitHub come provider di origine e CodeBuild come provider di build. Per pubblicare la tua applicazione serverless su AWS Serverless Application Repository, distribuisci un'[applicazione](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (da AWS Serverless Application Repository) e associ la funzione Lambda creata da quell'applicazione come provider di azioni Invoke nella tua pipeline. Quindi è possibile fornire continuamente aggiornamenti dell'applicazione a AWS Serverless Application Repository, senza scrivere alcun codice.

**Importante**  
Molte delle azioni aggiunte alla pipeline in questa procedura coinvolgono AWS risorse che è necessario creare prima di creare la pipeline. AWS le risorse per le tue azioni di origine devono sempre essere create nella stessa AWS regione in cui crei la pipeline. Ad esempio, se crei la pipeline nella regione Stati Uniti orientali (Ohio), il tuo CodeCommit repository deve trovarsi nella regione Stati Uniti orientali (Ohio).   
Puoi aggiungere azioni interregionali quando crei la pipeline. AWS le risorse per le azioni interregionali devono trovarsi nella stessa AWS regione in cui intendi eseguire l'azione. Per ulteriori informazioni, consulta [Aggiungere un'azione interregionale in CodePipeline](actions-create-cross-region.md).

## Prima di iniziare
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

In questo tutorial si presuppone quanto segue. 
+ Familiarità con [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) e [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Hai un'applicazione serverless ospitata in GitHub che hai pubblicato AWS Serverless Application Repository utilizzando la AWS SAM CLI. Per pubblicare un'applicazione di esempio su AWS Serverless Application Repository, consulta [Quick Start: Publishing Applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) nella *AWS Serverless Application Repository Developer* Guide. Per pubblicare la tua applicazione su AWS Serverless Application Repository, consulta [Pubblicazione di applicazioni utilizzando la AWS SAM CLI nella Guida](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) per gli *AWS Serverless Application Model sviluppatori*.

## Fase 1: creazione di un file buildspec.yml
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Create un `buildspec.yml` file con i seguenti contenuti e aggiungetelo al repository dell' GitHub applicazione serverless. {{template.yml}}Sostituiscilo con il AWS SAM modello dell'applicazione e {{bucketname}} con il bucket S3 in cui è archiviata l'applicazione in pacchetto.

```
version: 0.2
phases:
  install:
    runtime-versions:
        python: 3.8
  build:
    commands:
      - sam package --template-file {{template.yml}} --s3-bucket {{bucketname}} --output-template-file packaged-template.yml
artifacts:
  files:
    - packaged-template.yml
```

## Fase 2: creazione e configurazione della pipeline
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

Segui questi passaggi per creare la tua pipeline nel luogo in Regione AWS cui desideri pubblicare l'applicazione serverless.

1. Accedi a Console di gestione AWS e apri la CodePipeline console all'indirizzo. [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)

1. Se necessario, passa al Regione AWS punto in cui desideri pubblicare l'applicazione serverless.

1. Nella pagina **Welcome (Benvenuto)**, pagina **Getting started (Nozioni di base)** o pagina **Pipelines (Pipeline)**, scegliere **Create pipeline (Crea pipeline)**.

1. Nella pagina **Passaggio 1: Scegli l'opzione di creazione**, in **Opzioni di creazione**, scegli l'opzione **Crea pipeline personalizzata**. Scegli **Next (Successivo)**.

1. Scegliere **Create pipeline (Crea pipeline)**. Nella pagina **Passaggio 2: Scegli le impostazioni della pipeline**, in Nome **pipeline, inserisci il nome** della pipeline.

1. **In **Tipo di tubazione**, scegliete V2.** Per ulteriori informazioni, consulta [Tipi di tubazioni](pipeline-types.md). Scegli **Next (Successivo)**.

1. In **Ruolo di servizio**, scegli **Nuovo ruolo di servizio** per consentire la creazione CodePipeline di un ruolo di servizio in IAM.

1. Lasciare i valori predefiniti delle impostazioni in **Advanced settings (Impostazioni avanzate)**, quindi scegliere **Next (Successivo)**.

1. Nella pagina **Passaggio 3: Aggiungi fase di origine**, in **Provider di origine**, scegli **GitHub**.

1. In **Connessione**, scegli una connessione esistente o creane una nuova. Per creare o gestire una connessione per l'azione GitHub sorgente, consulta[GitHub connessioni](connections-github.md).

1. In **Repository**, scegli il tuo repository GitHub di origine.

1. In **Branch**, scegli la tua GitHub filiale.

1. Lascia le impostazioni predefinite rimanenti per l'azione di origine. Scegli **Next (Successivo)**.

1. Nella pagina **Passaggio 4: Aggiungi fase di creazione**, aggiungi una fase di creazione:

   1. In **Build provider (Provider compilazione)**, scegli **AWS CodeBuild**. Per **Region (Regione)**, utilizza la regione della pipeline.

   1. Seleziona **Crea progetto**.

   1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione.

   1. In **Environment image (Immagine ambiente)**, scegli **Managed image (Immagine gestita)**. In **Operating system** (Sistema operativo), seleziona **Ubuntu**.

   1. Per **Runtime** e **Runtime versione (Versione runtime)**, scegli il runtime e la versione richiesti per l'applicazione serverless.

   1. Per **Service Role (Ruolo del servizio)**, scegli **New service role (Nuovo ruolo del servizio)**.

   1. Per **Build specifications (Compila specifiche)**, scegli **Use a buildspec file (Usa un file buildspec)**.

   1. Scegli **Continua a CodePipeline**. In questo modo si apre la CodePipeline console e viene creato un CodeBuild progetto che utilizza la console presente `buildspec.yml` nel repository per la configurazione. Il progetto di compilazione utilizza un ruolo di servizio per gestire le Servizio AWS autorizzazioni. Questa operazione potrebbe richiedere un paio di minuti.

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

1. 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)**.

1. **Nella pagina Passaggio 6: Aggiungi fase di distribuzione, scegli Ignora fase** **di distribuzione****, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora.** Scegli **Next (Successivo)**.

1. **Nel **Passaggio 7: Revisione**, scegli Crea pipeline.** Dovresti vedere un diagramma che mostra le fasi.

1. Concedi al ruolo CodeBuild di servizio l'autorizzazione ad accedere al bucket S3 in cui è archiviata l'applicazione in pacchetto.

   1. Nella fase **Build (Compilazione)** della nuova pipeline, scegli **CodeBuild**.

   1. Seleziona la scheda **Build details (Dettagli compilazione)**.

   1. In **Ambiente**, scegli il ruolo di CodeBuild servizio per aprire la console IAM.

   1. Espandi la selezione per `CodeBuildBasePolicy` e scegli **Edit policy (Modifica policy)**.

   1. Scegli **JSON**.

   1. Aggiungi una nuova istruzione della policy con i seguenti contenuti. L'istruzione consente di CodeBuild inserire oggetti nel bucket S3 in cui è archiviata l'applicazione in pacchetto. {{bucketname}}Sostituiscilo con il nome del tuo bucket S3.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::{{bucketname}}/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Scegliere **Esamina policy**.

   1. Scegli **Save changes** (Salva modifiche).

## Fase 3: distribuzione dell'applicazione di pubblicazione
<a name="serverlessrepo-auto-publish-deploy-app"></a>

Segui questi passaggi per distribuire l'applicazione che contiene la funzione Lambda che esegue la pubblicazione su. AWS Serverless Application Repository**Questa applicazione è aws-serverless-codepipeline-serverlessrepo -publish.**

**Nota**  
È necessario distribuire l'applicazione nella Regione AWS stessa pipeline.

1. Vai alla pagina delle [applicazioni](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) e scegli **Deploy (Distribuisci)**.

1. Seleziona **I acknowledge that this app creates custom IAM roles (Sono consapevole che questa app crea ruoli IAM personalizzati)**. 

1. Seleziona **Implementa**.

1. Scegli **View CloudFormation Stack** per aprire la console. CloudFormation 

1. Espandere la sezione **Resources (Risorse)**. Vedi **ServerlessRepoPublish**, qual è del tipo **AWS::Lambda::Function**. Prendi nota dell'ID fisico di questa risorsa per la prossima fase. Puoi usare questo ID fisico nel momento in cui crei la nuova operazione di pubblicazione in CodePipeline.

## Fase 4: creazione dell'operazione di pubblicazione
<a name="serverlessrepo-auto-publish-create-action"></a>

Segui questi passaggi per creare l'operazione di pubblicazione nella pipeline.

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

1. Nella sezione di navigazione a sinistra, scegli la pipeline che desideri modificare.

1. Scegli **Modifica**.

1. Dopo l'ultima fase della pipeline corrente, scegli **\+ Add stage (\+ Aggiungi fase)**. In **Stage name (Nome fase)** immetti un nome, ad esempio **Publish**, quindi scegli **Add stage (Aggiungi fase)**.

1. Nella nuova fase, scegliere **\+ Add action group (Aggiungi gruppo di operazioni)**.

1. Immetti un nome per l'operazione. Da **Action provider (Provider operazione)**, in **Invoke (Richiama)**, scegli **AWS Lambda**.

1. Da **Inserisci artefatti, scegli**. **BuildArtifact**

1. Da **Nome funzione**, scegli l'ID fisico della funzione Lambda che hai annotato nel passaggio precedente.

1. Scegli **Save (Salva)** per l'operazione.

1. Scegli **Done (Fatto)** per la fase.

1. In alto a destra, scegli **Save (Salva)**.

1. Per verificare la pipeline, apporta una modifica all'applicazione in. GitHub Ad esempio, modifica la descrizione dell'applicazione nella `Metadata` sezione del file AWS SAM modello. Applica la modifica e inviala alla tua GitHub filiale. In questo modo viene attivata la pipeline per l'esecuzione. Una volta che la pipeline è completa, controlla che l'applicazione sia stata aggiornata con la modifica in [AWS Serverless Application Repository](https://console.aws.amazon.com/serverlessrepo/home).