ノート:

OCI Events ServiceおよびOCI Functionsを使用したOCIプライベート・ストリームへのイベントの書込み

イントロダクション

Oracle Cloud Infrastructure (OCI) Events Serviceのルールは、Cloud Native Computing Foundation (CNCF)のCloudEvents標準に準拠するイベントを使用して、OCIでのリソース変更を追跡します。これにより、開発者は、OCI Functionsでコードをトリガーしたり、OCI Streamingにデータを書き込んだり、OCI Notificationsを使用してアラートを送信したりすることで、リアルタイムの変更に対応できます。

パブリック・ストリームへのイベント送信はネイティブにサポートされますが、プライベート・ストリームへの書込みには、OCI関数またはカスタム・コードを使用したカスタム・アプローチが必要です。このチュートリアルでは、OCI関数を使用して、OCIイベント・サービス・ルールからイベント・ペイロードを取得し、プライベート・ストリームに書き込む方法を示します。

目標

前提条件

タスク1: 必要なポリシーおよびOracle Cloud Infrastructure Identity and Access Management (OCI IAM)権限の設定

このソリューションの各コンポーネントは、相互作用するOCIリソースにアクセスできる必要があります。このチュートリアルに従うには、開発者が次の権限を持っている必要があります。

詳細なポリシーはここにあります。

タスク2: プライベート・ストリームの作成

OCI Streamingは、保存中および転送中にデータが暗号化されるフルマネージドOCIサービスであり、メッセージの整合性とセキュリティを確保します。セキュリティを強化するために、OCI Vaultサービスを使用して、特定のコンプライアンスまたはセキュリティ要件を満たす独自の暗号化キーを格納および管理できます。プライベート・エンドポイントは、Virtual Cloud Network (VCN)内で構成して、ストリームをさらに保護し、プライベートIPアドレスをストリーム・プールに関連付けることができます。これにより、OCIストリーミング・トラフィックがVCN内にとどまり、インターネット全体が回避されます。ただし、プライベート・エンドポイントを使用するストリームにはインターネットからアクセスできず、コンソールを介して最新のメッセージを表示する機能も制限されることに注意してください。プライベート・ストリームからのメッセージを消費するには、コンシューマには、プライベート・ストリームがホストされているネットワークへのルートとアクセスの両方が必要です。

ストリームおよびストリーム・プールを作成します。「ストリーム名」と入力し、「新規ストリーム・プールの作成」を選択してストリーム・プールを作成します。「ストリーム・プールの構成」セクションで、「ストリーム・プール名」を入力し、「プライベート・エンドポイント」を選択して、それに応じてVCNおよび「サブネット」およびネットワークの詳細を入力します。オプションですが、ネットワーク・セキュリティ・グループに、そのNSG内のすべてのトラフィックに対するイングレス・ルールを提供することをお薦めします。詳細は、ストリームの作成およびストリーム・プールの作成を参照してください。

NSGルールのイメージ

ストリームおよびストリーム・プール作成のイメージ

独自の暗号化キーを使用することで、キーのライフサイクルをより詳細に制御できます。ストリーム内のメッセージの保存を調整するオプションがあります。デフォルトは1日で、最大は7日です。

ストリーム暗号化のイメージ

ストリーム・プールのイメージ

ストリームOCIDおよびメッセージ・エンドポイントを書き留めます。この情報を関数に渡す必要があります。

タスク3: OCI通知トピックおよびOCIイベント・サービス・ルールの作成

リフレッシュとして、イベントの仕組みは次のとおりです。OCIサービスは、リソースまたはデータに対してイベントを発行します。対象のイベントを指定するフィルタを含むルールを作成します。フィルタが一致するイベントを見つけたときにアクションをトリガーする必要があります。アクションは、OCI通知トピック、OCIストリーミング・サービスまたはOCI Functionsです。

このチュートリアルでは、最も複雑なアプローチ3を確認します。

  1. OCI通知トピックを作成します。詳細は、トピックの作成を参照してください。

    通知トピックのイメージ

  2. イベント・ルールを作成します。このアプローチを正当化するために、2つのイベント・ルールを作成します。詳細は、イベント・ルールの作成を参照してください。

    CGイベントのイメージ

    アイデンティティ・イベントのイメージ

タスク4: ファンクションの開発およびデプロイ

このファンクションは、イベント・ペイロードをエンコードし、指定されたメッセージ・エンドポイントおよびストリームにパブリッシュします。詳細は、ファンクションの作成を参照してください。

Fnのイメージ

最後のステップは、プライベート・ストリームがどこにあるかを関数に伝えることです。このファンクションは、構成パラメータを使用して、別のテナンシにデプロイする場合は再利用可能にします。

Fn構成のイメージ

タスク5: 通知トピックへの関数のサブスクライブ

このタスクでは、デプロイされたファンクションをOCI通知トピックにサブスクライブします。OCI通知トピックがメッセージを受信するたびに、ファンクションがトリガーされ、ファンクションはプライベート・ストリームのイベント・ペイロードを書き込みます。

要件を満たすように機能コードを変更することで、特定のフィールドを削除または拡張できます。ファンクション・サブスクリプションの確認は必要ありません。詳細は、ファンクション・サブスクリプションの作成を参照してください。

サブスクリプションのイメージ

Subscription2のイメージ

検証

データ・フローを検証できる場所は複数あります。

  1. イベント・メトリック・ページを確認して、指定されたルールと一致するイベントがあるかどうかを確認します。障害グラフは空である必要があります。

    イベント・メトリックのイメージ

  2. OCI Notificationsのトピック・メトリックを確認します。すべてのメッセージが配信されていることを確認します。失敗したメッセージ・チャートにデータがありません。

    通知メトリックのイメージ

  3. ファンクションの起動メトリックを確認します。エラーがなく、関数がスロットルされていないことを確認します。

    Fnメトリックのイメージ

  4. データがプライベート・ストリームに取り込まれていることを確認します。

ストリーム・メトリックのイメージ

次のいずれかのチャートにデータがない場合は、そこで停止し、そのサービスのログを有効にします。ログは、特定のリソースがタスクの実行に失敗する理由を説明します。

次のステップ

このチュートリアルでは、OCIイベント・サービス、OCI通知、OCI関数およびOCIストリーミングを統合して、イベント・ペイロードを安全に処理し、プライベート・ストリームに公開する方法を学習しました。セキュアなエンドポイントの設定、暗号化キーの管理、およびOCI IAMを使用したきめ細かいアクセス制御により、認可されたユーザーとサービスのみがストリーミング・データと対話できるようにします。

このソリューションにより、チームは堅牢なセキュリティ標準を維持しながら、リソース変更をリアルタイムで取得できます。組織は、プライベート・ストリームを使用して機密データを保護し、業界の規制に準拠し、業務ワークフローが組織のセキュリティやコンプライアンスの目標に適合していることを確認できます。このアプローチにより、セキュリティ体制が強化され、チームはシームレスで安全なイベントドリブンの自動化を実現できます。

OCI FunctionsおよびOCIプライベート・ストリーム機能の使用の詳細は、Oracle担当者に連絡するか、クラウド・セキュリティ・ソリューションを参照してください。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。