View a markdown version of this page

Memulai: Buat EventBridge pipa Amazon - Amazon EventBridge

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

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

Tip

Untuk pengalaman belajar langsung yang lebih komprehensif, cobalah Lokakarya EventBridge Pipa. 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 rekaman dibuat atau dimodifikasi dalam tabel database, pipa mengirimkan peristiwa yang dihasilkan ke antrian.

Pipa yang dikerahkan terdiri dari:

  • Tabel DynamoDB (dan aliran) untuk bertindak sebagai sumber pipa, dan antrian Amazon SQS sebagai target.

  • Peran eksekusi yang memberikan izin EventBridge 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, lihatDetail templat.

Peristiwa database dicocokkan dengan filter, dan dikirim ke antrian jika cocok.

Membuat pipa menggunakan CloudFormation

Untuk membuat pipa dan sumber daya terkaitnya, 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.

Pertama, buat CloudFormation template.

  1. Di Templat bagian tersebut, klik ikon salin pada tab JSON atau YAML untuk menyalin konten template.

  2. Tempelkan isi template ke file baru.

  3. Simpan file secara lokal.

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

  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  2. Pada halaman Stacks, dari menu Buat tumpukan, pilih dengan sumber daya baru (standar).

  3. Tentukan template:

    1. Di bawah Prasyarat, pilih Pilih template yang ada.

    2. Di bawah Tentukan template, pilih Unggah file template.

    3. Pilih Pilih file, navigasikan ke file template, dan pilih.

    4. Pilih Berikutnya.

  4. Tentukan detail tumpukan:

    1. Masukkan nama tumpukan.

    2. Untuk parameter, terima nilai default atau masukkan sendiri.

    3. Pilih Berikutnya.

  5. 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 penghapusannya menentukan bahwa sumber daya tersebut akan dipertahankan meskipun pembuatan tumpukan gagal. Untuk informasi selengkapnya, lihat DeletionPolicy atribut di Panduan CloudFormation Pengguna.

    2. Terima semua nilai default lainnya.

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

    4. Pilih Berikutnya.

  6. Tinjau detail tumpukan dan pilih Kirim.

Buat tumpukan menggunakan CloudFormation (AWS CLI)

Anda juga dapat menggunakan AWS CLI untuk membuat tumpukan.

  • Gunakan perintah create-stack.

    • Terima nilai parameter template default, tentukan nama tumpukan. Gunakan template-body parameter untuk meneruskan isi 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 lebih 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 membuat tumpukan. Setelah pembuatan tumpukan selesai, sumber daya tumpukan siap digunakan. Anda dapat menggunakan tab Resources pada halaman detail tumpukan untuk melihat sumber daya yang disediakan di akun Anda.

Menjelajahi kemampuan pipa

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

  1. Buka EventBridge konsol di https://console.aws.amazon.com/events/home? #/pipa.

  2. Pilih pipa yang Anda buat.

    Pada halaman detail pipa, bagian Komponen Pipa menampilkan sumber daya yang membentuk pipa, dan berisi tab yang memberikan rincian lebih lanjut tentang setiap komponen.

    Halaman detail pipa secara grafis menampilkan komponen sumber, filter, dan target untuk pipa.

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

Memeriksa filter pipa

Sebelum kita menguji operasi pipa, mari kita periksa filter yang telah kita tentukan untuk mengontrol peristiwa mana yang dikirim ke target. Pipa hanya akan mengirim peristiwa yang cocok 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 Pen yaringan.

    Kami telah menyertakan filter yang hanya memilih peristiwa yang eventName disetel ke INSERT atauMODIFY.

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

Mengirim acara melalui pipa

Selanjutnya, kita akan menghasilkan peristiwa di sumber pipa untuk menguji apakah penyaringan pipa dan pengiriman 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 Kompon en Pipa, pilih tab Sumber.

  2. Di bawah Sumber, pilih nama aliran DynamoDB.

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

  3. Pilih Jelajahi item.

  4. Hasilkan INSERT acara dengan membuat item dalam tabel:

    1. Pilih Buat item.

    2. Tambahkan nilai untuk atribut Album dan Artis.

    3. Pilih Buat item.

  5. Hasilkan DELETE a dan INSERT acara dengan mengedit item:

    1. Pilih item dari daftar, dan dari menu Tind akan, pilih Edit item.

    2. Masukkan nilai baru untuk atribut Album atau Artis.

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

      Hal ini mengakibatkan item dihapus dan kemudian dibuat ulang, menghasilkan DELETE acara, dan kemudian INSERT acara baru.

  6. Hasilkan MODIFY acara dengan menambahkan atribut ke item:

    1. Pilih item dari daftar, dan dari menu Tind akan, pilih Edit item.

    2. Dari menu Tambahkan atribut baru, pilih Nomor.

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

Mengkonfirmasikan pengiriman acara melalui pipa

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 Kompon en Pipa, pilih tab Target.

  2. Di bawah Target, pilih nama antrian Amazon SQS.

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

  3. Pilih Kirim dan terima pesan.

  4. Di bawah Terima pesan, pilih Polling untuk pesan.

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

    Seharusnya ada tiga pesan acara dalam antrian:

    • Dua jenisINSERT, satu dihasilkan saat Anda pertama kali membuat item tabel, dan yang lainnya dihasilkan saat Anda membuat ulang item dengan mengubah nilai kunci.

    • Salah satu jenisMODIFY, dihasilkan saat Anda menambahkan atribut ke item tabel.

    Perhatikan bahwa tidak ada pesan acara jenis 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 pada INSERT danMODIFY, sehingga pipa menyaring DELETE acara daripada mengirimkannya ke antrian.

Bersihkan: menghapus sumber daya

Sebagai langkah terakhir, kita 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/.

  2. Pada halaman Stacks, pilih tumpukan yang dibuat dari template, lalu pilih Hapus, lalu kon firmasikan H apus.

    CloudFormation memulai penghapusan tumpukan dan semua sumber daya yang disertakan.

CloudFormation rincian template

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

Sumber daya

Tem CloudFormation plate 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.

  • AWS::DynamoDB::Table: Tabel DynamoDB yang bertindak sebagai sumber peristiwa untuk pipa.

  • AWS::SQS::Queue: Antrian Amazon SQS yang bertindak sebagai target untuk peristiwa yang mengalir melalui pipa.

  • AWS::IAM::Role: Peran eksekusi IAM yang memberikan izin ke layanan P EventBridge ipes di akun Anda.

  • AWS::Pipes::Pipe: Pipa yang menghubungkan tabel DynamoDB ke antrian Amazon SQS.

Izin

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

Izin berikut dicakup ke tabel DynamoDB dan streaming yang dibuat template sebagai sumber peristiwa untuk pipa:

  • dynamodb:DescribeStream

  • dynamodb:GetRecords

  • dynamodb:GetShardIterator

  • dynamodb:ListStreams

Izin berikut dicakup ke antrian Amazon SQS yang dibuat tumpukan sebagai target pipa:

  • sqs:SendMessage

CloudFormation templat

Simpan kode JSON atau YAML 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