AWS AppSync target untuk aturan di Amazon EventBridge - Amazon EventBridge

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

AWS AppSync target untuk aturan di Amazon EventBridge

AWS AppSync memungkinkan pengembang untuk menghubungkan aplikasi dan layanan mereka ke data dan acara dengan GraphQL dan Pub/Sub yang aman, tanpa server, dan berkinerja tinggi. APIs Dengan AWS AppSync, Anda dapat mempublikasikan pembaruan data real-time ke aplikasi Anda dengan mutasi GraphQL. EventBridge mendukung pemanggilan operasi mutasi GraphQL yang valid untuk peristiwa yang cocok. Saat Anda menentukan AWS AppSync API mutasi sebagai target, AWS AppSync memproses peristiwa melalui operasi mutasi, yang kemudian dapat memicu langganan yang ditautkan ke mutasi.

catatan

EventBridge mendukung AWS AppSync GraphQL APIs publik. EventBridge saat ini tidak mendukung AWS AppSync PrivateAPIs.

Anda dapat menggunakan target AWS AppSync API GraphQL untuk kasus penggunaan berikut:

  • Untuk mendorong, mengubah, dan menyimpan data peristiwa ke sumber data yang dikonfigurasi.

  • Untuk mengirim pemberitahuan real-time ke klien aplikasi yang terhubung.

Untuk informasi selengkapnya tentang AWS AppSync APIs GraphQL, lihat GraphQL dan arsitektur di Panduan AWS AppSync Pengembang.AWS AppSync

Untuk menentukan AWS AppSync target untuk EventBridge aturan menggunakan konsol
  1. Buat atau edit aturan.

  2. Di bawah Target, tentukan target dengan memilih AWS layanan dan kemudian AWS AppSync.

  3. Tentukan operasi mutasi yang akan diurai dan dieksekusi, bersama dengan set seleksi.

    • Pilih AWS AppSync API, dan kemudian mutasi API GraphQL untuk dipanggil.

    • Di bawah Konfigurasi parameter dan set pilihan, pilih untuk membuat set pilihan menggunakan pemetaan nilai kunci atau transformator input.

      Key-value mapping

      Untuk menggunakan pemetaan nilai kunci untuk membuat set pilihan Anda:

      • Tentukan variabel untuk API parameter. Setiap variabel dapat berupa nilai statis atau ekspresi JSON jalur dinamis ke payload acara.

      • Di bawah Set pilihan, pilih variabel yang ingin Anda sertakan dalam respons.

      Input transformer

      Untuk menggunakan transformator input untuk membuat set pilihan Anda:

      • Tentukan jalur input yang mendefinisikan variabel yang akan digunakan.

      • Tentukan template input untuk menentukan dan memformat informasi yang ingin Anda lewatkan ke target.

      Untuk informasi selengkapnya, lihat Mengkonfigurasi transformator input saat membuat aturan di EventBridge.

  4. Untuk peran Eksekusi, pilih apakah akan membuat peran baru atau menggunakan peran yang sudah ada.

  5. Selesaikan membuat atau mengedit aturan.

Contoh: AWS AppSync target untuk Amazon EventBridge

Dalam contoh berikut, kita akan membahas cara menentukan AWS AppSync target untuk EventBridge aturan, termasuk mendefinisikan transformasi input untuk memformat peristiwa untuk pengiriman.

Misalkan Anda memiliki AWS AppSync API GraphQLEc2EventAPI,, didefinisikan oleh skema berikut:

type Event { id: ID! statusCode: String instanceId: String } type Mutation { pushEvent(id: ID!, statusCode: String!, instanceId: String): Event } type Query { listEvents: [Event] } type Subscription { subscribeToEvent(id: ID, statusCode: String, instanceId: String): Event @aws_subscribe(mutations: ["pushEvent"]) }

Aplikasi klien yang menggunakan ini API dapat berlangganan subscribeToEvent langganan, yang dipicu oleh pushEvent mutasi.

Anda dapat membuat EventBridge aturan dengan target yang mengirimkan peristiwa ke AppSync API melalui pushEvent mutasi. Ketika mutasi dipanggil, setiap klien yang berlangganan akan menerima acara tersebut.

Untuk menentukan ini API sebagai target EventBridge aturan, Anda akan melakukan hal berikut:

  1. Tetapkan Amazon Resource Name (ARN) dari target aturan ke titik akhir GraphQLARN. Ec2EventAPI API

  2. Tentukan Operasi GraphQL mutasi sebagai parameter target:

    mutation CreatePushEvent($id: ID!, $statusCode: String, $instanceId: String) { pushEvent(id: $input, statusCode: $statusCode, instanceId: $instanceId) { id statusCode instanceId } }

    Set pilihan mutasi Anda harus menyertakan semua bidang yang ingin Anda berlangganan dalam langganan GraphQL Anda.

  3. Konfigurasikan transformator input untuk menentukan bagaimana data dari peristiwa yang cocok digunakan dalam operasi Anda.

    Misalkan Anda memilih “EC2 Instance Launch Successful” contoh acara:

    { "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": ["arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:eb56d16b-bbf0-401d-b893-d5978ed4a025:autoScalingGroupName/sampleLuanchSucASG", "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f"], "detail": { "StatusCode": "InProgress", "AutoScalingGroupName": "sampleLuanchSucASG", "ActivityId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "Details": { "Availability Zone": "us-east-1b", "Subnet ID": "subnet-95bfcebe" }, "RequestId": "9cabb81f-42de-417d-8aa7-ce16bf026590", "EndTime": "2015-11-11T21:31:47.208Z", "EC2InstanceId": "i-b188560f", "StartTime": "2015-11-11T21:31:13.671Z", "Cause": "At 2015-11-11T21:31:10Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2015-11-11T21:31:11Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1." } }

    Anda dapat menentukan variabel berikut untuk digunakan dalam template Anda, menggunakan jalur input transformator input target:

    { "id": "$.id", "statusCode": "$.detail.StatusCode", "EC2InstanceId": "$.detail.EC2InstanceId" }

    Tulis template transformator input untuk menentukan variabel yang EventBridge lolos ke operasi AWS AppSync mutasi. Template harus mengevaluasiJSON. Dengan jalur masukan kami, Anda dapat membuat template berikut:

    { "id": <id>, "statusCode": <statusCode>, "instanceId": <EC2InstanceId> }