イベントを直接公開する

CloudEvents イベントをサポートされている形式で Eventarc Advanced バスに直接公開するには、Google Cloud CLI を使用するか、Eventarc Publishing REST API にリクエストを送信します。Eventarc クライアント ライブラリを使用して、サポートされている言語から Eventarc API にアクセスすることもできます。

始める前に

始める前に、次の手順を完了していることを確認してください。

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  5. プロジェクトを作成または選択します Google Cloud

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成します。 Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  6. プロジェクトで課金が有効になっていることを確認します Google Cloud 。

  7. Eventarc API と Eventarc Publishing API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  11. プロジェクトを作成または選択します Google Cloud

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
    • プロジェクトを作成します。 Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  12. プロジェクトで課金が有効になっていることを確認します Google Cloud 。

  13. Eventarc API と Eventarc Publishing API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

直接公開する

直接公開するイベント メッセージは、 CloudEvents 仕様に準拠している必要があります。

gcloud

  1. ターミナルを開きます。

  2. gcloud eventarc message-buses publish コマンドを使用して、バスにイベントを公開できます。次に例を示します。

    gcloud eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    または:
    gcloud eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    または:
    gcloud eventarc message-buses publish BUS_NAME \
        --event-data=DATA_PAYLOAD \
        --event-id=EVENT_ID \
        --event-source=EVENT_SOURCE \
        --event-type=EVENT_TYPE \
        --event-attributes=EVENT_ATTRIBUTE

    次のように置き換えます。

    • BUS_NAME: イベントを公開するバスの ID または完全修飾された ID。

    次のいずれか 1 つだけを使用する必要があります。

    --event-data フラグを使用する場合は、次のものも使用する必要があります。

    • EVENT_ID: イベント ID。イベント プロデューサーは、個別のイベントごとに source + id が一意であることを確認する必要があります。
    • EVENT_SOURCE: 公開されたイベントのイベントソース。
    • EVENT_TYPE: 元の発生に関連するイベントのタイプ。

    --event-data フラグを使用する場合は、必要に応じて次のものを使用できます。

    • EVENT_ATTRIBUTE: 公開されたイベントの属性。 --event-attributes フラグを繰り返して、属性を追加できます。

      イベントには、名前が異なる追加のカスタム CloudEvents 属性( 拡張属性とも呼ばれます)をいくつでも含めることができます。

例:

gcloud eventarc message-buses publish my-bus \
    --event-data='{"key": "hello-world-data"}' \
    --event-id=hello-world-id-1234 \
    --event-source=hello-world-source \
    --event-type=hello-world-type \
    --event-attributes="datacontenttype=application/json"

gcloud eventarc message-buses publish my-bus --json-message='{
    "specversion" : "1.0",
    "type" :"com.example.someevent",
    "source" : "google.cloud.storage.object.v1.finalized",
    "id" : "A234-1234-1234",
    "time" : "2024-04-05T17:31:00Z",
    "bucket" : "bucketName",
    "datacontenttype" : "application/json",
    "data":{"key": "value"}
}'

REST API

バスにイベントを公開するには、 projects.locations.messageBuses.publish メソッドを使用します。

リクエストのデータを使用する前に、 次のように置き換えます。

  • バスの完全なリソース名(形式 projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    次のように置き換えます。

  • SPEC_VERSION: イベントで使用する CloudEvents 仕様のバージョン(例: 1.0)。
  • EVENT_TYPE: 元の発生に関連するイベントのタイプ。
  • EVENT_SOURCE: 公開されたイベントのイベントソース。
  • EVENT_ID: イベント ID。 プロデューサーは、個別のイベントごとに source + id が一意であることを確認する必要があります。
  • CONTENT_TYPE(省略可): コンテンツ タイプdata 値の。JSON 形式のイベントに datacontenttype 属性がない場合、データは application/json メディアタイプに準拠する JSON 値であると見なされます。
  • DATA_PAYLOAD(省略可): datacontenttype で指定されたメディア形式にエンコードされ、これらの属性が存在する場合は dataschema に準拠するイベント ペイロード。

リクエストの本文(JSON):

{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

成功すると、サーバーは HTTP 200 OK ステータス コードと JSON 形式の空のレスポンス 本文を返します。

200 OK

{}

次のステップ