イベントの開始

イベント・サービスで自動化を作成する方法について学習します。

テナンシ内の特定のコンパートメントにバケットを作成するたびに通知を送信する単純なルールを作成できます。

イベントのための設定

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

重要

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

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

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

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

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

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

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

  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. 「作成」をクリックします。

通知の受信

  • 前の手順で指定した電子メール・アカウントにログインし、作成されるバケットについての通知を受信します。

    ヒント

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