Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Transformasi EventBridge masukan Amazon
Anda dapat menyesuaikan teks dari suatu peristiwa sebelum EventBridge meneruskan informasi ke target aturan. Menggunakan transformator input di konsol atauAPI, Anda menentukan variabel yang menggunakan JSON jalur untuk mereferensikan nilai di sumber peristiwa asli. Acara yang diubah dikirim ke target, bukan acara asli. Namun, parameter jalur dinamis harus mereferensikan peristiwa asli, bukan peristiwa yang diubah. Anda dapat menentukan hingga 100 variabel, menetapkan setiap nilai dari masukan. Kemudian Anda dapat menggunakan variabel-variabel tersebut di Template Input sebagai <variable-name
>.
Untuk tutorial tentang menggunakan pengubah masukan, lihat Tutorial: Gunakan transformator input untuk mengubah acara di EventBridge.
catatan
EventBridge tidak mendukung semua sintaks JSON Path dan mengevaluasinya saat runtime. Sintaks yang didukung meliputi:
notasi titik (misalnya,
$.detail
)tanda hubung
menggarisbawahi
karakter alfanumerik
indeks array
wildcard (*)
Dalam topik ini:
- Variabel yang telah ditetapkan
- Contoh transformasi masukan
- Mengubah masukan dengan menggunakan EventBridge API
- Mengubah masukan dengan menggunakan AWS CloudFormation
- Masalah Umum dengan mengubah input
- Mengkonfigurasi transformator input saat membuat aturan di EventBridge
- Menguji transformator input target menggunakan EventBridge Sandbox
Variabel yang telah ditetapkan
Ada variabel yang telah ditentukan sebelumnya yang 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) dari EventBridge aturan. -
aws.events.rule-name
— Nama EventBridge aturan. -
aws.events.event.ingestion-time
— Waktu di mana acara diterima oleh EventBridge. Ini adalah stempel ISO waktu 8601. Variabel ini dihasilkan oleh EventBridge dan tidak dapat ditimpa. -
aws.events.event
— Payload acara asli sebagai JSON (tanpadetail
bidang). Hanya dapat digunakan sebagai nilai untuk JSON bidang, karena isinya tidak lolos. -
aws.events.event.json
— Muatan acara asli lengkap sebagaiJSON. (dengandetail
lapangan). Hanya dapat digunakan sebagai nilai untuk JSON bidang, karena isinya tidak lolos.
Contoh transformasi masukan
Berikut ini adalah contoh EC2 acara Amazon.
{
"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
Jalur Masukan digunakan untuk menetapkan variabel. Gunakan JSON jalur untuk referensi item dalam acara Anda dan simpan nilai-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
EventBridge menggantikan transformator input saat runtime untuk memastikan output yang valid. JSON Karena itu, letakkan tanda kutip di sekitar variabel yang merujuk ke parameter JSON jalur, tetapi jangan letakkan tanda kutip di sekitar variabel yang merujuk ke JSON objek atau array.
{
"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.
catatan
Amazon CloudWatch Log dan SSM target tidak mendukung penggunaan Input
dan InputPath
dalam transformator inputnya.
Template masukan
Templat Masukan adalah templat untuk informasi yang ingin Anda lewatkan ke target Anda. Anda dapat membuat template yang melewati string atau JSON 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 di EventBridge konsol. AWS CLI
keluar dari karakter garis miring dan hasilnya adalah |
Sederhana JSON |
|
|
JSONdengan string dan variabel |
|
|
JSONdengan campuran variabel dan informasi statis |
|
|
Termasuk variabel yang dicadangkan di JSON |
|
|
Termasuk variabel cadangan dalam string |
|
|
Grup CloudWatch log Amazon |
|
|
Mengubah masukan dengan menggunakan EventBridge API
Untuk informasi tentang penggunaan input EventBridge API to transform, lihat Menggunakan Input Transformer untuk mengekstrak data dari suatu peristiwa dan memasukkan data tersebut ke target.
Mengubah masukan dengan menggunakan AWS CloudFormation
Untuk informasi tentang menggunakan AWS CloudFormation untuk mengubah input, lihat AWS: :Events: InputTransformer :Rule.
Masalah Umum dengan mengubah input
Ini adalah beberapa masalah umum saat mengubah input di EventBridge:
-
Untuk String, tanda kutip diperlukan.
-
Tidak ada validasi saat membuat JSON path untuk template Anda.
-
Jika Anda menentukan variabel untuk mencocokkan JSON jalur yang tidak ada dalam acara tersebut, variabel tersebut tidak dibuat dan tidak akan muncul di output.
-
JSONproperti seperti hanya
aws.events.event.json
dapat digunakan sebagai nilai JSON bidang, bukan sebaris di string lain. -
EventBridge tidak lolos dari nilai yang diekstraksi oleh Jalur Input, saat mengisi Template Input untuk target.
-
Jika JSON jalur mereferensikan JSON objek atau array, tetapi variabel direferensikan dalam string, EventBridge menghapus tanda kutip internal untuk memastikan string yang valid. Misalnya, untuk variabel yang
<detail>
ditunjuk$.detail
, “Detail is<detail>” akan mengakibatkan EventBridge penghapusan tanda kutip dari objek.Oleh karena itu, jika Anda ingin menampilkan JSON objek berdasarkan variabel JSON jalur tunggal, Anda harus menempatkannya sebagai kunci. Dalam contoh ini,
{"detail": <detail>}
. -
Kutipan tidak diperlukan untuk variabel yang mewakili string. Mereka diizinkan, tetapi EventBridge secara otomatis menambahkan tanda kutip ke nilai variabel string selama transformasi, untuk memastikan output transformasi validJSON. EventBridge tidak menambahkan tanda kutip ke variabel yang mewakili JSON objek atau array. Jangan menambahkan tanda kutip untuk variabel yang mewakili JSON objek atau array.
Misalnya, template input berikut mencakup variabel yang mewakili string dan JSON objek:
{ "ruleArn" : <aws.events.rule-arn>, "ruleName" : <aws.events.rule-name>, "originalEvent" : <aws.events.event.json> }
Menghasilkan valid JSON dengan kutipan yang tepat:
{ "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }
-
Untuk output teks (non-JSON) sebagai string multi-baris, bungkus setiap baris terpisah di template input Anda dalam tanda kutip ganda.
Misalnya, jika Anda mencocokkan Amazon Inspector Finding event dengan pola event berikut:
{ "detail": { "severity": ["HIGH"], "status": ["ACTIVE"] }, "detail-type": ["Inspector2 Finding"], "source": ["inspector2"] }
Dan menggunakan jalur input berikut:
{ "account": "$.detail.awsAccountId", "ami": "$.detail.resources[0].details.awsEc2Instance.imageId", "arn": "$.detail.findingArn", "description": "$.detail.description", "instance": "$.detail.resources[0].id", "platform": "$.detail.resources[0].details.awsEc2Instance.platform", "region": "$.detail.resources[0].region", "severity": "$.detail.severity", "time": "$.time", "title": "$.detail.title", "type": "$.detail.type" }
Anda dapat menggunakan template input di bawah ini untuk menghasilkan output string multi-baris:
"<severity> severity finding <title>" "Description: <description>" "ARN: \"<arn>\"" "Type: <type>" "AWS Account: <account>" "Region: <region>" "EC2 Instance: <instance>" "Platform: <platform>" "AMI: <ami>"