CloudEvents - JSON イベントの形式

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 オブジェクトには、resourceNameserviceNamemethodName の値があります。詳細については、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_IDEVENT_GENERATION_TIME、: システム生成。
  • PROJECT_ID: GCP プロジェクト ID。
  • dataschemamethodNameresourceNameserviceNamesubject: イベントタイプに固有の属性。

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_IDEVENT_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_IDEVENT_GENERATION_TIME、: システム生成。
  • TOPIC_NAME: イベントが公開された Pub/Sub トピック名。

オープンソース リポジトリ

すべてのイベントの HTTP 本文の構造は、CloudEvents GitHub リポジトリで入手できます。

リポジトリには、CloudEvents データを理解して、お使いのプログラミング言語で使用する際に役立つものが用意されています。

  • CloudEvents データ ペイロード用の Google Protocol Buffer
  • 生成された JSON スキーマ
  • 公開 JSON スキーマ カタログ

クライアント ライブラリへのリンクも含まれます。

一般的なイベント

プロトコル バッファ(protobuf)は、Eventarc によって生成されたイベント内のデータを表します。CloudEvents のプロトコル バッファは機械で読み取り可能なスキーマとして提供されます。これにより、データタイプのライブラリを作成し、イベントを容易に使用できるようになります。

CloudEvent のタイプに関連する protobuf メッセージは 2 つあります。

  • 拡張属性を含む CloudEvent 全体を表すエンベロープ メッセージ(例: AuditLogWrittenEvent
  • データ メッセージ。例: LogEntryDataStorageObjectData
多くの CloudEvent タイプで、同じデータ メッセージを使用できます。たとえば、Cloud Storage オブジェクトに関連付けられているすべてのイベントで、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
イベント拡張機能
  • serviceName
  • methodName
  • resourceName
Pub/Sub 監査ログ
BigQuery 監査ログ

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 ジョブのファイナライズ、アーカイブ、削除、更新時)
google.cloud.storage.object.v1.finalized
google.cloud.storage.object.v1.archived
google.cloud.storage.object.v1.deleted
google.cloud.storage.object.v1.metadataUpdated
シンプル
複雑

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 ドキュメントの作成、更新、削除、書き込み時)
google.cloud.firestore.document.v1.created
google.cloud.firestore.document.v1.updated
google.cloud.firestore.document.v1.deleted
google.cloud.firestore.document.v1.written
シンプル
複雑

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
テキスト