イベントを直接公開する

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

メッセージは CloudEvents 仕様に準拠している必要があります。

gcloud

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

  2. イベントをバスにパブリッシュするには、gcloud beta eventarc message-buses publish コマンドを使用します。次に例を示します。

    gcloud beta eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    または
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    または
    gcloud beta 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 または完全修飾識別子。

    次のいずれかのみを使用する必要があります。

    • AVRO_MESSAGE: この仕様に従って Avro 形式のイベント メッセージ。
    • JSON_MESSAGE: この仕様に従った JSON 形式のイベント メッセージ。
    • DATA_PAYLOAD: 公開されたイベントのデータ。

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

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

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

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

      イベントには、異なる名前のカスタム CloudEvents 属性(拡張属性)を任意の数追加できます。

例:

gcloud beta eventarc message-buses publish my-bus \
    --event-id=1234 \
    --event-type=event-provider.event.v1.eventType \
    --event-source="//event-provider/event/source" \
    --event-data='{"key": "value"}' \
    --event-attributes=attribute1=value

gcloud beta eventarc message-buses publish my-bus --json-message @- << EOF
{
    "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"}
}
EOF

REST API

イベントをバスにパブリッシュするには、projects.locations.messageBuses.publish メソッドを使用します。

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

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

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

    • PROJECT_ID: バス プロジェクトの Google Cloud プロジェクト ID。
    • LOCATION: バスがデプロイされているリージョン(例: us-central1)。
    • 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

{}

次のステップ