All Products
Search
Document Center

CloudOps Orchestration Service:ACS::EventTrigger

Last Updated:Apr 30, 2026

Deskripsi

Aksi ACS::EventTrigger digunakan untuk menjalankan operasi O&M secara otomatis berdasarkan event. Setelah templat yang berisi aksi ACS::EventTrigger dibuat dan dieksekusi, eksekusi tersebut memasuki status Waiting. Ketika pemicu event mendeteksi terjadinya event yang dipantau, eksekusi beralih ke status Running dan tugas-tugas berikutnya yang didefinisikan dalam templat segera dijalankan. Sebagai contoh, jika Operation Orchestration Service (OOS) menerima notifikasi mengenai event interupsi instans preemptible, OOS akan menghapus instans preemptible yang terganggu tersebut dari server backend Server Load Balancer (SLB).

Operation Orchestration Service (OOS) memantau berbagai jenis event, seperti notifikasi status layanan cloud, event operasional, dan exception bisnis. Anda dapat menyaring event berdasarkan properti seperti nama CloudOps Orchestration Service, nama event, level event, dan detail event guna memastikan pemantauan yang akurat serta respons yang tepat waktu.

Batasan

Aksi ACS::AlarmTrigger memiliki batasan-batasan berikut:

  • Anda hanya dapat menggunakan satu aksi ACS::AlarmTrigger dalam satu templat.

  • Tugas yang berisi aksi ACS::AlarmTrigger harus didefinisikan sebagai tugas pertama dalam parameter Tasks suatu templat.

  • Anda tidak diperbolehkan menggunakan aksi ACS::AlarmTrigger dalam template anak.

Sintaksis

Tasks:
  - Name: taskName # Nama tugas.
    Action: 'ACS::EventTrigger'
    Properties:
      Product: productName1 # Nama layanan cloud, seperti ECS. Tipe: String. 
      Name:          # Nama event, seperti ["Instance:StateChange"]. Tipe: List. 
        - eventName1
      Level:        # Level event, seperti ["INFO"]. Tipe: List. 
        - eventLevel1
      Content:  # Detail event, seperti { "state":["Stopped"] }. Tipe: Map. 
        contenAttrKey1: # Nama atribut yang digunakan untuk menyaring detail event.
          - value1 # Nilai atribut yang digunakan untuk menyaring detail event.
    Outputs: # Opsional. Output tugas. 
      outputParameterName1: # Nama parameter output. Nama ini dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum 200 karakter. 
        ValueSelector: "jq selector" # Selektor jQuery untuk memilih data yang akan dikembalikan, seperti .content.resourceId. Selektor jQuery mengekstrak informasi dari notifikasi event dalam format JSON. 
        Type: type1 # Opsional. Tipe parameter output. Nilai yang valid mencakup tipe parameter dasar yang didukung oleh format YAML atau JSON, seperti String, Number, Boolean, List atau Array, dan Object. Nilai default: String.
{
    "Tasks": [
        {
            "Name": "taskName",
            "Action": "ACS::EventTrigger",
            "Properties": {
                "Product": "productName1",
                "Name": [
                    "eventName1"
                ],
                "Level": [
                    "eventLevel1"
                ],
                "Content": {
                    "contenAttrKey1": [
                        "value1"
                    ]
                }
            },
            "Outputs": {
                "outputParameterName1": {
                    "ValueSelector": "jq selector",
                    "Type": "type1"
                }
            }
        }
    ]
}

Format notifikasi event

Sebelum mengonfigurasi aturan penyaringan dan output untuk event yang dipantau, Anda harus memahami format notifikasi event tersebut. Notifikasi event menggunakan format JSON. Lapisan luar berisi atribut umum, sedangkan bagian content berisi detail event. Contoh kode berikut memberikan ilustrasi. Dalam contoh ini, formatnya sama dengan format notifikasi event CloudMonitor. Untuk informasi lebih lanjut mengenai format notifikasi event yang berbeda, lihat event layanan Alibaba Cloud.

Contoh:

{
    "product": "ECS",
    "resourceId": "acs:ecs:cn-shanghai:1612345678890:instance/i-abcdef",
    "level": "WARN",
    "instanceName": "instanceName",
    "regionId": "cn-hangzhou",
    "name": "Instance:PreemptibleInstanceInterruption",
    "content": {
        "instanceId": "i-abcdef",
        "action": "delete"
    }
}

Penyaringan event

  • Aturan penyaringan

    • Sebuah event hanya cocok jika event tersebut berisi semua atribut yang digunakan sebagai kondisi penyaringan dan struktur penyematan atribut kondisi penyaringan identik dengan struktur atribut event.

    • Nilai atribut kondisi penyaringan bersifat case-sensitive.

    • Jika nilai atribut kondisi penyaringan berupa array, array tersebut harus berisi setidaknya satu elemen. Jika salah satu elemen dalam array tersebut cocok dengan nilai atribut event, maka atribut kondisi penyaringan tersebut dianggap cocok dengan atribut event.

    • Dalam kasus lain, baik nilai atribut kondisi penyaringan maupun nilai atribut event keduanya berupa array. Jika salah satu elemen dalam array atribut kondisi penyaringan cocok dengan salah satu elemen dalam array atribut event, maka atribut kondisi penyaringan tersebut dianggap cocok dengan atribut event.

    • Sebuah event dipicu jika nilai semua atribut kondisi penyaringan cocok dengan nilai atribut event.

  • Atribut yang dapat didefinisikan sebagai kondisi penyaringan

    • Product: Nama layanan cloud. Untuk nilai yang valid, lihat bagian Format notifikasi event atau panggil API CloudMonitor DescribeSystemEventMetaList.

    • Name: Nama event. Untuk nilai yang valid, lihat bagian Format notifikasi event atau panggil API CloudMonitor DescribeSystemEventMetaList.

    • Level: level event. Nilai yang valid: CRITICAL, WARN, INFO, dan *. Nilai * menunjukkan semua level event.

    • Content: Detail event. Untuk atribut dan nilai yang dapat digunakan dalam penyaringan, lihat bagian Format notifikasi event.

Output event

Definisikan Outputs tugas untuk meneruskan informasi dari event yang cocok ke tugas-tugas berikutnya. Seperti pada tugas lainnya, ValueSelector memungkinkan Anda menggunakan ekspresi jq untuk mengekstrak data dari notifikasi event berformat JSON. Untuk struktur notifikasi tersebut, lihat bagian Format notifikasi event.

Contoh

Kode contoh berikut menunjukkan cara menjalankan instans Elastic Compute Service (ECS) segera setelah instans tersebut dihentikan:

---
FormatVersion: OOS-2019-06-01
Description: Start ECS instance when instance is stopped.
Parameters:
  OOSAssumeRole:
    Description: The RAM role to be assumed by OOS.
    Type: String
    Default: OOSServiceRole
RamRole: '{{OOSAssumeRole}}'
Tasks:
  - Name: whenInstanceStopped
    Action: 'ACS::EventTrigger'
    Properties:
      Product: ECS
      Name:
        - 'Instance:StateChange'
      Level:
        - INFO
      Content:
        state:
          - Stopped
    Outputs:
      InstanceId:
        ValueSelector: .content.resourceId
        Type: String
  - Name: startInstance
    Action: 'ACS::ExecuteAPI'
    Properties:
      Service: ECS
      API: StartInstance
      Parameters:
        InstanceId: '{{ whenInstanceStopped.InstanceId }}'
    Description: start instance.
Outputs:
  InstanceId:
    Value: '{{ whenInstanceStopped.InstanceId }}'
    Type: String
{
  "FormatVersion": "OOS-2019-06-01",
  "Description": "Start ECS instance when instance is stopped.",
  "Parameters": {
    "OOSAssumeRole": {
      "Description": "The RAM role to be assumed by OOS.",
      "Type": "String",
      "Default": "OOSServiceRole"
    }
  },
  "RamRole": "{{OOSAssumeRole}}",
  "Tasks": [
    {
      "Name": "whenInstanceStopped",
      "Action": "ACS::EventTrigger",
      "Properties": {
        "Product": "ECS",
        "Name": [
          "Instance:StateChange"
        ],
        "Level": [
          "INFO"
        ],
        "Content": {
          "state": [
            "Stopped"
          ]
        }
      },
      "Outputs": {
        "InstanceId": {
          "ValueSelector": ".content.resourceId",
          "Type": "String"
        }
      }
    },
    {
      "Name": "startInstance",
      "Action": "ACS::ExecuteAPI",
      "Properties": {
        "Service": "ECS",
        "API": "StartInstance",
        "Parameters": {
          "InstanceId": "{{ whenInstanceStopped.InstanceId }}"
        }
      },
      "Description": "start instance."
    }
  ],
  "Outputs": {
    "InstanceId": {
      "Value": "{{ whenInstanceStopped.InstanceId }}",
      "Type": "String"
    }
  }
}