イベントの開始

このトピックでは、イベントを使用した自動化の作成について説明します。テナンシの特定のコンパートメントにバケットが作成されるたびに通知を送信する単純なルールを作成します。

警告

Oracle Cloud Infrastructure Console、APIまたはCLIを使用してクラウド・リソースに説明、タグまたはわかりやすい名前を割り当てる場合、機密情報を入力しないでください。

イベントのための設定

このチュートリアルでイベント・サービスの設定を試みるには、最初に次の内容を設定する必要があります:

  • イベントIAMポリシーの作成
  • アクションとして使用するトピックおよびサブスクリプションの作成
重要

テナンシ管理者は、イベントのテナンシを構成する必要があります。これらの構成によって、必要なIAMポリシーおよびアクションとして使用するリソースを持つOracle Cloud Infrastructureテナンシにアクセスできます。

ユーザー、グループおよびコンパートメントの作成

既存のユーザー、グループ、コンパートメントを使用することも、新規に作成することもできます。

グループおよびユーザーを作成するには

ルールを操作するユーザー権限を割り当てる適切なユーザーおよびグループが存在しない場合、テナンシ管理者としてコンソールにログインし、作成します。

  1. テナンシ管理者としてコンソールにログインします。
  2. イベントのグループが必要な場合は、次のステップを実行します:
    1. ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「グループ」をクリックします。テナンシのグループのリストが表示されます。
    2. 「グループの作成」をクリックし、新規グループを作成します(グループを作成するにはを参照)。グループにわかりやすい名前および説明を指定します。機密情報の入力は避けてください。

      この図は、グループの作成方法を示しています。

  3. イベントのユーザー・アカウントが必要な場合は、次のステップを実行します:
    1. ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「ユーザー」をクリックします。テナンシのユーザーのリストが表示されます。
    2. 「ユーザーの作成」をクリックし、新規ユーザーを1つ以上作成します(ユーザーを作成するにはを参照)。

      この図は、ユーザーの作成方法を示しています

  4. ユーザーがまだグループに追加されていない場合は、次のステップを実行します:
    1. ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「グループ」をクリックします。テナンシのグループのリストが表示されます。
    2. イベントに使用するグループをクリックします。
    3. 「ユーザーをグループに追加」をクリックします。

      この図は、ユーザーをグループに追加する方法を示しています

    4. ドロップダウン・リストからユーザーを選択し、「追加」をクリックします。

コンパートメントを作成するには

ルール、およびイベントを発行するリソースに適切なコンパートメントが存在しない場合、テナンシ管理者としてコンソールにログインして、これを作成します。

  1. テナンシ管理者としてコンソールにログインします。
  2. ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「コンパートメント」をクリックします。テナンシのコンパートメントのリストが表示されます。
  3. 「コンパートメントの作成」をクリックし、新規コンパートメントを作成します(コンパートメントを作成するにはを参照)。コンパートメントにわかりやすい名前および説明を指定します。機密情報の入力は避けてください。

    このスクリーンショットは、コンパートメントの作成方法を示しています。

イベントのIAMポリシーの作成

テナンシ管理者として、ユーザーがイベントの使用を開始して自動化を作成する前に、IAMポリシーを作成する必要があります:

ユーザーにルールの作成および管理を許可するポリシーを作成するには

  1. テナンシ管理者としてコンソールにログインします。
  2. コンソールで、ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「ポリシー」をクリックします。表示しているコンパートメント内のポリシーのリストが表示されます。
  3. ルート・コンパートメントを選択します。
  4. 「ポリシーの作成」をクリックします。
  5. 次を入力します:
    • 名前: ポリシーのわかりやすい名前。この名前は、テナンシ内のすべてのポリシー間で一意である必要があります。これは後で変更できません。機密情報の入力は避けてください。
    • 説明: わかりやすい説明。これは必要に応じて後で変更できます。機密情報の入力は避けてください。
    • ステートメント: 次のポリシー・ステートメントを入力して、グループ内のユーザーがルールを管理および作成できるようにします。

      この行では、ユーザーはコンパートメントのリソースへの検査アクセス権が付与され、アクションが選択されます。

      allow group <RuleAdmins> to inspect compartments in tenancy

      この行では、ユーザーは定義済のタグへのアクセス権が付与され、フィルタ・タグがルールに適用されます。

      allow group <RuleAdmins> to use tag-namespaces in tenancy

      この行では、ユーザーはストリーミング・リソースへのアクセス権をアクションのために付与されます

      allow group <RuleAdmins> to inspect streams in tenancy
      allow group <RuleAdmins> to use stream-push in tenancy
      allow group <RuleAdmins> to use stream-pull in tenancy

      この行では、ユーザーはファンクション・リソースへのアクセス権をアクションのために付与されます。

      allow group <RuleAdmins> to use virtual-network-family in tenancy
      allow group <RuleAdmins> to manage function-family in tenancy

      この行では、ユーザーは通知トピックへのアクセス権がアクションのために付与されます。

      allow group <RuleAdmins> to use ons-topic in tenancy

      この行では、ユーザーはイベントのルールに対する管理アクセス権が付与されます。

      allow group <RuleAdmins> to manage cloudevents-rules in tenancy
  6. 「作成」をクリックします。

イベント・サービスによるトピックへのイベント・メッセージの配信を許可するポリシーを作成するには

  1. テナンシ管理者としてコンソールにログインします。
  2. コンソールで、ナビゲーション・メニューを開きます。「ガバナンスと管理」で、「アイデンティティ」に移動して「ポリシー」をクリックします。表示しているコンパートメント内のポリシーのリストが表示されます。
  3. ルート・コンパートメントを選択します。
  4. 「ポリシーの作成」をクリックします。
  5. 次を入力します:
    • 名前: ポリシーのわかりやすい名前。この名前は、テナンシ内のすべてのポリシー間で一意である必要があります。これは後で変更できません。機密情報の入力は避けてください。
    • 説明: わかりやすい説明。これは必要に応じて後で変更できます。機密情報の入力は避けてください。
    • ステートメント: 次のポリシー・ステートメントを入力して、イベント・サービスがトピックにイベント・メッセージを配信できるようにします:

      allow service cloudEvents to use ons-topic in tenancy

      次の行は、イベント・メッセージをファンクションおよびストリームに配信するためのイベントのポリシーを提供します: 

      allow service cloudEvents to use functions-family in tenancy
      allow service cloudEvents to use stream-push in tenancy 
      allow service cloudEvents to read streams in tenancy					
  6. 「作成」をクリックします。

通知トピックとサブスクリプションの作成

適切な通知トピックが存在しない場合は、テナンシ管理者としてコンソールにログインしてこれを作成する必要があります。既存のトピックを使用する場合も新しいトピックを作成する場合も、通知のためにその電子メール・アカウントをモニターできるように、サブスクリプションとして電子メール・アドレスを追加します。

トピックを作成するには

  1. ナビゲーション・メニューを開きます。「ソリューションおよびプラットフォーム」で、「アプリケーション統合」に移動して、「通知」をクリックします。
  2. トピック・リストの上部にある「トピックの作成」をクリックします。

    このスクリーンショットは、トピックの作成方法を示しています

  3. 「トピックの作成」ダイアログ・ボックスで、トピックを構成します。
    • 名前: 必須。トピックにわかりやすい名前を指定します。一意である必要があります。検証では大文字と小文字が区別されます。機密情報の入力は避けてください。
    • 説明: オプション。トピックの説明を入力します。機密情報の入力は避けてください。
  4. 「作成」をクリックします。

サブスクリプションを作成するには

  1. ナビゲーション・メニューを開きます。「ソリューションおよびプラットフォーム」で、「アプリケーション統合」に移動して、「通知」をクリックします。
  2. 前のステップで作成したトピックまたはこのチュートリアルで使用するトピックの名前をクリックします。
  3. トピックの詳細ページで、「サブスクリプションの作成」をクリックします。

    このスクリーンショットは、サブスクリプションの作成方法を示しています。

  4. 「サブスクリプションの作成」ダイアログ・ボックスで、「電子メール」を選択して電子メール・アドレスを入力します。

    このスクリーンショットは、電子メール・サブスクリプションの作成方法を示しています。

  5. 「作成」をクリックします。

    サブスクリプションが作成され、サブスクリプション確認URLが送信されます。サブスクリプションは、確認されるまで「保留中」ステータスのままです。

サブスクリプションを確認するには

  • 前の手順で指定したアドレスに送信される確認の電子メールで、確認URLをクリックします。  

コンソールを使用したルールの作成

コンソールを使用して、オブジェクト・ストレージで発行されたバケット作成イベントと一致するパターンを持つルールを作成します。一致するイベントを配信するためのアクションとして作成した通知トピックを指定します。ルールをテストするには、バケットを作成します。オブジェクト・ストレージは、アクションをトリガーするイベントを発行します。通知を受信するには、サブスクリプションで指定されている電子メールを確認します。

ルールを作成するには
  1. ナビゲーション・メニューを開きます。「ソリューションおよびプラットフォーム」グループで、「アプリケーション統合」に移動して「イベント・サービス」をクリックします。
  2. 作業の権限があるコンパートメントを選択し、「ルールの作成」をクリックします。

    イベントは、このコンパートメントに作成したルールと、このコンパートメントおよび子コンパートメントのリソースから発行されたイベント・メッセージを比較します。

  3. 次のように入力します。
    • 表示名: ルールのわかりやすい名前を指定します。この名前は後で変更できます。機密情報の入力は避けてください。
    • 説明: ルールの機能に関する説明を指定します。この説明は後で変更できます。機密情報の入力は避けてください。
  4. 「イベント照合」で、「イベント・タイプ」を選択します。
    1. 「サービス名」で、「オブジェクト・ストレージ」を選択します。
    2. 「イベント・タイプ」で、「オブジェクト・ストレージ」-「バケットの作成」を選択します。
  5. 「アクション」で、フィルタが一致を検出したときにトリガーするアクションを指定します:
    1. 「アクション・タイプ」で、「通知」を選択します。
    2. 「通知コンパートメント」で、トピックを含むコンパートメントを選択します。
    3. 「トピック」で、トピックを選択します。
  6. 「ルールの作成」をクリックします。
バケットを作成するには
  1. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「オブジェクト・ストレージ」をクリックします。
  2. ルールを作成したコンパートメント(またはその下位コンパートメントのいずれか)を選択します。
  3. 「バケットの作成」をクリックします。

    このスクリーンショットは、バケットの作成方法を示しています。

  4. 「バケットの作成」ダイアログで、バケットの属性を指定します:
    • 名前: 必須。わかりやすい名前または説明。機密情報の入力は避けてください。
    • ストレージ層: データを格納する層を選択します。使用可能な層は次のとおりです:

      • 「標準」は、高速な即時アクセスを必要とする、アクセス頻度の高いデータを格納するためのデフォルトのプライマリ・オブジェクト・ストレージ層です。
      • 「アーカイブ」は、アクセス頻度が低く、長い保持期間が必要なデータを格納するための特別な層です。アーカイブ層のデータへのアクセスは、即時に処理されません。アクセスする前にアーカイブ済データをリストアする必要があります。詳細は、アーカイブ・ストレージの概要を参照してください。
  5. 「バケットの作成」をクリックします。
通知を受信するには
  • 前の手順で指定した電子メール・アカウントにログインし、作成されるバケットについての通知を受信します。

    このスクリーンショットは、通知を示しています。

    ヒント

    ルールを無効化するまで、バケットがコンパートメント(またはそのサブ・コンパートメント)に作成されるたびに通知を受け取ります。

CLIを使用したルールの作成

CLIを使用してルールを作成する場合は、コンソールを使用する場合と比べて少し作業内容が異なります。

  • ルールにアクションを指定するには、JSON形式のファイルを使用します。このファイルを作成してからルールを作成すると、コマンドラインで入力する必要のある情報量がファイルによって簡素化されます。
  • 照合するイベントを指定するには、JSON形式の文字列を使用します。ルールを作成するときに、コンソールにこの権限を入力します。
アクション・ファイルを作成するには
  1. ファイルを作成し、次の内容を追加します。
    {
      "actions": [
          {
            "actionType": "ONS",
            "description": "string",
            "isEnabled": true,
            "topicId": "<topic_OCID>"
          }
      ]
    }

    ヒント: ファンクション、ストリームまたはトピックをアクションとして指定できます。

    アクション・ファイル・テンプレートの例
    {
      "actions": [
          {
            "actionType": "FAAS",
            "description": "string",
            "functionId": "<function_OCID>",
            "isEnabled": true
          },
          {
            "actionType": "ONS",
            "description": "string",
            "isEnabled": true,
            "topicId": "<topic_OCID>"
          },
          {
            "actionType": "OSS",
            "description": "string",
            "isEnabled": true,
            "streamId": "<stream_OCID>"
          }
      ]
    }
  2. テナンシの実際のトピックOCID値を<topic_OCID>に入力します。
  3. 説明を追加します。
  4. ファイル名としてaction.jsonを付けてファイルを保存します。
ルールを作成するには

コマンド・プロンプトを開き、oci events rule createを実行してルールを作成します。

次のオプションを使用します:

  • display-nameは、コンソールでルールの名前を示します。
  • is-enabledは、ルールが評価されるかどうかを示します。
  • conditionイベントの一致のパターンを示すために使用されるJSON形式の文字列(使用例を参照)。

  • compartment-idは、ルールが適用されるコンパートメントを示します。イベントは、このコンパートメントおよび子コンパートメント内のリソースからのメッセージを評価します。
  • actionsは、ルールに対するアクションを指定するために作成したJSON形式ファイルのローカル・ファイル・システムでのロケーションを示します。
  • ACTIVEで使用した場合のwait-for-state=は、CLIでサービスがルールを作成するのを待機して、別のGET操作を実行してから、アクティブ状態のルールを表示することを示します。このオプションを選択しない場合、CLIでは作成中のルールがただちに表示されます。

例: 

oci events rule create --display-name CLI-created_rule --is-enabled true --condition "{\"eventType\":[\"com.oraclecloud.objectstorage.createbucket\"]}" --compartment-id <compartment_OCID> --actions <path_to_json_formatted_actions_file> --wait-for-state=ACTIVE
ノート

<compartment_OCID>および<path_to_json_formatted_actions_file>の値を、テナンシおよびローカル・ファイル・システムの実際の値で置き換えてください。

前述のコマンドを実行すると、ルールとその表示に関するCLIプロンプトが表示されます:

 Action completed. Waiting until the resource has entered state: ACTIVE
{
  "data": {
    "actions": {
      "actions": [
        {
          "action-type": "ONS",
          "description": "Notifications action",
          "id": "ocid1.eventaction.oc1.phx.<unique_ID>",
          "lifecycle-message": null,
          "lifecycle-state": "ACTIVE",
          "topic-id": "ocid1.onstopic.oc1.phx.<unique_ID>"
        }
      ]
    },
    "compartment-id": "ocid1.compartment.oc1..<unique_ID>",
    "condition": "{\"eventType\":[\"com.oraclecloud.objectstorage.createbucket\"]}",
    "defined-tags": {},
    "description": null,
    "display-name": "CLI-created_rule",
    "freeform-tags": {},
    "id": "ocid1.eventrule.oc1.phx.<unique_ID>",
    "is-enabled": true,
    "lifecycle-message": null,
    "lifecycle-state": "ACTIVE",
    "time-created": "2019-04-25T01:32:56.855000+00:00"
  },
  "etag": "<unique_ID>--gzip"
}
バケットを作成するには
  1. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「オブジェクト・ストレージ」をクリックします。
  2. ルールを作成したコンパートメント(またはその下位コンパートメントのいずれか)を選択します。
  3. 「バケットの作成」をクリックします。
  4. 「バケットの作成」ダイアログで、バケットの属性を指定します:
    • 名前: 必須。わかりやすい名前または説明。機密情報の入力は避けてください。
    • ストレージ層: データを格納する層を選択します。使用可能な層は次のとおりです:

      • 「標準」は、高速な即時アクセスを必要とする、アクセス頻度の高いデータを格納するためのデフォルトのプライマリ・オブジェクト・ストレージ層です。
      • 「アーカイブ」は、アクセス頻度が低く、長い保持期間が必要なデータを格納するための特別な層です。アーカイブ層のデータへのアクセスは、即時に処理されません。アクセスする前にアーカイブ済データをリストアする必要があります。詳細は、アーカイブ・ストレージの概要を参照してください。
  5. 「バケットの作成」をクリックします。
通知を受信するには
  • 前の手順で指定した電子メール・アカウントにログインし、作成されるバケットについての通知を受信します。

    ヒント

    ルールを無効化するまで、バケットがコンパートメント(またはそのサブ・コンパートメント)に作成されるたびに通知を受け取ります。