CloudEvents 形式 - HTTP プロトコル バインディング

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

CloudEvents(cloudevents.io)は、イベントデータを一般的な方法で記述するための仕様です。この仕様は、Cloud Native Computing Foundation(CNCF)の Serverless Working Group によって編成されています。

Eventarc は、HTTP リクエストを使用して CloudEvents 形式のイベント レシーバにイベントを配信します。

HTTP リクエストの形式

ターゲット サービスは、CloudEvents バージョン 1.0 HTTP プロトコル バインディング仕様の形式で HTTP POST リクエストとしてイベント ルーターからイベントを受信します。各 HTTP リクエストにはイベント固有のヘッダーと本文が含まれ、サービスのルート URL パス(/)に送信されます。

他の HTTP ヘッダーに加えて、すべてのイベントに次の CloudEvents HTTP ヘッダーがあります。

ヘッダー 説明
ce-id イベントの一意の識別子 1096434104173400
ce-source イベントのソースの識別子 //pubsub.googleapis.com/projects/my-project/topics/my-topic
ce-specversion このイベントに使用された CloudEvents 仕様のバージョン 1.0
ce-type イベントデータのタイプ google.cloud.pubsub.topic.v1.messagePublished
ce-time イベントの生成時間(RFC 3339 形式)(省略可)。 2020-12-20T13:37:33.647Z

HTTP ペイロードの形式

Cloud Audit Logs

google.cloud.audit.log.v1.written タイプのイベントの形式は次のとおりです。

ヘッダー

ce-specversion: 1.0
ce-type: google.cloud.audit.log.v1.written
ce-source: //SERVICE_NAME/projects/PROJECT_ID
ce-id: MESSAGE_ID
ce-time: PUBLISH_TIME
Content-Type: application/json; charset=utf-8
Content-Length: CONTENT_LENGTH
  • SERVICE_NAME: イベントを発行するサービスの Google API URI。たとえば、BigQuery のイベントの場合は bigquery.googleapis.com です。
  • PROJECT_ID: GCP プロジェクト ID。
  • MESSAGE_IDPUBLISH_TIMECONTENT_LENGTH: システム生成。

本文

ペイロードは、Cloud Audit Logs イベントの詳細を示す JSON オブジェクトです。protoPayload には、resourceNameserviceNamemethodName の値があります。詳細については、Cloud Audit Logs のイベント フィルタの決定をご覧ください。

Pub/Sub

google.cloud.pubsub.topic.v1.messagePublished タイプのイベントの形式は次のとおりです。

ヘッダー

ce-specversion: 1.0
ce-type: google.cloud.pubsub.topic.v1.messagePublished
ce-source: //pubsub.googleapis.com/TOPIC
ce-id: MESSAGE_ID
ce-time: PUBLISH_TIME
Content-Type: application/json; charset=utf-8
Content-Length: CONTENT_LENGTH
  • TOPIC: イベントが公開された Pub/Sub トピック。
  • MESSAGE_IDPUBLISH_TIMECONTENT_LENGTH: システム生成。

本文

ペイロードは Pub/Sub の push メッセージです。data フィールドには、メッセージが Base64 でエンコードされた文字列として格納されます。このドキュメントのをご覧ください。

オープンソース

すべてのイベントの 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
シンプル
複雑

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