OracleCloudインフラストラクチャイベント は、サービスの状態の変化に基づいて、または受信したある種の入力に基づいて、自動化ベースを作成できるようにするサービスです。それでは、一歩下がって、イベント 特定の状況の発生です。この状況を有効にするには、イベントにインスタンス名、オブジェクト名、ステータスコードなどの何らかの情報を含める必要があります。この情報は、自動化に役立つ情報を提供します。
イベント サーバーレスアーキテクチャの基盤であり、イベント駆動型アーキテクチャとも呼ばれます。 。さらに、イベントは、サービスを切り離し、ソフトウェアの非同期呼び出しを行うのに役立つため、現代のソフトウェアアーキテクチャにとって非常に重要です。 スケーリングプロセスを容易にします。
イベント駆動型アーキテクチャの例:
- 画像処理アプリを開発します 。
- 新しい画像がバケットにアップロードされるたびに、イベントがトリガーされます 。
- このイベントは関数を呼び出します その画像を取得し、そこからサムネイルを作成します 。
- サムネイル 別のバケットに保存されます。
- これにより、メール通知を送信する別のイベントがトリガーされます クライアントに。
注 OCI機能はOCIのサーバーレスソリューションであり、ハードウェアやVMをプロビジョニングせずに単一目的のソフトウェアを実行できます。ソフトウェアはイベントまたはスケジュールジョブに基づいて実行され、サービスとして機能するようなものです。関数の詳細はこちら
OCIイベントに戻ると、重要な特徴のいくつかは次のとおりです。
- イベントサービスはJSONオブジェクトを使用してイベントルールを定義します 。 フィルターのようなルールを考えることができます それは、どのイベントを考慮することが重要であるかを決定し、何が入力になるかを決定します。基本的に、ルールはアクションをトリガーします 。ルールロジックの例は次のとおりです。
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
)
このイベントは、新しいコンピューティングインスタンスが作成されたときにトリガーされます
しかし...
JSON部分はどこにありますか??
イベント自体について、イベントの例を見てみましょう。
{
"eventType": "com.oraclecloud.computeapi.launchinstance.end",
"cloudEventsVersion": "0.1",
"eventTypeVersion": "2.0",
"source": "ComputeApi",
"eventTime": "2019-08-16T12:07:42.794Z",
"contentType": "application/json",
"data": {
"compartmentId": "ocid1.compartment.oc1..unique_ID",
"compartmentName": "example_compartment",
"resourceName": "my_instance",
"resourceId": "ocid1.instance.oc1.phx.unique_ID",
"availabilityDomain": "availability_domain",
"additionalDetails": {
"imageId": "ocid1.image.oc1.phx.unique_ID",
"shape": "VM.Standard2.1",
"type": "CustomerVmi"
}
},
"eventID": "unique_ID",
"extensions": {
"compartmentId": "ocid1.compartment.oc1..unique_ID"
}
}
これは、作成されたばかりのインスタンスの例であり、イベントをトリガーします。
- 条件やフィルターを追加して、イベントをさらに絞り込むことができます 。
イベントルールの構成中に、いくつかの属性を追加して、結果をさらにフィルタリングできます
この例について サンドボックスと開発での変更についてのみ、イベントタイプからの結果をフィルタリングしています コンパートメント、ロジック全体は次のようになります。
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
)
)
これに加えて、フィルター条件を追加できます タグに基づく
MATCH event WHERE (
eventType EQUALS ANY OF (
com.oraclecloud.computeapi.launchinstance.end
)
AND (
compartmentName MATCHES ANY OF (
Sandbox,
dev
)
definedTags INCLUDES ANY OF (
Oracle-Tags.CreatedBy.elopez
)
)
)
視覚的には次のようなものです。
基本的に このイベントは、インスタンスが Sandboxで起動されるたびにトリガーされます またはdev ユーザーによるコンパートメントelopez 。
- ほとんどのルールとアクション 。
ルールの主な目的は、ルールがトリガーされたときに何かを誘発することです。そうしないと、役に立たなくなります。
アクションは、一致したイベントに対して定義された応答です
アクションは、以下を使用して作成できます。
通知 トピックにサブスクライブしているエンドポイントにメッセージを送信できる通知サービスにメッセージを送信します
これらには、メールアドレス、メールグループ、Slackチャネルなどがあります。
ストリーミング このサービスを使用すると、イベントをデータストリームに取り込み、このデータに関する詳細な分析とインテリジェンスを取得します。
機能 受信したイベントに基づいて機能を実行できます。 簡単な例:
新しいインスタンスが作成されるたびにトリガーされるイベントを設定できます。これにより、その新しいインスタンスの監視を構成する関数が実行されます。
- イベントサービスがアクションサービスを呼び出すことができるように、権限を追加する必要があります 。
考慮に入れる OCIではデフォルトですべてのアクションが拒否されるため、イベントサービスがアクションを実行することを許可するポリシーを作成する必要があります。
必要な基本的な許可は次のとおりです。
Allow service cloudEvents to use ons-topic in tenancy
Allow service cloudEvents to use functions-family in tenancy
これはテナント用です ただし、特定のコンパートメントに割り当てることができます
Allow service cloudEvents to use ons-topic in compartment DEV
Allow service cloudEvents to use functions-family in compartment DEV
コンパートメントの詳細はこちら