

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

# Memulai: Buat EventBridge pipa Amazon
<a name="pipes-get-started"></a>

Untuk membiasakan diri dengan pipa dan kemampuannya, kita akan menggunakan CloudFormation template untuk menyiapkan EventBridge pipa dan komponen terkait. Kemudian kita bisa mengeksplorasi berbagai fitur pipa.

**Tip**  
Untuk pengalaman belajar langsung yang lebih komprehensif, cobalah Workshop [EventBridge Pipes](https://catalog.workshops.aws/eb-pipes). Lokakarya interaktif ini memandu Anda melalui pembuatan dan pemecahan masalah pipa yang menghubungkan DynamoDB ke API Gateway dengan pengayaan Lambda.

Template membuat EventBridge pipa yang menghubungkan aliran dari tabel DynamoDB ke antrian Amazon SQS. Setiap kali catatan dibuat atau dimodifikasi dalam tabel database, pipa mengirimkan peristiwa yang dihasilkan ke antrian. 

Pipa yang dikerahkan terdiri dari:
+ Tabel DynamoDB (dan stream) untuk bertindak sebagai sumber pipa, dan antrean Amazon SQS sebagai target.
+ Peran eksekusi yang memberikan EventBridge izin yang diperlukan untuk mengakses tabel DynamoDB dan antrian Amazon SQS.
+ Pipa itu sendiri, yang berisi filter peristiwa yang hanya memilih peristiwa yang dihasilkan ketika item tabel dibuat (disisipkan) atau dimodifikasi.

Untuk detail teknis spesifik dari template, lihat[Detail templat](#pipes-get-started-template-details).

![Peristiwa database dicocokkan dengan filter, dan dikirim ke antrian jika cocok.](http://docs.aws.amazon.com/id_id/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_architectural.svg)


## Membuat pipa menggunakan CloudFormation
<a name="pipes-get-started-create"></a>

Untuk membuat pipa dan sumber daya yang terkait, kita akan membuat CloudFormation template dan menggunakannya untuk membuat tumpukan yang berisi pipa sampel, lengkap dengan sumber dan target.

**penting**  
Anda akan ditagih untuk sumber daya Amazon yang digunakan jika Anda membuat tumpukan dari template ini.

### Membuat template
<a name="pipes-get-started-file"></a>

Pertama, buat CloudFormation template.

1. Di [Templat](#pipes-get-started-template) bagian ini, klik ikon salin pada tab **JSON** atau **YAMAL** untuk menyalin konten templat.

1. Tempelkan konten template ke file baru.

1. Simpan file secara lokal.

### Membuat tumpukan
<a name="pipes-get-started-stack"></a>

Selanjutnya, gunakan template yang telah Anda simpan untuk menyediakan CloudFormation tumpukan.

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

1. Pada halaman **Stacks**, dari menu **Create stack**, pilih **dengan sumber daya baru (standar)**.

1. Tentukan template:

   1. Di bawah **Prasyarat**, pilih **Pilih templat yang ada**.

   1. Di bawah **Tentukan templat**, pilih **Unggah file templat**.

   1. Pilih **Pilih file**, navigasikan ke file template, dan pilih.

   1. Pilih **Berikutnya**.

1. Tentukan detail tumpukan:

   1. Masukkan nama tumpukan.

   1. Untuk parameter, terima nilai default atau masukkan milik Anda sendiri.

   1. Pilih **Berikutnya**.

1. Konfigurasikan opsi tumpukan:

   1. Di bawah **Opsi kegagalan tumpukan**, pilih **Hapus semua sumber daya yang baru dibuat**.
**catatan**  
Memilih opsi ini mencegah Anda dari kemungkinan ditagih untuk sumber daya yang kebijakan penghapusan menentukan mereka dipertahankan bahkan jika pembuatan tumpukan gagal. Untuk informasi selengkapnya, lihat [`DeletionPolicy`atribut](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) di *Panduan CloudFormation Pengguna*.

   1. Terima semua nilai default lainnya.

   1. Di bawah **Kemampuan**, centang kotak untuk mengetahui bahwa CloudFormation mungkin membuat sumber daya IAM di akun Anda.

   1. Pilih **Berikutnya**.

1. Tinjau detail tumpukan dan pilih **Kirim**.

**Buat tumpukan menggunakan CloudFormation (AWS CLI)**

Anda juga dapat menggunakan AWS CLI untuk membuat tumpukan.
+ Gunakan perintah [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html).
  + Terima nilai parameter template default, tentukan nama tumpukan. Gunakan `template-body` parameter untuk meneruskan konten template, atau `template-url` untuk menentukan lokasi URL.

    ```
    aws cloudformation create-stack \
      --stack-name {{eventbridge-rule-tutorial}} \
      --template-body {{template-contents}} \
      --capabilities CAPABILITY_IAM
    ```
  + Ganti nilai default dari satu atau beberapa parameter template. Contoh:

    ```
    aws cloudformation create-stack \
      --stack-name {{eventbridge-rule-tutorial}} \
      --template-body {{template-contents}} \
      --parameters \
        ParameterKey=SourceTableName,ParameterValue={{pipe-example-source}} \
        ParameterKey=TargetQueueName,ParameterValue={{pipe-example-target}} \
        ParameterKey=PipeName,ParameterValue={{pipe-with-filtering-example}} \
      --capabilities CAPABILITY_IAM
    ```

CloudFormation menciptakan tumpukan. Setelah pembuatan tumpukan selesai, sumber daya tumpukan siap digunakan. Anda dapat menggunakan tab **Sumber Daya** pada halaman detail tumpukan untuk melihat sumber daya yang disediakan di akun Anda.

## Menjelajahi kemampuan pipa
<a name="pipes-get-started-using"></a>

Setelah pipa dibuat, Anda dapat menggunakan EventBridge konsol untuk mengamati operasi pipa dan menguji pengiriman acara.

1. Buka EventBridge konsol di [https://console.aws.amazon.com/events/rumah? \#/pipa](https://console.aws.amazon.com/events/home?#/pipes).

1. Pilih pipa yang Anda buat.

   Pada halaman detail pipa, bagian **Komponen Pipa** menampilkan sumber daya yang membentuk pipa, dan berisi tab yang memberikan detail lebih lanjut tentang setiap komponen.  
![Halaman detail pipa secara grafis menampilkan sumber, filter, dan komponen target untuk pipa.](http://docs.aws.amazon.com/id_id/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_pipe-detail.png)

   Anda dapat menemukan peran eksekusi yang kami buat untuk pipa pada tab **Pengaturan**, di bagian **Izin**.

### Memeriksa filter pipa
<a name="pipes-get-started-using-filter"></a>

Sebelum kita menguji operasi pipa, mari kita periksa filter yang telah kita tentukan untuk mengontrol peristiwa mana yang dikirim ke target. Pipa hanya akan mengirimkan peristiwa yang sesuai dengan kriteria filter ke target; semua yang lain dibuang. Dalam hal ini, kami hanya ingin peristiwa yang dihasilkan ketika entri tabel dibuat atau dimodifikasi dikirim ke antrian Amazon SQS.
+ Pada halaman detail pipa, di bawah **Komponen Pipa**, pilih tab **Penyaringan**.

  Kami telah menyertakan filter yang hanya memilih peristiwa di mana `eventName` diatur ke `INSERT` atau`MODIFY`. 

  ```
  {
    "eventName": ["INSERT", "MODIFY"]
  }
  ```

### Mengirim acara melalui pipa
<a name="pipes-get-started-using-source"></a>

Selanjutnya, kami akan menghasilkan peristiwa di sumber pipa untuk menguji apakah penyaringan dan pengiriman pipa beroperasi dengan benar. Untuk melakukan ini, kita akan membuat dan mengedit item dalam tabel DynamoDB yang kita tentukan sebagai sumber pipa.

1. Pada halaman detail pipa, di bawah **Komponen Pipa**, pilih tab **Sumber**.

1. Di bawah **Sumber**, pilih nama aliran DynamoDB.

   Ini membuka konsol DynamoDB di jendela terpisah, dengan rincian tabel sumber ditampilkan.

1. Pilih **Jelajahi item**.

1. Menghasilkan `INSERT` acara dengan membuat item dalam tabel:

   1. Pilih **Buat item**.

   1. Tambahkan nilai untuk atribut **Album** dan **Artis**.

   1. Pilih **Buat item**.

1. Hasilkan `DELETE` dan `INSERT` acara dengan mengedit item:

   1. Pilih item dari daftar, dan dari menu **Tindakan**, pilih **Edit item**.

   1. Masukkan nilai baru untuk atribut **Album** atau **Artis**.

   1. Centang kotak yang mengonfirmasi bahwa Anda mengubah nilai kunci item, lalu pilih **Buat ulang item**.

      Ini menghasilkan item yang dihapus dan kemudian dibuat ulang, menghasilkan `DELETE` acara, dan kemudian `INSERT` acara baru.

1. Hasilkan `MODIFY` acara dengan menambahkan atribut ke item:

   1. Pilih item dari daftar, dan dari menu **Tindakan**, pilih **Edit item**.

   1. Dari menu **Add new attribute**, pilih **Number**.

   1. Untuk nama atribut, masukkan **Tahun**, lalu masukkan nilai untuk atribut. Pilih **Save and close** (Simpan dan pilih).

### Mengonfirmasi pengiriman acara melalui pipa
<a name="pipes-get-started-using-target"></a>

Akhirnya, kami akan mengonfirmasi bahwa pipa berhasil memfilter dan mengirimkan peristiwa yang kami hasilkan dengan membuat dan mengedit item tabel di DynamoDB.

1. Pada halaman detail pipa, di bawah **Komponen Pipa**, pilih tab **Target**.

1. Di bawah **Target**, pilih nama antrian Amazon SQS.

   Ini membuka konsol Amazon SQS di jendela terpisah, dengan detail antrian target ditampilkan.

1. Pilih **Kirim dan terima pesan**.

1. Di bawah **Menerima pesan**, pilih **Poll untuk pesan**.

   Amazon SQS memuat pesan yang diterima ke dalam antrian. Klik pada pesan individual untuk melihat detailnya.

   Harus ada tiga pesan acara dalam antrian: 
   + Dua tipe`INSERT`, satu dihasilkan saat Anda pertama kali membuat item tabel, dan yang lainnya dihasilkan saat Anda membuat ulang item dengan mengubah nilai kunci.
   + Salah satu jenis`MODIFY`, dihasilkan saat Anda menambahkan atribut ke item tabel.

   Perhatikan bahwa tidak ada pesan acara bertipe `DELETE` dalam antrian, meskipun pesan tersebut dihasilkan saat Anda menghapus dan membuat ulang item tabel dengan mengubah nilai kunci. Filter pipa yang kami tentukan hanya memilih `INSERT` aktif dan`MODIFY`, jadi pipa menyaring `DELETE` acara daripada mengirimkannya ke antrian.

## Bersihkan: menghapus sumber daya
<a name="pipes-get-started-delete"></a>

Sebagai langkah terakhir, kami akan menghapus tumpukan dan sumber daya yang dikandungnya.

**penting**  
Anda akan ditagih untuk sumber daya Amazon yang terkandung dalam tumpukan selama itu ada.

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation/](https://console.aws.amazon.com/cloudformation/).

1. Pada halaman **Stacks**, pilih tumpukan yang dibuat dari templat, lalu pilih **Hapus**, lalu konfirmasikan **Hapus**.

   CloudFormation memulai penghapusan tumpukan dan semua sumber daya yang disertakan.

## CloudFormation rincian template
<a name="pipes-get-started-template-details"></a>

Template ini membuat sumber daya dan memberikan izin di akun Anda.

### Sumber daya
<a name="pipes-get-started-template-resources"></a>

 CloudFormation Template untuk tutorial ini akan membuat sumber daya berikut di akun Anda:

**penting**  
Anda akan ditagih untuk sumber daya Amazon yang digunakan jika Anda membuat tumpukan dari template ini.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html): Tabel DynamoDB yang bertindak sebagai sumber peristiwa untuk pipa. 
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html): Antrian Amazon SQS yang bertindak sebagai target untuk peristiwa yang mengalir melalui pipa.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html): Peran eksekusi IAM yang memberikan izin ke layanan EventBridge Pipes di akun Anda.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html): Pipa yang menghubungkan tabel DynamoDB ke antrian Amazon SQS.

### Izin
<a name="pipes-get-started-template-perms"></a>

Template mencakup `AWS::IAM::Role` sumber daya yang mewakili peran eksekusi. Peran ini memberikan layanan EventBridge Pipes (`pipes.amazonaws.com`) izin berikut di akun Anda.

Izin berikut dicakup ke tabel DynamoDB dan mengalirkan template yang dibuat sebagai sumber acara untuk pipa:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

Izin berikut dicakup ke antrean Amazon SQS yang dibuat tumpukan sebagai target pipa:
+ `sqs:SendMessage`

## CloudFormation Template
<a name="pipes-get-started-template"></a>

Simpan kode JSON atau YAMB berikut sebagai file terpisah untuk digunakan sebagai CloudFormation template untuk tutorial ini.

------
#### [ JSON ]

```
{
  "AWSTemplateFormatVersion": "2010-09-09",

 "Description" : "[AWSDocs] EventBridge: pipes-get-started",

  "Parameters" : {
    "SourceTableName" : {
      "Type" : "String",
      "Default" : "pipe-example-source",
      "Description" : "Specify the name of the table to provision as the pipe source, or accept the default."
    },
  "TargetQueueName" : {
    "Type" : "String",
    "Default" : "pipe-example-target",
    "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default."
  },
    "PipeName" : {
      "Type" : "String",
      "Default" : "pipe-with-filtering-example",
      "Description" : "Specify the name of the table to provision as the pipe source, or accept the default."
    }
},
  "Resources": {
    "PipeSourceDynamoDBTable": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [{
            "AttributeName": "Album",
            "AttributeType": "S"
          },
          {
            "AttributeName": "Artist",
            "AttributeType": "S"
          }

        ],
        "KeySchema": [{
            "AttributeName": "Album",
            "KeyType": "HASH"

          },
          {
            "AttributeName": "Artist",
            "KeyType": "RANGE"
          }
        ],
        "ProvisionedThroughput": {
          "ReadCapacityUnits": 10,
          "WriteCapacityUnits": 10
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": { "Ref" : "SourceTableName" }
      }
    },
    "PipeTargetQueue": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "QueueName": { "Ref" : "TargetQueueName" }
      }
    },
    "PipeTutorialPipeRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [{
            "Effect": "Allow",
            "Principal": {
              "Service": "pipes.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "StringLike": {
                "aws:SourceArn": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      { "Ref": "AWS::Partition" },
                      ":pipes:",
                      { "Ref": "AWS::Region" },
                      ":",
                      { "Ref": "AWS::AccountId" },
                      ":pipe/",
                      { "Ref": "PipeName" }
                    ]
                  ]
                },
                "aws:SourceAccount": { "Ref" : "AWS::AccountId" }
              }
            }
          }]
        },
        "Description" : "EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.",
        "Path": "/",
        "Policies": [{
            "PolicyName": "SourcePermissions",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [{
                "Effect": "Allow",
                "Action": [
                  "dynamodb:DescribeStream",
                  "dynamodb:GetRecords",
                  "dynamodb:GetShardIterator",
                  "dynamodb:ListStreams"
                ],
                "Resource": [
                  { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] }
                ]
              }]
            }
          },
          {
            "PolicyName": "TargetPermissions",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [{
                "Effect": "Allow",
                "Action": [
                  "sqs:SendMessage"
                ],
                "Resource": [
                  { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] }
                ]
              }]
            }
          }
        ]
      }
  },
    "PipeWithFiltering": {
      "Type": "AWS::Pipes::Pipe",
      "Properties": {
        "Description" : "EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.",
        "Name": { "Ref" : "PipeName" },
        "RoleArn": {"Fn::GetAtt" : ["PipeTutorialPipeRole", "Arn"] },
        "Source": { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] },
        "SourceParameters": {
          "DynamoDBStreamParameters" : {
            "StartingPosition" : "LATEST"
         },
        "FilterCriteria" : {
          "Filters" : [ {
            "Pattern" : "{ \"eventName\": [\"INSERT\", \"MODIFY\"] }"
         }]
        }
        },
        "Target": { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] }
      }
    }
  }
}
```

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Description: '[AWSDocs] EventBridge: pipes-get-started'
Parameters:
  SourceTableName:
    Type: String
    Default: pipe-example-source
    Description: Specify the name of the table to provision as the pipe source, or accept the default.
  TargetQueueName:
    Type: String
    Default: pipe-example-target
    Description: Specify the name of the queue to provision as the pipe target, or accept the default.
  PipeName:
    Type: String
    Default: pipe-with-filtering-example
    Description: Specify the name of the table to provision as the pipe source, or accept the default.
Resources:
  PipeSourceDynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      AttributeDefinitions:
        - AttributeName: Album
          AttributeType: S
        - AttributeName: Artist
          AttributeType: S
      KeySchema:
        - AttributeName: Album
          KeyType: HASH
        - AttributeName: Artist
          KeyType: RANGE
      ProvisionedThroughput:
        ReadCapacityUnits: 10
        WriteCapacityUnits: 10
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      TableName: !Ref SourceTableName
  PipeTargetQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref TargetQueueName
  PipeTutorialPipeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: pipes.amazonaws.com
            Action: sts:AssumeRole
            Condition:
              StringLike:
                aws:SourceArn: !Join
                  - ''
                  - - 'arn:'
                    - !Ref AWS::Partition
                    - ':pipes:'
                    - !Ref AWS::Region
                    - ':'
                    - !Ref AWS::AccountId
                    - ':pipe/'
                    - !Ref PipeName
                aws:SourceAccount: !Ref AWS::AccountId
      Description: EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.
      Path: /
      Policies:
        - PolicyName: SourcePermissions
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - dynamodb:DescribeStream
                  - dynamodb:GetRecords
                  - dynamodb:GetShardIterator
                  - dynamodb:ListStreams
                Resource:
                  - !GetAtt PipeSourceDynamoDBTable.StreamArn
        - PolicyName: TargetPermissions
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - sqs:SendMessage
                Resource:
                  - !GetAtt PipeTargetQueue.Arn
  PipeWithFiltering:
    Type: AWS::Pipes::Pipe
    Properties:
      Description: EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.
      Name: !Ref PipeName
      RoleArn: !GetAtt PipeTutorialPipeRole.Arn
      Source: !GetAtt PipeSourceDynamoDBTable.StreamArn
      SourceParameters:
        DynamoDBStreamParameters:
          StartingPosition: LATEST
        FilterCriteria:
          Filters:
            - Pattern: '{ "eventName": ["INSERT", "MODIFY"] }'
      Target: !GetAtt PipeTargetQueue.Arn
```

------