Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AmazonEventBridgetransformasi masukan
Anda dapat menyesuaikan teks dariperistiwasebelumnyaEventBridgemeneruskan informasi ketargetdari sebuahaturan. Dengan menggunakan pengubah masukan di konsol atau API, Anda menentukan variabel yang menggunakan jalur JSON untuk nilai referensi dalam sumber peristiwa asli. Peristiwa yang diubah dikirim ke target, bukan acara asli. Namun,parameter jalur dinamisharus mereferensikan peristiwa asli, bukan peristiwa yang diubah. Anda dapat menentukan hingga 100 variabel, menetapkan setiap nilai dari masukan. Kemudian Anda dapat menggunakan variabel tersebut di Templat Masukan sebagai <nama-variabel
>.
Untuk tutorial tentang menggunakan pengubah masukan, lihat Tutorial: Gunakan transformator input untuk menyesuaikan apa yang EventBridge lolos ke target peristiwa.
catatan
EventBridgetidak mendukung semua sintaks JSON Path dan mengevaluasinya saat runtime. Sintaks yang didukung meliputi:
notasi titik (misalnya,
$.detail
)garis putus-putus
menggarisbawahi
karakter alfanumerik
indeks array
wildcard (*)
Dalam topik ini:
- Variabel yang telah ditetapkan
- Contoh transformasi masukan
- Mengubah input dengan menggunakanEventBridgeAPI
- Mengubah masukan dengan menggunakanAWS CloudFormation
- Masalah Umum dengan mengubah input
- Mengkonfigurasi transformator input sebagai bagian dari pembuatan aturan
- Menguji transformator input target menggunakanEventBridgeKotak pasir
Variabel yang telah ditetapkan
Terdapat variabel yang telah ditetapkan dapat Anda gunakan tanpa menentukan jalur JSON. Variabel tersebut dicadangkan, dan Anda tidak dapat membuat variabel dengan nama tersebut:
-
aws.events.rule-arn
— Nama Sumber Daya Amazon (ARN) dariEventBridgeaturan. -
aws.events.rule-name
— Nama dariEventBridgeaturan. -
aws.events.event.ingestion-time
— Waktu di mana acara tersebut diterima olehEventBridge. Ini adalah stempel waktu ISO 8601. Variabel ini dihasilkan olehEventBridgedan tidak bisa ditimpa. -
aws.events.event
— Payload acara asli sebagai JSON (tanpadetail
lapangan). Hanya dapat digunakan sebagai nilai untuk bidang JSON, karena isinya tidak lolos. -
aws.events.event.json
— Muatan acara asli lengkap sebagai JSON. (dengandetail
lapangan). Hanya dapat digunakan sebagai nilai untuk bidang JSON, karena isinya tidak lolos.
Contoh transformasi masukan
Berikut ini adalah peristiwa Amazon EC2 contoh.
{
"version": "0",
"id": "7bf73129-1428-4cd3-a780-95db273d1602",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "123456789012",
"time": "2015-11-11T21:29:54Z",
"region": "us-east-1",
"resources": [
"arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
],
"detail": {
"instance-id": "i-0123456789",
"state": "RUNNING"
}
}
Ketika menetapkan aturan di konsol, pilih opsi Pengubah Masukan di bawah Konfigurasi masukan. Opsi ini menampilkan dua kotak teks: satu untuk Jalur Masukan dan satu untuk Templat Masukan.
Jalur Masukan digunakan untuk menetapkan variabel. Gunakan jalur JSON untuk item referensi dalam peristiwa Anda dan menyimpan nilai tersebut dalam variabel. Sebagai contoh, Anda dapat membuat Jalur Masukan untuk nilai referensi dalam peristiwa contoh dengan memasukkan hal berikut dalam kotak teks pertama. Anda juga dapat menggunakan tanda kurung dan indeks untuk mendapatkan item dari array.
catatan
EventBridgemenggantikan transformator input saat runtime untuk memastikan output JSON yang valid. Karena itu, letakkan tanda kutip di sekitar variabel yang merujuk ke parameter jalur JSON, tetapi jangan beri tanda kutip di sekitar variabel yang merujuk ke objek atau array JSON.
{
"timestamp" : "$.time",
"instance" : "$.detail.instance-id",
"state" : "$.detail.state",
"resource" : "$.resources[0]"
}
Ini mendefinisikan empat variabel,<timestamp>
,<instance>
,<state>
, dan<resource>
. Anda dapat mereferensikan variabel tersebut saat Anda membuat Templat Masukan.
Templat Masukan adalah templat untuk informasi yang ingin Anda lewatkan ke target Anda. Anda dapat membuat templat yang melewati baik string maupun JSON ke target. Dengan menggunakan peristiwa sebelumnya dan Jalur Masukan, contoh Templat Masukan berikut ini akan mengubah peristiwa untuk keluaran contoh sebelum merutekan ke target.
Deskripsi | Templat | Output |
---|---|---|
String sederhana |
|
|
String dengan tanda kutip lolos |
|
Perhatikan bahwa ini adalah perilaku diEventBridgekonsol. AWS CLI keluar dari karakter garis miring dan hasilnya adalah |
JSON sederhana |
|
|
JSON dengan string dan variabel |
|
|
JSON dengan campuran variabel dan informasi statis |
|
|
Termasuk variabel cadangan di JSON |
|
|
Termasuk variabel cadangan dalam string |
|
|
AmazonCloudWatchgrup log |
|
|
Mengubah input dengan menggunakanEventBridgeAPI
Untuk informasi tentang menggunakanEventBridgeAPI untuk mengubah input, lihatGunakan Input Transformer untuk mengekstrak data dari suatu peristiwa dan memasukkan data tersebut ke target.
Mengubah masukan dengan menggunakanAWS CloudFormation
Untuk informasi tentang penggunaanAWS CloudFormationuntuk mengubah input, lihatAWS::Events::Rule InputTransformer.
Masalah Umum dengan mengubah input
Ini adalah beberapa masalah umum saat mengubah inputEventBridge:
-
Untuk String, tanda kutip diperlukan.
-
Tidak ada validasi saat membuat jalur JSON untuk templat Anda.
-
Jika Anda menentukan variabel untuk mencocokkan jalur JSON yang tidak ada dalam peristiwa, variabel tersebut tidak dibuat dan tidak akan muncul dalam keluaran.
-
Properti JSON seperti
aws.events.event.json
hanya dapat digunakan sebagai nilai bidang JSON, bukan sebaris di string lain. -
EventBridgetidak lolos dari nilai yang diekstraksi olehJalur Masukan, saat mengisiTemplate Masukanuntuk sebuah target.
-
Jika jalur JSON mereferensikan objek atau array JSON, tetapi variabel direferensikan dalam string,EventBridgemenghapus tanda kutip internal untuk memastikan string yang valid. Misalnya, untuk variabel
<detail>
menunjuk pada$.detail
, “Detail is<detail>" akan menghasilkanEventBridgemenghapus tanda kutip dari objek.Oleh karena itu, jika Anda ingin menampilkan objek JSON berdasarkan variabel jalur JSON tunggal, Anda harus menempatkannya sebagai kunci. Dalam contoh ini,
{"detail": <detail>}
. -
Kutipan tidak diperlukan untuk variabel yang mewakili string. Mereka diizinkan, tetapiEventBridgesecara otomatis menambahkan tanda kutip ke nilai variabel string selama transformasi, untuk memastikan output transformasi adalah JSON yang valid. EventBridgetidak menambahkan tanda kutip ke variabel yang mewakili objek atau array JSON. Jangan menambahkan tanda kutip untuk variabel yang mewakili objek JSON atau array.
Misalnya, template input berikut mencakup variabel yang mewakili string dan objek JSON:
{ "ruleArn" : <aws.events.rule-arn>, "ruleName" : <aws.events.rule-name>, "originalEvent" : <aws.events.event.json> }
Menghasilkan JSON yang valid dengan kutipan yang tepat:
{ "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }