CloudEvents(cloudevents.io)は、イベントデータを一般的な方法で記述するための仕様です。この仕様は、Cloud Native Computing Foundation(CNCF)の Serverless Working Group によって編成されています。
Eventarc は、HTTP リクエストを使用して CloudEvents 形式のイベント レシーバにイベントを配信します。宛先ターゲット(Workflows サービスなど)は、イベントを JSON オブジェクト(CloudEvents 仕様に従って)に変換し、ワークフロー ランタイム引数としてワークフロー実行に渡します。
JSON ペイロードの形式
宛先サービスは、イベント ルーターからイベントを受信し、次の CloudEvents 属性を使用して CloudEvents バージョン 1.0.1 用の JSON イベント形式にフォーマットします。
属性 | 説明 | 例 |
---|---|---|
data | イベントデータのペイロード。 | { "subscription": "projects/my-project/subscriptions/my-sub", "message": { "attributes": { "attr1":"attr1-value" }, "data": "aGVsbG8gd29ybGQ=", "messageId": "2070443601311540", "publishTime":"2021-02-26T19:13:55.749Z" } } |
datacontenttype | 渡されたデータの種類 | application/json |
id | イベントの固有識別子 | 2070443601311540 |
source | イベントのソース | //pubsub.googleapis.com/projects/my-project/topics/my-topic |
specversion | このイベントに使用された CloudEvents 仕様のバージョン | 1.0 |
type | イベントデータのタイプ | google.cloud.pubsub.topic.v1.messagePublished |
time | RFC 3339 形式のイベントの生成時間(省略可) | 2020-12-20T13:37:33.647Z |
ペイロードは、イベントタイプに応じて以下の形式になります。
Cloud Audit Logs
ランタイム引数は、Cloud Audit Logs イベントの詳細を示す JSON オブジェクトです。このドキュメントの一般的なイベントの例をご覧ください。JSON オブジェクトには、resourceName
、serviceName
、methodName
の値があります。詳細については、Cloud Audit Logs のイベント フィルタの決定をご覧ください。
google.cloud.audit.log.v1.written
タイプのイベントの形式は次のとおりです。
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json; charset=utf-8", "id": "MESSAGE_ID", "source": "//cloudaudit.googleapis.com/projects/PROJECT_ID/logs/data_access", "specversion": "1.0", "type": "google.cloud.audit.log.v1.written", "time": "EVENT_GENERATION_TIME", "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json", "methodName": "jobservice.jobcompleted", "resourceName": "projects/my-project/jobs/bqjob_r3ac45813612fa2d6_0000017d591922c9_1", "serviceName": "bigquery.googleapis.com", "subject": "bigquery.googleapis.com/projects/my-project/jobs/bqjob_r3ac45813612fa2d6_0000017d591922c9_1" }
EVENT_DATA
: JSON 形式でデコードされたメッセージ コンテンツ。詳細については、このドキュメントの一般的なイベントをご覧ください。MESSAGE_ID
、EVENT_GENERATION_TIME
、: システム生成。PROJECT_ID
: Google Cloud プロジェクト ID。dataschema
、methodName
、resourceName
、serviceName
、subject
: イベントタイプに固有の属性。
Cloud Storage
ランタイムの引数は Cloud Storage に対する変更です。data
フィールドに、Cloud Storage バケットの変更が表示されます。このドキュメントの一般的なイベントの例をご覧ください。
google.cloud.storage.object.v1.finalized
タイプのイベントの形式は次のとおりです。
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json", "id": "MESSAGE_ID", "source": "//storage.googleapis.com/projects/_/buckets/BUCKET_NAME", "specversion": "1.0", "type": "google.cloud.storage.object.v1.finalized", "time": "EVENT_GENERATION_TIME", "subject": "objects/my-file.txt" }
EVENT_DATA
: JSON 形式でデコードされたメッセージ コンテンツ。詳細については、このドキュメントの一般的なイベントをご覧ください。MESSAGE_ID
、EVENT_GENERATION_TIME
、: システム生成。BUCKET_NAME
: 更新される Cloud Storage バケットの名前。subject
: イベントタイプに固有の属性。
Pub/Sub
ランタイムの引数は Pub/Sub の push メッセージです。data
フィールドには、メッセージが Base64 でエンコードされた文字列として格納されます。このドキュメントの一般的なイベントの例をご覧ください。
google.cloud.pubsub.topic.v1.messagePublished
タイプのイベントの形式は次のとおりです。
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json; charset=utf-8", "id": "MESSAGE_ID", "source": "//pubsub.googleapis.com/TOPIC_NAME", "specversion": "1.0", "type": "google.cloud.pubsub.topic.v1.messagePublished", "time": "EVENT_GENERATION_TIME" }
EVENT_DATA
: JSON 形式でデコードされたメッセージ コンテンツ。詳細については、このドキュメントの一般的なイベントをご覧ください。MESSAGE_ID
、EVENT_GENERATION_TIME
、: システム生成。TOPIC_NAME
: イベントが公開された Pub/Sub トピック名。
オープンソース リポジトリ
すべてのイベントの HTTP 本文の構造は、CloudEvents GitHub リポジトリで入手できます。
リポジトリには、CloudEvents データを理解して、お使いのプログラミング言語で使用する際に役立つものが用意されています。
- CloudEvents データ ペイロード用の Google Protocol Buffer
- 生成された JSON スキーマ
- 公開 JSON スキーマ カタログ
クライアント ライブラリへのリンクも含まれます。
一般的なイベント
プロトコル バッファ(protobuf)は、Eventarc によって生成されたイベント内のデータを表します。CloudEvents のプロトコル バッファは機械で読み取り可能なスキーマとして提供されます。これにより、データタイプのライブラリを作成し、イベントを容易に使用できるようになります。
CloudEvent のタイプに関連する protobuf メッセージは 2 つあります。
- 拡張属性を含む CloudEvent 全体を表すエンベロープ メッセージ(例:
AuditLogWrittenEvent
) - データ メッセージ。例:
LogEntryData
、StorageObjectData
StorageObjectData
をデータ メッセージとして使用します。各エンベロープ メッセージでは、proto アノテーションを介して、関連する CloudEvent タイプを指定します。詳細については、protobuf メッセージと CloudEvent タイプの関係をご覧ください。次の表に、一般的なイベントのコンポーネントの詳細を示します。
Cloud Audit Logs
proto ファイル | google/events/cloud/audit/v1/events.proto google/events/cloud/audit/v1/data.proto |
エンベロープ メッセージ | google.events.cloud.audit.v1.AuditLogWrittenEvent |
データ メッセージ | google.events.cloud.audit.v1.LogEntryData |
イベントタイプ (監査ログエントリの書き込み時) |
google.cloud.audit.log.v1.written |
イベント拡張機能 |
|
例 |
Pub/Sub 監査ログ BigQuery 監査ログ |
詳細 |
Cloud Audit Logs イベントの Eventarc トリガーを作成する Cloud Audit Logs のイベント フィルタを決定する 監査ログを使用する Google Cloud サービス |
Cloud Storage
proto ファイル |
google/events/cloud/storage/v1/events.proto google/events/cloud/storage/v1/data.proto |
エンベロープ メッセージ | google.events.cloud.storage.v1.ObjectFinalizedEvent google.events.cloud.storage.v1.ObjectArchivedEvent google.events.cloud.storage.v1.ObjectDeletedEvent google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent |
データ メッセージ | google.events.cloud.storage.v1.StorageObjectData |
リソース |
Objects |
イベントタイプ |
直接イベントタイプのリストをご覧ください。 |
例 | シンプル 複雑 |
詳細 |
Cloud Storage イベントの Eventarc トリガーを作成する Cloud Run サービスで Cloud Storage からイベントを受信する |
Firestore
proto ファイル |
google/events/cloud/firestore/v1/events.proto google/events/cloud/firestore/v1/data.proto |
エンベロープ メッセージ | google.events.cloud.firestore.v1.DocumentCreatedEvent google.events.cloud.firestore.v1.DocumentUpdatedEvent google.events.cloud.firestore.v1.DocumentDeletedEvent google.events.cloud.firestore.v1.DocumentWrittenEvent |
データ メッセージ | google.events.cloud.firestore.v1.DocumentEventData |
リソース |
Document
|
イベントタイプ | 直接イベントタイプのリストをご覧ください。 |
例 | シンプル 複雑 |
詳細 |
Firestore イベントの Eventarc トリガーを作成する Eventarc と Firestore でイベント ドリブン アーキテクチャを作成する Cloud Run functions で拡張して、Firestore の変更によってトリガーされるイベントを処理する |
Pub/Sub
proto ファイル |
google/events/cloud/pubsub/v1/events.proto google/events/cloud/pubsub/v1/data.proto |
エンベロープ メッセージ | google.events.cloud.pubsub.v1.MessagePublishedEvent |
データ メッセージ | google.events.cloud.pubsub.v1.MessagePublishedData |
リソース |
PubsubMessage
|
イベントタイプ (Pub/Sub メッセージのパブリッシュ時) |
google.cloud.pubsub.topic.v1.messagePublished |
例 | テキスト |
詳細 |
Pub/Sub メッセージを使用して Cloud Run サービスでイベントを受信する Pub/Sub メッセージを使用してワークフローをトリガーする |