

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan AWS Serverless Application Model template untuk menyebarkan sumber daya Amazon EventBridge
<a name="eb-use-sam"></a>

Anda dapat membuat dan menguji [aturan](eb-rules.md) secara manual di EventBridge konsol, yang dapat membantu dalam proses pengembangan saat Anda menyempurnakan [pola acara](eb-event-patterns.md). Namun, setelah Anda siap untuk menerapkan aplikasi Anda, lebih mudah untuk menggunakan kerangka kerja seperti [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)meluncurkan semua sumber daya tanpa server Anda secara konsisten.

Kita akan menggunakan [contoh aplikasi](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) ini untuk melihat ke dalam cara-cara Anda dapat menggunakan AWS SAM template untuk membangun EventBridge sumber daya. File template.yaml dalam contoh ini adalah AWS SAM template yang mendefinisikan empat [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fungsi dan menunjukkan dua cara berbeda untuk mengintegrasikan fungsi Lambda dengan. EventBridge

Untuk panduan aplikasi contoh ini, lihat. [Tutorial: Buat contoh EventBridge aplikasi Amazon](eb-tutorial-get-started.md)

 Ada dua pendekatan untuk menggunakan EventBridge dan AWS SAM template. Untuk integrasi sederhana di mana satu fungsi Lambda dipanggil oleh satu aturan, pendekatan template **Gabungan direkomendasikan**. Jika Anda memiliki logika routing yang kompleks, atau Anda terhubung ke sumber daya di luar AWS SAM template Anda, pendekatan **template Separated** adalah pilihan yang lebih baik.

**Topics**
+ [Template gabungan](#eb-combined-template)
+ [Template terpisah](#eb-separated-template)

## Template gabungan
<a name="eb-combined-template"></a>

Pendekatan pertama menggunakan `Events` properti untuk mengkonfigurasi EventBridge aturan. Kode contoh berikut mendefinisikan [peristiwa](eb-events.md) yang memanggil fungsi Lambda Anda.

**catatan**  
Contoh ini secara otomatis membuat aturan pada [bus acara](eb-event-bus.md) default, yang ada di setiap AWS akun. Untuk mengaitkan aturan dengan bus acara khusus, Anda dapat menambahkan `EventBusName` ke template.

```
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"
```

 Kode YAMAL ini setara dengan pola peristiwa di EventBridge konsol. Di YAMB, Anda hanya perlu menentukan pola peristiwa, dan AWS SAM secara otomatis membuat peran IAM dengan izin yang diperlukan. 

## Template terpisah
<a name="eb-separated-template"></a>

Dalam pendekatan kedua untuk mendefinisikan EventBridge konfigurasi di AWS SAM, sumber daya dipisahkan lebih jelas dalam template. 

1. Pertama, Anda mendefinisikan fungsi Lambda:

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

1. Selanjutnya, tentukan aturan menggunakan sumber `AWS::Events::Rule` daya. Properti menentukan pola acara dan juga dapat menentukan [target](eb-targets.md). Anda dapat secara eksplisit menentukan beberapa target.

   ```
   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. Terakhir, tentukan `AWS::Lambda::Permission` sumber daya yang memberikan izin EventBridge untuk memanggil target.

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