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 AWS CloudFormation template untuk menyiapkan EventBridge pipa dan komponen terkait. Kemudian kita bisa mengeksplorasi berbagai fitur pipa.

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, lihatRincian template.

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

Membuat pipa menggunakan AWS CloudFormation

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

Pertama, buat CloudFormation template.

  1. Di Templat bagian ini, klik ikon salin pada tab JSON atau YAMAL untuk menyalin konten templat.

  2. Tempelkan konten template ke file baru.

  3. Simpan file secara lokal.

Membuat tumpukan

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

  1. Buka AWS CloudFormation konsol.

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

  3. Tentukan template:

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

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

    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 milik Anda 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 penghapusan menentukan mereka dipertahankan bahkan jika pembuatan tumpukan gagal. Untuk informasi selengkapnya, lihat DeletionPolicyatribut di Panduan AWS 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.

AWS 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

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.

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

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

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

Mengirim acara melalui pipa

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.

  2. Di bawah Sumber, pilih nama aliran DynamoDB.

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

  3. Pilih Jelajahi item tabel.

  4. Menghasilkan 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 dan INSERT acara dengan mengedit item:

    1. Pilih item dari daftar, dan dari menu Tindakan, 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.

      Ini menghasilkan item yang 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 Tindakan, pilih Edit item.

    2. Dari menu Add new attribute, pilih Number.

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

Mengonfirmasi 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 Komponen 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 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 tipeINSERT, 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 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 danMODIFY, jadi pipa menyaring DELETE acara daripada mengirimkannya ke antrian.

Bersihkan: menghapus sumber daya

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 AWS CloudFormation konsol.

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

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

Sumber daya

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

  • 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 EventBridge Pipes 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 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

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

JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template.", "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: EventBridge Pipe template example. Provisions a pipe, along with a DynamoDB stream as the pipe source and an SQS queue as the pipe target. Also provisions an execution role that contains the necessary permissions to access both the source and target. Once provisioned, the pipe receives events from the DynamoDB data stream, applies a filter, and sends matching events on to an SQS Queue. You will be billed for the Amazon resources used if you create a stack from this template. 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