TL

Cloud Service

OCI Events

OCI リソースの状態変化(CloudEvents 形式)をルールで検知し、Functions / Notifications / Streaming へ自動連携するサーバーレスのイベントサービス。AWS の Amazon EventBridge に相当。

中級運用上の優秀性信頼性セキュリティ
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.OCIリソースの状態変化を条件で振り分けるイベント中継所。
  • 2.Functions/Notifications/Streaming へ疎結合に自動連携。
  • 3.配信は最低1回で重複前提、アクションは冪等に作る。

解決する課題

OCI リソースの状態変化を起点に、運用作業や連携処理を自動化したいというニーズに応えます。

  • S が起きたら T を実行」をポーリングなしで疎結合に組みたい
  • 多数の OCI サービスが出すイベントを条件で振り分け、必要なものだけ処理したい
  • 「オブジェクトがアップされたら関数を起動」「重大イベントをメール/Slack で即通知」を接着剤的に書きたい
  • 監査やセキュリティ対応をイベント駆動で自動化したい(例: バケットがパブリック化されたら是正関数を起動)

主要概念と用語

  • イベント(Event): OCI リソースの状態変化を表す JSON メッセージ。CloudEvents(CNCF) 仕様に準拠し、eventType source data(リソース OCID・コンパートメント等)などの属性を持つ
  • イベントタイプ(Event Type): 各サービスが定義する識別子(例: com.oraclecloud.objectstorage.createobject)。Oracle が定義したものを購読する(任意の独自アプリイベントを直接投入する仕組みではない点が EventBridge と異なる)
  • ルール(Rule): 「**条件(Condition)**に一致したイベント」を「アクション(Action)」へ流す定義。コンパートメント単位で作成
  • 条件(Condition): イベントタイプや、data 内の属性値(タグ・リソース名など)でフィルタする JSON。属性・値のペアで一致判定
  • アクション(Action): ルールのターゲット。Functions / Notifications(ONS)/ Streaming の3種類のみ
  • Notifications(ONS): メール・Slack・PagerDuty・カスタム HTTPS・SMS などへ同報するサブスクリプション基盤
  • Connector Hub(Service Connector): Events とは別サービス。ログ/メトリクス/イベントを継続的に他サービスへ転送するパイプライン

仕様・制限・クォータ

  • 対応サービスは Object Storage / Database / Compute / Networking / Functions / IAM など多数。ただしイベントを発行するサービス/イベントタイプは Oracle 側が定義したものに限る
  • 1ルールに複数アクションを設定可能。条件は内容ベース(属性・値でフィルタ)
  • 配信はニアリアルタイムかつ at-least-once(最低1回)。同一イベントが重複配信されうるため、アクション側は冪等に作る
  • リソース(ルール)は IAM ポリシー+コンパートメントで管理し、テナンシ/リージョン単位のサービス制限があり引き上げ申請が可能
  • Events 自体にはスケジュール(cron)機能はない。定期実行は別サービスの Resource Scheduler や Functions+外部トリガーで実現する(EventBridge Scheduler に相当する機能は分離されている)
独自アプリイベントの扱い

EventBridge はカスタムバスへ任意の独自イベントを PutEvents で投入できますが、OCI Events が購読するのはOracle 定義のリソースイベントが中心です。アプリ固有のイベントを流したい場合は Streaming(Kafka 互換)Queue を使うのが定石です。

内部の仕組み

OCI リソースで状態変化が起きると、各サービスが CloudEvents 形式のイベントを Events サービスへ発行します。Events は受信したイベントを、コンパートメント内のルールの条件(イベントタイプや data 属性値)と突き合わせ、一致したルールのアクション(Functions / Notifications / Streaming)へ配信します。

  • Notifications はサブスクライバ(メール・Slack 等)へ同報Functionsサーバーレス処理を起動、Streaming順序付きの取り込みに向く——用途でアクションを選ぶ
  • 配信は at-least-once。ネットワーク再試行などで重複が起こりうるため、関数側で処理済み判定を入れて冪等にする
  • 条件は単なる同報ではなくイベントの中身でルーティングできるのが要点。SNS 的な単純同報の Notifications と組み合わせて使う
冪等性を前提に設計する

Events は at-least-once 配信。同じイベントが2回届いても安全なように、アクション(特に Functions)ではイベント ID やリソース状態をキーに重複実行を抑止しましょう。

設計パターン / ベストプラクティス

  • イベント駆動の自動化: 「Object Storage への putObject → Functions で画像変換」など、ポーリングを排した疎結合連携
  • セキュリティ自動是正: 「バケットがパブリック化された/NSG が変更された」イベントを検知し、是正用 Functions を起動
  • 重大イベントの即時通知: DB バックアップ失敗・インスタンス停止などを Notifications でメール/Slack/PagerDuty へ
  • 取り込みの分離: 高頻度・順序保証が要るなら Streaming をアクションにして後段でまとめて処理(バックプレッシャ吸収)
  • 冪等+リトライ前提: アクションは冪等に。長時間処理は Functions から Streaming / Queue に逃がして再試行可能に
  • 継続転送が目的なら Connector Hub: 単発ルーティングは Events、ログ/メトリクスの常時パイプラインは Connector Hub と使い分け

運用・監視

  • ルールにマッチしない → 条件(イベントタイプ・属性値) が実際のイベント JSON と一致しているか検証。コンパートメント違いにも注意
  • 配信されない → アクション側の IAM ポリシー(Events がそのリソースを呼べるか)と対象リソースの状態を確認
  • メトリクスは OCI Monitoring(名前空間 oci_events)。RuleMatches(条件一致数)や配信成功/失敗系メトリクスで挙動を可視化
  • ルールの作成・変更・削除は Audit ログで追跡
  • 関数側の失敗は OCI Logging で関数ログを確認(重複起動・タイムアウトの切り分け)

コスト

OCI Events のルール評価・配信自体は基本的に追加料金なしで、実際に課金されるのは起動先(アクション)のサービスです。コストはアクションの選び方で決まります。

課金対象考え方コスト最適化のヒント
Events(ルール評価/配信)ルールのマッチ・配信自体は基本無料条件で早めに絞り、不要イベントを後段へ流さない
Functions(アクション)呼び出し回数 + 実行時間(GB秒)で課金処理を軽量・短時間に。無駄な起動を条件で抑止
Notifications(アクション)配信メッセージ数/エンドポイント種別で課金通知は重大イベントに限定し過剰通知を避ける
Streaming(アクション)パーティション時間 + 取り込み/取得量で課金必要なパーティション数に最適化し過剰確保を避ける

セキュリティ

  • IAM ポリシー+コンパートメントでルール作成権限と、Events がアクションを起動する権限を最小化する
  • Events から Functions/Streaming/Notifications を呼ぶには、そのサービスへの許可ポリシーが必要(allow service ... 形式)。過剰な権限を付けない
  • 機密データを含むイベントは、転送先(Streaming トピックや関数ログ)での露出範囲に注意。秘密情報は Vault(Secrets) で扱う
  • セキュリティイベント(パブリック化・権限変更)を検知して自動是正する“防御的”な使い方が有効
アンチパターン

ルールのアクション(Functions)に広すぎる動的グループ/ポリシーを与え、関数が無関係なリソースまで操作できる状態は NG。最小権限で「そのルールの目的に必要なリソースだけ」を許可し、機密情報は関数の config に直書きせず Vault(Secrets) から取得しましょう。

関連サービス・比較(AWS との対応)

観点OCI EventsAmazon EventBridge
位置づけOCI リソースイベントのルーティングイベントバス型のルーティング基盤
イベント形式CloudEvents(CNCF 標準)独自 JSON(detail 構造)
イベント源Oracle 定義の OCI リソースイベント中心AWS/SaaS/カスタム(PutEvents で任意投入可)
振り分け単位ルール + 条件(属性/値)ルール + イベントパターン
アクション(ターゲット)Functions / Notifications / Streaming の3種Lambda/SQS/SNS/Step Functions など多数
スケジュール実行Events外(Resource Scheduler 等)EventBridge Scheduler に内蔵
配信保証at-least-once(重複あり前提)at-least-once(リトライ/DLQ)
権限付与IAM ポリシー + コンパートメントIAM + リソースベースバスポリシー

ハンズオン / CLI例

OCI Events の操作は OCI CLIoci events)で行います。条件(condition)とアクション(actions)を JSON で指定してルールを作成します。

# Object Storage の putObject イベントを Functions に流すルールを作成
# condition: イベントタイプで絞り込み / actions: 起動する関数を指定
oci events rule create \
  --compartment-id ocid1.compartment.oc1..xxxxx \
  --display-name on-object-upload \
  --is-enabled true \
  --condition '{"eventType":["com.oraclecloud.objectstorage.createobject"]}' \
  --actions '{"actions":[{"actionType":"FAAS","isEnabled":true,"functionId":"ocid1.fnfunc.oc1..xxxxx"}]}'

# 重大イベントを Notifications トピックへ通知するルール(メール/Slack 等へ同報)
oci events rule create \
  --compartment-id ocid1.compartment.oc1..xxxxx \
  --display-name notify-db-backup-failed \
  --is-enabled true \
  --condition '{"eventType":["com.oraclecloud.databaseservice.autonomous.database.backup.end"]}' \
  --actions '{"actions":[{"actionType":"ONS","isEnabled":true,"topicId":"ocid1.onstopic.oc1..xxxxx"}]}'

# コンパートメント内のルールを一覧
oci events rule list \
  --compartment-id ocid1.compartment.oc1..xxxxx \
  --query "data[].{name:\"display-name\", enabled:\"is-enabled\", id:id}" --output table

# 既存ルールの条件を更新(属性値でさらに絞り込む例)
oci events rule update \
  --rule-id ocid1.eventrule.oc1..xxxxx \
  --condition '{"eventType":["com.oraclecloud.objectstorage.createobject"],"data":{"additionalDetails":{"bucketName":"prod-uploads"}}}'

OCI Service

OCI Eventsを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アプリ統合

比較で見る軸

クラウド: OCI / カテゴリ: アプリ統合 / 難易度: intermediate

導入後に効く点

Functions/Notifications/Streaming へ疎結合に自動連携。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
OCI
カテゴリ
アプリ統合
難易度
intermediate
関連資格
設計柱
operational / reliability / security

判断チェックリスト

  • 自社の用途が「アプリ統合 / operational」に近いか確認する。
  • 強みである「OCIリソースの状態変化を条件で振り分けるイベント中継所。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アプリ統合operationalreliabilitysecurity

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。