

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

# Utilizzo AWS Serverless Application Model di modelli per distribuire risorse Amazon EventBridge
<a name="eb-use-sam"></a>

Puoi creare e testare [le regole](eb-rules.md) manualmente nella EventBridge console, il che può aiutarti nel processo di sviluppo mentre perfezioni [i modelli di eventi](eb-event-patterns.md). Tuttavia, quando è tutto pronto per distribuire l'applicazione, è più semplice utilizzare un framework come [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) per avviare tutte le risorse serverless in modo coerente.

Useremo quest'[applicazione di esempio](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) per esaminare i modi in cui è possibile utilizzare i AWS SAM modelli per creare EventBridge risorse. Il file template.yaml in questo esempio è un AWS SAM modello che definisce quattro [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)funzioni e mostra due modi diversi per integrare le funzioni Lambda. EventBridge

Per una procedura guidata di questa applicazione di esempio, consulta [Tutorial: crea un' EventBridge applicazione Amazon di esempio](eb-tutorial-get-started.md).

 Esistono due approcci all'utilizzo e ai modelli. EventBridge AWS SAM Per integrazioni semplici in cui una funzione Lambda viene richiamata da una regola, si consiglia l'approccio **Modello combinato**. Se si utilizza una logica di routing complessa o ci si connette a risorse esterne al AWS SAM modello, l'approccio basato su **modelli separati** è la scelta migliore.

**Topics**
+ [Modello combinato](#eb-combined-template)
+ [Modello separato](#eb-separated-template)

## Modello combinato
<a name="eb-combined-template"></a>

Il primo approccio utilizza la `Events` proprietà per configurare la EventBridge regola. Il codice di esempio seguente definisce un [evento](eb-events.md) che richiama la funzione Lambda.

**Nota**  
Questo esempio crea automaticamente la regola sul [bus di eventi](eb-event-bus.md) predefinito, che esiste in ogni AWS account. Per associare la regola a un router di eventi personalizzato, puoi aggiungere `EventBusName` al modello.

```
atmConsumerCase3Fn:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: atmConsumer/
    Handler: handler.case3Handler
    Runtime: nodejs12.x
    Events:
      Trigger:
        Type: CloudWatchEvent 
        Properties:
          Pattern:
            source:
              - custom.myATMapp
            detail-type:
              - transaction                
            detail:
              result:
                - "anything-but": "approved"
```

 Questo codice YAML è equivalente a un pattern di eventi nella EventBridge console. In YAML, è sufficiente definire il modello di evento e creare AWS SAM automaticamente un ruolo IAM con le autorizzazioni richieste. 

## Modello separato
<a name="eb-separated-template"></a>

Nel secondo approccio alla definizione di una EventBridge configurazione in AWS SAM, le risorse vengono separate più chiaramente nel modello. 

1. Innanzitutto, definisci la funzione Lambda:

   ```
   atmConsumerCase1Fn:
     Type: AWS::Serverless::Function
     Properties:
       CodeUri: atmConsumer/
       Handler: handler.case1Handler
       Runtime: nodejs12.x
   ```

1. Successivamente, definisci la regola utilizzando una risorsa `AWS::Events::Rule`. Le proprietà definiscono il modello di eventi e possono anche specificare le [destinazioni](eb-targets.md). È possibile definire in modo esplicito più destinazioni.

   ```
   EventRuleCase1: 
     Type: AWS::Events::Rule
     Properties: 
       Description: "Approved transactions"
       EventPattern: 
         source: 
           - "custom.myATMapp"
         detail-type:
           - transaction   
         detail: 
           result: 
             - "approved"
       State: "ENABLED"
       Targets: 
         - 
           Arn: 
             Fn::GetAtt: 
               - "atmConsumerCase1Fn"
               - "Arn"
           Id: "atmConsumerTarget1"
   ```

1. Infine, definisci una `AWS::Lambda::Permission` risorsa che conceda il permesso di EventBridge invocare l'obiettivo.

   ```
   PermissionForEventsToInvokeLambda: 
     Type: AWS::Lambda::Permission
     Properties: 
       FunctionName: 
         Ref: "atmConsumerCase1Fn"
       Action: "lambda:InvokeFunction"
       Principal: "events.amazonaws.com"
       SourceArn: 
         Fn::GetAtt: 
           - "EventRuleCase1"
           - "Arn"
   ```