

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

# Implementazione e test dell'applicazione di esempio Amazon SNS Event Fork Pipeline
Distribuzione e test dell'applicazione di esempio Event Fork Pipelines

Per accelerare lo sviluppo delle tue applicazioni basate sugli eventi, puoi sottoscrivere pipeline di gestione degli eventi, basate su AWS Event Fork Pipelines, agli argomenti di Amazon SNS. AWS **Event Fork Pipelines è una suite di applicazioni [annidate open source, basata sul AWS Serverless Application](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) [Model](https://aws.amazon.com/serverless/sam/) (AWS SAM), che puoi distribuire direttamente dalla suite [AWS Event](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) Fork Pipelines (scegli Show apps that create IAM role o policy di risorse personalizzate) nel tuo account.** AWS Per ulteriori informazioni, consulta [Come funziona AWS Event Fork Pipelines](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works).

Questa pagina mostra come utilizzare l'applicazione di esempio Event Fork Pipelines Console di gestione AWS per distribuire e testare l'applicazione di esempio. AWS 

**Importante**  
Per evitare di incorrere in costi indesiderati dopo aver completato la distribuzione dell'applicazione di esempio AWS Event Fork Pipelines, eliminate il relativo stack. CloudFormation Per ulteriori informazioni, vedi [Eliminazione di uno stack sulla console CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) nella *Guida per l'utente di AWS CloudFormation *.

# AWS Esempio di caso d'uso di Event Fork Pipelines


Lo scenario seguente descrive un'applicazione di e-commerce senza server e basata sugli eventi che utilizza AWS Event Fork Pipelines. È possibile utilizzare questo [esempio di applicazione di e-commerce](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api) in AWS Serverless Application Repository e poi distribuirla Account AWS utilizzando la AWS Lambda console, dove è possibile testarla ed esaminarne il codice sorgente. GitHub

![\[L'architettura di un'applicazione di e-commerce serverless che si integra. Servizi AWS Descrive il flusso dagli utenti di e-commerce che effettuano ordini tramite un API Gateway a diverse pipeline di elaborazione tra cui archiviazione degli ordini, analisi di ricerca e replay, mostrando come gli eventi vengono gestiti e analizzati tramite Amazon SNS, Lambda, Amazon SQS, DynamoDB e Kibana.\]](http://docs.aws.amazon.com/it_it/sns/latest/dg/images/sns-fork-example-use-case.png)


Questa applicazione di e-commerce riceve gli ordini dagli acquirenti tramite un' RESTful API ospitata da API Gateway e supportata dalla AWS Lambda funzione`CheckoutApiBackendFunction`. La funzione pubblica tutti gli ordini ricevuti in un argomento Amazon SNS denominato `CheckoutEventsTopic` che, a sua volta, li distribuisce a quattro diverse pipeline.

La prima è la normale pipeline di elaborazione del checkout progettata e implementata dal proprietario dell'applicazione di E-Commerce. Questa pipeline include la `CheckoutQueue` coda Amazon SQS che memorizza nel buffer tutti gli ordini ricevuti, AWS Lambda una funzione `CheckoutFunction` denominata che esegue il polling della coda per elaborare questi ordini e la tabella DynamoDB che salva in modo sicuro tutti gli ordini effettuati. `CheckoutTable`

## Applicazione di Event Fork AWS Pipelines


La logica di business principale è gestita dai componenti dell'applicazione di E-Commerce, il cui proprietario deve comunque tenere conto anche dei seguenti fattori:
+ **Conformità**—backup protetti e compressi crittografati a riposo e sanificazione delle informazioni sensibili
+ **Resilienza**—riproduzione degli ordini più recenti in caso di interruzione del processo di evasione
+ **Searchability**—esecuzione di analisi e generazione di metriche sugli ordini effettuati

Invece di implementare questa logica di elaborazione degli eventi, il proprietario dell'applicazione può sottoscrivere AWS Event Fork Pipelines all'argomento Amazon `CheckoutEventsTopic` SNS
+ [La pipeline di archiviazione di eventi e di backup](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline) è configurata per trasformare i dati in modo da rimuovere i dettagli delle carte di credito, eseguire il buffer dei dati per 60 secondi, comprimerli usando GZIP e crittografarli tramite la chiave predefinita gestita dal cliente per Amazon S3. Questa chiave è gestita AWS e alimentata da (). AWS Key Management Service AWS KMS

  Per ulteriori informazioni, consulta [Scegli Amazon S3 per la tua destinazione](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3), [Amazon Data Firehose Data Transformation e [Configure Settings nella](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html) Amazon *Data* Firehose](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) Developer Guide.
+ [La pipeline di ricerca di eventi e di analisi dei dati](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline) è configurata con un valore di 30 secondi per la durata dei nuovi tentativi di indice, un bucket per lo storage di ordini non indicizzati nel dominio di ricerca e una policy di filtro per limitare il set degli ordini indicizzati.

  Per ulteriori informazioni, consulta [Scegli il OpenSearch servizio per la tua destinazione](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) nella *Amazon Data Firehose Developer Guide*.
+ [Pipeline di riproduzione eventi](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) è configurata con la coda Amazon SQS che fa parte della normale pipeline di elaborazione degli ordini progettata e implementata dal proprietario dell'applicazione di E-Commerce.

  Per ulteriori informazioni, consulta la sezione al [Nome della coda e URL](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url) nella *Guida per gli sviluppatori di Amazon Simple Queue Service*.

Nella configurazione per la pipeline di ricerca di eventi e di analisi è impostata la seguente policy di filtro in formato JSON, che trova solo ordini in entrata il cui importo totale sia di 100 dollari o più. Per ulteriori informazioni, consulta [Filtraggio messaggi di Amazon SNS](sns-message-filtering.md).

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

Utilizzando il pattern AWS Event Fork Pipelines, il proprietario dell'applicazione di e-commerce può evitare il sovraccarico di sviluppo che spesso deriva dalla logica di codifica indifferenziata per la gestione degli eventi. Invece, può implementare AWS Event Fork Pipelines direttamente dal suo interno. AWS Serverless Application Repository Account AWS

# Fase 1: distribuzione dell'applicazione Amazon SNS di esempio
Distribuzione dell'applicazione di esempio

1. Accedi alla [console AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Nel riquadro di navigazione, selezionare **Functions (Funzioni)** e quindi **Create function (Crea funzione)**.

1. Nella pagina **Create function (Crea funzione)**, procedere come segue:

   1. Scegliere **Browse serverless app repository (Sfoglia repository app serverless)**, **Public applications (Applicazioni pubbliche)**, **Show apps that create custom IAM roles or resource policies (Mostra applicazioni in grado di creare ruoli IAM o policy di risorse personalizzati)**.

   1. Cercare `fork-example-ecommerce-checkout-api` e scegliere l'applicazione.

1. Nella pagina **fork-example-ecommerce-checkout-api**, procedi come segue:

   1. Nella sezione **Application settings (Impostazioni applicazione)**, immettere un **Application name (Nome applicazione)** (ad esempio `fork-example-ecommerce-my-app`).
**Nota**  
Per trovare con facilità le risorse in un secondo momento, mantenere il prefisso `fork-example-ecommerce`.
Il nome dell'applicazione deve essere univoco per ogni distribuzione. Se riutilizzi il nome di un'applicazione, la distribuzione aggiornerà solo lo CloudFormation stack precedentemente distribuito (anziché crearne uno nuovo).

   1. (Facoltativo) Immettete una delle seguenti **LogLevel**impostazioni per l'esecuzione della funzione Lambda dell'applicazione:
      + `DEBUG`
      + `ERROR`
      + `INFO` (predefinito)
      + `WARNING`

1. Scegliere **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications. (Riconosco che questa app crea ruoli IAM e policy di risorse personalizzati e distribuisce applicazioni nidificate.)** e quindi, in fondo alla pagina, selezionare **Deploy (Distribuisci)**.

Nella *my-app* pagina **Stato di distribuzione per fork-example-ecommerce -**, Lambda visualizza lo stato L'**applicazione è in fase di distribuzione**.

Nella sezione **Risorse**, CloudFormation inizia a creare lo stack e visualizza lo stato **CREATE\$1IN\$1PROGRESS** per ogni risorsa. **Quando il processo è completo, visualizza lo stato CREATE\$1COMPLETE. CloudFormation **

**Nota**  
La distribuzione di tutte le risorse può richiedere 20-30 minuti.

Al termine della distribuzione, Lambda mostra lo stato **Your application has been deployed (L'applicazione è stata distribuita)**.

# Fase 2: Esecuzione dell'applicazione di esempio collegata a SNS
Esecuzione dell'applicazione di esempio collegata a SNS

1. Nella AWS Lambda console, nel pannello di navigazione, scegli **Applicazioni**.

1. Nel campo di ricerca della pagina **Applications (Applicazioni)**, cercare `serverlessrepo-fork-example-ecommerce-my-app` e quindi scegliere l'applicazione.

1. Nella sezione **Resources (Risorse)**, procedere come segue:

   1. Per trovare la risorsa il cui tipo è **ApiGatewayRestApi**, ordina le risorse per **Tipo**, ad esempio`ServerlessRestApi`, e poi espandi la risorsa.

   1. Vengono visualizzate due risorse annidate, di tipo **ApiGatewayDeployment** e **ApiGatewayStage**.

   1. Copiare il link per **Prod API endpoint (Endpoint API prod)** e aggiungervi `/checkout`, ad esempio: 

      ```
      https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
      ```

1. Copiare il JSON seguente in un file denominato `test_event.json`.

   ```
   {
      "id": 15311,
      "date": "2019-03-25T23:41:11-08:00",
      "status": "confirmed",
      "customer": {
         "id": 65144,		
   	 "quantity": 2,
         "price": 25.00,
         "subtotal": 50.00
      }]
   }
   ```

1. Per inviare una richiesta HTTPS al proprio endpoint API, passare il payload degli eventi di esempio come input eseguendo un comando `curl`, ad esempio:

   ```
   curl -d "$(cat test_event.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   L'API restituisce la seguente risposta vuota, a indicare che l'esecuzione è riuscita:

   ```
   { }
   ```

# Fase 3: verifica delle prestazioni dell'applicazione e della pipeline Amazon SNS
Verifica delle prestazioni dell'applicazione e della pipeline

## Fase 1: verifica dell'esecuzione della pipeline di checkout di esempio


1. Accedi alla [console Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Nel riquadro di navigazione, selezionare **Tables (Tabelle)**.

1. Cercare `serverlessrepo-fork-example` e selezionare `CheckoutTable`.

1. Nella pagina dei dettagli della tabella, scegliere **Items (Voci)** e quindi scegliere la voce creata.

   Vengono mostrati gli attributi memorizzati.

## Fase 2: Verifica dell'esecuzione della pipeline di archiviazione e backup degli eventi


1. Accedere alla [console Amazon S3](https://console.aws.amazon.com/s3/).

1. Nel riquadro di navigazione, scegliere **Buckets (Bucket)**.

1. Cercare `serverlessrepo-fork-example` e quindi selezionare `CheckoutBucket`.

1. Esaminare la gerarchia della directory fino a trovare un file con l'estensione `.gz`.

1. Per scaricare il file, scegliere prima **Actions (Azioni)** e poi **Open (Apri)**.

1. La pipeline è configurata con una funzione Lambda che sterilizza le informazioni sulle carte di credito per motivi di conformità.

   Per verificare che il payload JSON archiviato non contenga informazioni sulle carte di credito, decomprimere il file.

## Fase 3: Verifica dell'esecuzione della pipeline di ricerca e analisi degli eventi


1. Accedi alla [console OpenSearch di servizio](https://console.aws.amazon.com/aos/).

1. Nel riquadro di navigazione, in **My domains (I miei domini)**, scegliere il dominio con prefisso `serverl-analyt`.

1. La pipeline viene configurata con una policy di filtro della sottoscrizione Amazon SNS che imposta una condizione di corrispondenza numerica.

   ****Per verificare che l'evento sia indicizzato perché si riferisce a un ordine il cui valore è superiore a 100 USD, nella *abcdefgh1ijk* pagina **serverl-analyt-**, scegli Indices, checkout\$1events.****

## Fase 4: Verifica dell'esecuzione della pipeline di riproduzione degli eventi


1. Accedere alla [console Amazon SQS](https://console.aws.amazon.com/sqs/).

1. Nell'elenco delle code, cercare `serverlessrepo-fork-example` e scegliere `ReplayQueue`.

1. Scegli **Invia e ricevi messaggi**.

1. Nella finestra di *123ABCD4E5F6* dialogo **Invia e ricevi messaggi in fork-example-ecommerce -*my-app*... ReplayP- ReplayQueue -**, scegli **Sondaggio** per i messaggi. 

1. Per verificare che l'evento sia inserito nella coda, scegliere **More Details (Altri dettagli)** accanto al messaggio visualizzato nella coda.

# Fase 4: Simulazione di un problema e riproduzione degli eventi per il ripristino
Simulazione di un problema e riproduzione degli eventi per il ripristino

## Passaggio 1: abilita il problema simulato e invia una seconda richiesta API


1. Accedi alla [console AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Nel riquadro di navigazione, scegliere **Functions (Funzioni)**.

1. Cercare `serverlessrepo-fork-example` e selezionare `CheckoutFunction`.

1. Sul **fork-example-ecommerce- *my-app* - CheckoutFunction -*ABCDEF*...** **pagina, nella sezione **Variabili d'ambiente**, imposta la variabile **BUG\$1ENABLED** su **true**, quindi scegli Salva.**

1. Copiare il JSON seguente in un file denominato `test_event_2.json`.

   ```
   {
   	   "id": 9917,
   	   "date": "2019-03-26T21:11:10-08:00",
   	   "status": "confirmed",
   	   "customer": {
   	      "id": 56999,
   "quantity": 1,
   	      "price": 75.00,
   	      "subtotal": 75.00
   	   }]
   	}
   ```

1. Per inviare una richiesta HTTPS al proprio endpoint API, passare il payload degli eventi di esempio come input eseguendo un comando `curl`, ad esempio:

   ```
   curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   L'API restituisce la seguente risposta vuota, a indicare che l'esecuzione è riuscita:

   ```
   { }
   ```

## Fase 2: Verificare il danneggiamento simulato dei dati


1. Accedi alla [console Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Nel riquadro di navigazione, selezionare **Tables (Tabelle)**.

1. Cercare `serverlessrepo-fork-example` e selezionare `CheckoutTable`.

1. Nella pagina dei dettagli della tabella, scegliere **Items (Voci)** e quindi scegliere la voce creata.

   Vengono visualizzati gli attributi archiviati, alcuni contrassegnati come **CORRUPTED\$1 (Danneggiati)**.

## Fase 3: Disattiva il problema simulato


1. Accedi alla [console AWS Lambda](https://console.aws.amazon.com/lambda/).

1. Nel riquadro di navigazione, scegliere **Functions (Funzioni)**.

1. Cercare `serverlessrepo-fork-example` e selezionare `CheckoutFunction`.

1. Sul **fork-example-ecommerce- - *my-app* CheckoutFunction - *ABCDEF***... **pagina, nella sezione **Variabili d'ambiente**, imposta la variabile **BUG\$1ENABLED** su **false** e poi scegli Salva.**

## Passaggio 4: abilita il replay per risolvere il problema


1. Nella AWS Lambda console, nel pannello di navigazione, scegli **Funzioni**.

1. Cercare `serverlessrepo-fork-example` e selezionare `ReplayFunction`.

1. Espandere la sezione **Designer**, scegliere il riquadro **SQS** e quindi, nella sezione **SQS**, scegliere **Enabled (Abilitato)**.
**Nota**  
L'abilitazione del trigger dell'origine evento Amazon SQS richiede circa un minuto.

1. Seleziona **Salva**.

1. Per visualizzare gli attributi ripristinati, tornare alla console Amazon DynamoDB.

1. Per disabilitare la riproduzione, torna alla AWS Lambda console e disabilita il trigger sorgente di eventi Amazon SQS per. `ReplayFunction`