このドキュメントでは、Pub/Sub トピックを作成、更新、表示、削除する方法について説明します。このドキュメントでは、トピックとサブスクリプションを指定する方法についても説明します。
トピック内のデータ レプリケーション
Pub/Sub トピックでは、3 つのゾーンを使用してデータを保存します。このサービスでは、少なくとも 2 つのゾーンに対する同期レプリケーションと、追加 の 3 つ目のゾーンに対するベスト エフォート レプリケーションが保証されます。Pub/Sub レプリケーションは 1 つのリージョン内でのみ行われます。
トピックのプロパティ
トピックを作成または更新するときは、そのプロパティを指定する必要があります。
デフォルトのサブスクリプションを追加する。Pub/Sub トピックにデフォルトのサブスクリプションを追加します。トピックの作成後、そのトピックに対して別のサブスクリプションを作成できます。デフォルトのサブスクリプションには次のプロパティがあります。
-sub
のサブスクリプション ID- pull 配信タイプ
- 7 日間のメッセージ保持期間
- 非アクティブな状態が 31 日間までの有効期間
- 10 秒間の確認応答期限
- 即時再試行ポリシー
Schema. スキーマは、メッセージ データ フィールドに使用する形式です。スキーマは、Pub/Sub によって適用されるパブリッシャーとサブスクライバーの間のコントラクトです。トピック スキーマは、メッセージの種類と権限を標準化して、組織内のさまざまなチームが利用できるようにします。Pub/Sub は、メッセージ タイプと権限の一元的な権限を作成します。スキーマを使用してトピックを作成するには、スキーマの作成と管理をご覧ください。
メッセージ保持期間パブリッシュ後に Pub/Sub トピックがメッセージを保持する期間を指定します。メッセージの保持期間が経過すると、確認応答状態にかかわらず、Pub/Sub によりメッセージが破棄される可能性があります。トピックにパブリッシュされたすべてのメッセージの保管には、メッセージ ストレージ料金が発生します。
- デフォルト = 無効
- 最小値: 10 分。
- 最大値: 31 日
顧客管理の暗号鍵(CMEK)を使用するトピックが CMEK で暗号化されているかどうかを指定します。Pub/Sub はデフォルトでは、Google が管理する鍵を使用してメッセージを暗号化します。このオプションを指定すると、Pub/Sub は CMEK でエンベロープ暗号化パターンを使用します。このアプローチでは、Cloud KMS はメッセージを暗号化しません。Cloud KMS は、Pub/Sub がトピックごとに作成するデータ暗号鍵(DEK)を暗号化します。Pub/Sub は、トピック用に生成された最新の DEK を使用してメッセージを暗号化します。Pub/Sub は、メッセージをサブスクライバーに配信する直前に復号します。鍵の作成の詳細については、メッセージ暗号化の構成をご覧ください。
トピック、サブスクリプション、スナップショットの名前に関するガイドライン
Pub/Sub リソース名は、トピック、サブスクリプション、スナップショットなどの Pub/Sub のリソースを一意に識別します。リソース名は次の形式になっている必要があります。
projects/project-identifier/collection/ID
project-identifier
: Google Cloud Console から利用可能なプロジェクト ID にする必要があります。例:my-cool-project
。collection
:topics
、subscriptions
、snapshots
のいずれかにする必要があります。ID
: 次のガイドラインに従う必要があります。- 文字列
goog
で始めないこと。 - 文字から始まる
- 3~255 文字の長さであること。
- 次の文字だけが含まれている: 文字
[A-Za-z]
、数字[0-9]
、ダッシュ-
、アンダースコア_
、ピリオド.
、チルダ~
、プラス記号+
、パーセント記号%
上記のリストの特殊文字は、URL エンコードのないリソース名で使用できます。ただし、URL で使用されている場合、その他すべての特殊文字が適切にエンコードまたはデコードされることを確認する必要があります。たとえば、
mi-tópico
は無効な ID です。mi-t%C3%B3pico
は有効です。この形式は、REST 呼び出しを行うときに重要です。- 文字列
トピックの作成
トピックは、それを公開または登録する前に作成します。
Console
トピックを作成する方法は次のとおりです。
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
[トピックを作成] をクリックします。
[トピック ID] に、トピックの ID を入力します。
[デフォルトのサブスクリプションを追加] オプションは、そのまま保持します。
他のオプションは選択しないでください。
[トピックを作成] をクリックします。
gcloud CLI
トピックを作成するには、gcloud pubsub topics create
コマンドを実行します。
gcloud pubsub topics create TOPIC_ID
REST
トピックを作成するには、projects.topics.create
メソッドを使用します。
リクエストは、Authorization
ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token
を使用します。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
ここで
対応:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C++ 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C++ API のリファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Node.js 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
組織のポリシーの制約
組織のポリシーを使用すると、トピックの作成を制限できます。たとえば、ポリシーによって Compute Engine リージョンのメッセージ ストレージを制限できます。トピックの作成エラーを回避するには、トピックを作成する前に、必要に応じて組織のポリシーを調べて更新します。
プロジェクトを新しく作成した場合は、組織ポリシーが初期化されるまで数分待ってからトピックを作成します。
スキーマを使用してトピックを作成する
トピックの作成中にスキーマを割り当てる場合があります。
スキーマを使用する場合のガイドラインは次のとおりです。
- 既存のトピックにスキーマを追加することはできません。
- スキーマは、トピックを作成する際にのみ指定できます。
- スキーマがトピックに関連付けられた後、スキーマの更新やそのトピックとの関連付けの削除はできません。
- 同じスキーマを他の新しいトピックにも適用できます。
- スキーマを削除すると、関連するすべてのトピックへのパブリッシュが失敗します。
スキーマの詳細については、スキーマの作成と管理をご覧ください。
Console
トピックを作成してスキーマを割り当てるには、次の手順を行います。
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
[トピックを作成] をクリックします。
[トピック ID] に、トピックの ID を入力します。
[スキーマを使用する] チェックボックスをオンにします。他のオプションはデフォルト設定のままにします。
[Pub/Sub スキーマを選択] をクリックし、[新しいスキーマを作成] を選択します。既存のスキーマを使用する場合は、ステップ 7 に進みます。
[スキーマ ID] フィールドにスキーマの ID を入力します。
[スキーマタイプ] で [Avro] または [プロトコル バッファ] を選択します。
[スキーマ定義] フィールドに、スキーマのプロトコル バッファ定義の Avro を入力します。
[作成] をクリックしてスキーマを保存します。
[トピックの作成] ダイアログ ウィンドウの [Pub/Sub スキーマを選択] でスキーマを検索します。
[作成] をクリックしてトピックを保存し、選択したスキーマに割り当てます。
gcloud
以前に作成したスキーマが割り当てられたトピックを作成するには、次の gcloud pubsub topics create
コマンドを実行します。
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID
ここで
- TOPIC_ID は、作成するトピックの ID です。
- ENCODING_TYPE は、スキーマに対して検証されるメッセージのエンコードです。この値は
JSON
またはBINARY
に設定する必要があります。 - SCHEMA_ID は、既存のスキーマの ID です。
別の Google Cloud プロジェクトからスキーマを割り当てることもできます。
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
ここで
- SCHEMA_PROJECT は、スキーマの Google Cloud プロジェクトのプロジェクト ID です。
- TOPIC_PROJECT は、トピックの Google Cloud プロジェクトのプロジェクト ID です。
REST
トピックを作成するには、projects.topics.create
メソッドを使用します。
リクエスト:
リクエストは、Authorization
ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token
を使用します。
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
リクエストの本文:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
ここで
- PROJECT_ID はプロジェクト ID です。
- TOPIC_ID はトピック ID です。
- SCHEMA_NAME は、公開されたメッセージが検証される必要があるスキーマの名前です。形式は
projects/PROJECT_ID/schemas/SCHEMA_ID
です。 - ENCODING_TYPE は、スキーマに対して検証されるメッセージのエンコードです。
JSON
またはBINARY
に設定する必要があります。
レスポンス:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API のリファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
トピックの削除
トピックを削除しても、そのサブスクリプションは削除されません。サブスクライバーは、サブスクリプションからのメッセージ バックログを使用できます。トピックが削除されると、そのサブスクリプションのトピック名は _deleted-topic_
になります。トピックを削除した直後に同名のトピックを新規作成しようとすると、エラーが発生します。
Console
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
トピックを選択して、
(その他の操作)をクリックします。[削除] をクリックします。
[トピックの削除] ウィンドウが表示されます。
「
delete
」と入力して、[削除] をクリックします。
gcloud CLI
トピックを削除するには、gcloud pubsub topics delete
コマンドを使用します。
gcloud pubsub topics delete TOPIC_ID
REST
ドキュメントを削除するには、projects.topics.delete
メソッドを使用します。
リクエスト:
リクエストは、Authorization
ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token
を使用します。
DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
ここで
レスポンス:
リクエストが成功した場合のレスポンスは空の JSON オブジェクトです。
C++
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C++ 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C++ API のリファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Node.js 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
トピックの一覧表示
Console
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
[トピック] ページに、利用可能なすべてのトピックが一覧表示されます。
gcloud CLI
トピックを一覧表示するには、gcloud pubsub topics list
コマンドを使用します。
gcloud pubsub topics list
REST
トピックを一覧表示するには、projects.topics.list
メソッドを使用します。
リクエスト:
リクエストは、Authorization
ヘッダー内のアクセス トークンにより認証を受ける必要があります。現在のアプリケーションのデフォルト認証情報のアクセス トークンを取得する場合は、gcloud auth application-default print-access-token
を使用します。
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics Authorization: Bearer ACCESS_TOKEN
ここで
対応:
{ "topics": [ { "name": "projects/PROJECT_ID/topics/mytopic1", ... }, { "name": "projects/PROJECT_ID/topics/mytopic2", ... } ] }
C++
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C++ 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C++ API のリファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Node.js 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
デフォルトでは、クエリあたり最大で 100 件の結果が返されます。ページサイズ パラメータを使用すると、最大で 1,000 までの代替値を指定できます。
トピックをモニタリングする
Pub/Sub からトピックをモニタリングできます。
次のステップ
トピックのサブスクリプションの種類を選択する。
トピックのサブスクリプションを作成する。
gcloud CLI を使用してトピックを作成または変更する。
REST API を使用してトピックを作成または変更する。