CloudEvents イベントをサポートされている形式で Eventarc Advanced バスに直接公開するには、Google Cloud CLI を使用するか、Eventarc Publishing REST API にリクエストを送信します。Eventarc クライアント ライブラリを使用して、サポートされている言語から Eventarc API にアクセスすることもできます。
始める前に
始める前に、次の手順を完了していることを確認してください。
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します 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 プロジェクトの名前に置き換えます。
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 -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します 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 プロジェクトの名前に置き換えます。
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
ターミナルを開きます。
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 つだけを使用する必要があります。
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 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)次のように置き換えます。
PROJECT_ID: バス プロジェクトのプロジェクト ID。 Google CloudLOCATION: バスがデプロイされているリージョン(例: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
{}