

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 un' EventBridge applicazione Amazon di esempio
<a name="eb-tutorial-get-started"></a>

[È possibile utilizzare EventBridge per indirizzare [gli eventi](eb-events.md) a funzioni Lambda specifiche utilizzando le regole.](eb-rules.md)

In questo tutorial, utilizzerai Node.js e il AWS CLI codice nel [ GitHubrepository](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) per creare quanto segue:
+ Una funzione [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) che produce eventi per transazioni bancarie ATM (Bancomat).
+ Tre funzioni Lambda da utilizzare come [obiettivi](eb-targets.md) di una EventBridge regola.
+ La regola che instrada gli eventi creati alla funzione a valle corretta in base a un [modello di eventi](eb-event-patterns.md).

Questo esempio utilizza AWS SAM modelli per definire le EventBridge regole. Per ulteriori informazioni sull'utilizzo dei AWS SAM modelli, EventBridge consulta[Utilizzo AWS Serverless Application Model di modelli per distribuire risorse Amazon EventBridge](eb-use-sam.md).

Nel repository, la sottodirectory *atmProducer* contiene `handler.js`, che rappresenta il servizio ATM che produce eventi. Questo codice è un gestore Lambda scritto in Node.js e pubblica eventi EventBridge tramite l'[AWS SDK](https://www.npmjs.com/package/aws-sdk) utilizzando questa riga di codice. JavaScript 

```
const result = await eventbridge.putEvents(params).promise()
```

Questa directory contiene anche `events.js`, che elenca varie transazioni di test in un array Entries. Un singolo evento è definito nel modo seguente: JavaScript 

```
{
  // Event envelope fields
  Source: 'custom.myATMapp',
  EventBusName: 'default',
  DetailType: 'transaction',
  Time: new Date(),

  // Main event body
  Detail: JSON.stringify({
    action: 'withdrawal',
    location: 'MA-BOS-01',
    amount: 300,
    result: 'approved',
    transactionId: '123456',
    cardPresent: true,
    partnerBank: 'Example Bank',
    remainingFunds: 722.34
  })
}
```

La sezione *Dettaglio* dell'evento specifica gli attributi della transazione. Questi includono l'ubicazione dello sportello ATM, l'importo, la banca partner e il risultato della transazione.

Il file `handler.js` nella sottodirectory *atmConsumer* contiene tre funzioni:

```
exports.case1Handler = async (event) => {
  console.log('--- Approved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case2Handler = async (event) => {
  console.log('--- NY location transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case3Handler = async (event) => {
  console.log('--- Unapproved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}
```

Ogni funzione riceve eventi di transazione, che vengono registrati tramite le `console.log` istruzioni in [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html). Le funzioni consumer operano indipendentemente dal produttore e non conoscono l'origine degli eventi.

La logica di routing è contenuta nelle EventBridge regole distribuite dal modello dell'applicazione. AWS SAM Le regole valutano il flusso di eventi in entrata e instradano gli eventi corrispondenti alle funzioni Lambda di destinazione.

Le regole utilizzano modelli di eventi che sono oggetti JSON con la stessa struttura degli eventi a cui corrispondono. Di seguito è riportato il modello di eventi per una delle regole.

```
{
  "detail-type": ["transaction"],
  "source": ["custom.myATMapp"],
  "detail": {
    "location": [{
      "prefix": "NY-"
    }]
  }
}
```

**Topics**
+ [Prerequisiti](#eb-gs-prereqs)
+ [Passaggio 1: creare un'applicazione](#eb-gs-create-application)
+ [Passaggio 2: eseguire l'applicazione](#eb-gs-run-application)
+ [Passaggio 3: verificare i log e il funzionamento dell'applicazione](#eb-gs-check-logs)
+ [Passaggio 4: eliminare le risorse](#cleanup)

## Prerequisiti
<a name="eb-gs-prereqs"></a>

Per completare questo tutorial, avrai bisogno delle seguenti risorse:
+ Un AWS account. [Crea un AWS account](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) se non ne hai già uno.
+ AWS CLI installato. Per installare AWS CLI, vedere [Installazione, aggiornamento e disinstallazione della AWS CLI versione 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ Node.js 12.x installato. Per installare Node.js, consulta [Download](https://nodejs.org/en/download/).

## Passaggio 1: creare un'applicazione
<a name="eb-gs-create-application"></a>

Per configurare l'applicazione di esempio, utilizzerai AWS CLI e Git per creare le AWS risorse di cui avrai bisogno.

**Per creare l'applicazione**

1. [Esegui l'accesso a AWS](https://console.aws.amazon.com/console/home).

1. [Installa Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) e [installa la AWS Serverless Application Model CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) sul tuo computer locale.

1. Crea una nuova directory, quindi accedi a quella directory in un terminale.

1. Alla riga di comando, immetti `git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example`.

1. Alla riga di comando esegui il comando seguente:

   ```
   cd ./amazon-eventbridge-producer-consumer-example
   sam deploy --guided
   ```

1. Nel terminale, procedi come segue:

   1. In `Stack Name`, immetti un nome per lo stack. Ad esempio, assegnagli il nome `Test`.

   1. In `AWS Region`, immetti la Regione. Ad esempio `us-west-2`.

   1. In `Confirm changes before deploy`, immettere `Y`.

   1. In `Allow SAM CLI IAM role creation`, immetti `Y`.

   1. In `Save arguments to configuration file`, immetti `Y`.

   1. In `SAM configuration file`, immettere `samconfig.toml`.

   1. In `SAM configuration environment`, immettere `default`.

## Passaggio 2: eseguire l'applicazione
<a name="eb-gs-run-application"></a>

Ora che hai configurato le risorse, utilizzerai la console per testare le funzioni.

**Per eseguire l'applicazione**

1. Apri la [console Lambda](https://console.aws.amazon.com/lambda/) nella stessa regione in cui hai distribuito l'applicazione. AWS SAM 

1. Esistono quattro funzioni Lambda con il prefisso **atm-demo**. **Seleziona la **atmProducerFn**funzione, quindi scegli **Azioni, Test**.**

1. In **Nome**, immetti `Test`.

1. Scegli **Test (Esegui test)**.

## Passaggio 3: verificare i log e il funzionamento dell'applicazione
<a name="eb-gs-check-logs"></a>

Ora che hai eseguito l'applicazione, utilizzerai la console per controllare CloudWatch i registri.

**Per verificare i log**

1. Apri la [CloudWatch console](https://console.aws.amazon.com/cloudwatch/) nella stessa regione in cui hai eseguito l' AWS SAM applicazione.

1. Scegli **Log** e quindi **Gruppi di log**.

1. Seleziona il gruppo di log contenente **atmConsumerCase1**. Vengono visualizzati due flussi che rappresentano le due transazioni approvate dall'ATM. Scegli un flusso di log per visualizzare l'output.

1. Torna all'elenco dei gruppi di log, quindi seleziona il gruppo di log contenente **atmConsumerCase2**. Vedrai due stream che rappresentano le due transazioni corrispondenti al filtro di ubicazione *New York*.

1. Torna all'elenco dei gruppi di log e seleziona il gruppo di log contenente **atmConsumerCase3**. Apri il flusso per vedere le transazioni negate.

## Passaggio 4: eliminare le risorse
<a name="cleanup"></a>

Ora è possibile eliminare le risorse create per questo tutorial, a meno che non si voglia conservarle. Eliminando AWS le risorse che non utilizzi più, eviti addebiti inutili sul tuo AWS account.

**Per eliminare la/le EventBridge regola/e**

1. Apri la [pagina Regole](https://console.aws.amazon.com/events/home#/rules) della EventBridge console.

1. Seleziona la regola che hai creato.

1. Scegli **Elimina**.

1. Scegli **Elimina**.

**Per eliminare la funzione Lambda**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Seleziona la funzione creata.

1. Scegliere **Actions (Operazioni)**, **Delete (Elimina)**.

1. Scegliere **Delete (Elimina)**.

**Per eliminare il/i gruppo/i di CloudWatch log di Logs**

1. Apri la [console CloudWatch](https://console.aws.amazon.com/Cloudwatch/home).

1. Scegli **Log**, **Gruppi di log**.

1. Seleziona il gruppo di log.

1. Scegli **Operazioni** > **Elimina gruppo/i di log**.

1. Scegli **Delete** (Elimina).