Pub/Sub では、トピックはメッセージのフィードを表す名前付きリソースです。トピックをパブリッシュまたはサブスクライブする前に、トピックを作成する必要があります。 Pub/Sub では、標準トピックとインポート トピックの 2 種類のトピックがサポートされています。
このドキュメントでは、Pub/Sub 標準トピックを作成する方法について説明します。インポート トピックの詳細と作成方法については、インポート トピックの作成をご覧ください。
トピックを作成するには、Google Cloud コンソール、Google Cloud CLI、クライアント ライブラリ、または Pub/Sub API を使用します。
始める前に
Pub/Sub サービスとその用語について学習する。
パブリッシュ プロセスについて確認する。
トピックの管理に必要なロールと権限
トピックの作成と管理に必要な権限を取得するには、トピックまたはプロジェクトに対する Pub/Sub 編集者(roles/pubsub.editor
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。
この事前定義ロールには、トピックの作成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
トピックの作成と管理には、次の権限が必要です。
-
トピックを作成する:
pubsub.topics.create
-
トピックを削除する:
pubsub.topics.delete
-
トピックからサブスクリプションの接続を解除する:
pubsub.topics.detachSubscription
-
トピックを取得する:
pubsub.topics.get
-
トピックを一覧表示する:
pubsub.topics.list
-
トピックに公開する:
pubsub.topics.publish
-
トピックを更新する:
pubsub.topics.update
-
トピックの IAM ポリシーを取得する:
pubsub.topics.getIamPolicy
-
トピックの IAM ポリシーを構成する:
pubsub.topics.setIamPolicy
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
アクセス制御は、プロジェクト レベルと個々のリソースレベルで構成できます。あるプロジェクトにサブスクリプションを作成し、別のプロジェクトにあるトピックにアタッチできます。プロジェクトごとに必要な権限があることを確認します。
トピックのプロパティ
トピックを作成または更新するときは、そのプロパティを指定する必要があります。
-
デフォルトのサブスクリプションを追加する。Pub/Sub トピックにデフォルトのサブスクリプションを追加します。トピックの別のサブスクリプションは、そのトピックの作成後に作成できます。デフォルトのサブスクリプションには、次のプロパティがあります。
-sub
のサブスクリプション ID- pull 配信タイプ
- メッセージ保持期間(7 日間)
- 非アクティブな状態が 31 日間までの有効期間
- 確認応答の期限(10 秒)
- 即時再試行ポリシー
- Schema. スキーマとは、メッセージ データ フィールドが従わなければならない形式のことです。スキーマは、Pub/Sub が適用するパブリッシャーとサブスクライバー間の契約です。トピック スキーマを使用すると、メッセージ タイプと権限を標準化して、組織内のさまざまなチームが利用できるようになります。Pub/Sub は、メッセージ タイプと権限を監視する中央機関を作成します。スキーマを使用してトピックを作成するには、スキーマの概要をご覧ください。
-
取り込みを有効にします。 このプロパティを有効にすると、外部ソースからトピックにストリーミング データを取り込んで、Google Cloud の機能を利用できるようになります。取り込み用のインポート トピックを作成するには、インポート トピックを作成するをご覧ください。
-
メッセージ保持期間Pub/Sub トピックがパブリッシュ後にメッセージを保持する期間を指定します。メッセージの保持期間が経過すると、確認応答状態にかかわらず、Pub/Sub によりメッセージが破棄される可能性があります。トピックにパブリッシュされたすべてのメッセージの保存には、メッセージ ストレージ料金が発生します。
- デフォルト = 無効
- 最小値: 10 分。
- 最大値: 31 日
- 顧客管理の暗号鍵(CMEK)を使用するトピックを CMEK で暗号化するかどうかを指定します。Pub/Sub はデフォルトでは、Google が所有する鍵と Google が管理する鍵を使用してメッセージを暗号化します。このオプションを指定すると、Pub/Sub は CMEK でエンベロープ暗号化パターンを使用します。この方法では、Cloud KMS はメッセージを暗号化しません。代わりに、Cloud KMS は、各トピック用に Pub/Sub が作成するデータ暗号鍵(DEK)を暗号化します。メッセージは、トピック用に生成された最新の DEK を使用して Pub/Sub が暗号化します。Pub/Sub は、メッセージをサブスクライバーに配信する直前に復号します。鍵の作成の詳細については、メッセージ暗号化を構成するをご覧ください。
トピックを作成する
トピックは、それを公開または登録する前に作成します。
Console
トピックを作成する方法は次のとおりです。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
トピックを作成するには、
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 のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
C#
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
Node.js
PHP
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub PHP API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Ruby
このサンプルを試す前に、Pub/Sub クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。 詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
Pub/Sub に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
組織ポリシーの制約
組織のポリシーでトピックの作成を制限できます。たとえば、ポリシーで Compute Engine リージョン内のメッセージ ストレージを制限できます。トピックの作成エラーを回避するには、トピックを作成する前に、必要に応じて組織のポリシーを調べて更新します。
新しく作成したプロジェクトの場合は、組織ポリシーが初期化されるまで数分待ってから、トピックを作成します。
詳細については、メッセージ ストレージ ポリシーを構成するをご覧ください。
次のステップ
トピックのサブスクリプションの種類を選択する。
トピックにメッセージを公開する方法を学習する。
gcloud CLI、REST API、またはクライアント ライブラリを使用して、トピックを作成または変更する。