Pub/Sub では、トピックはメッセージのフィードを表す名前付きリソースです。トピックをパブリッシュまたはサブスクライブする前に、トピックを作成する必要があります。 Pub/Sub では、標準トピックとインポート トピックの 2 種類のトピックがサポートされています。
このドキュメントでは、Pub/Sub 標準トピックを作成する方法について説明します。インポート トピックの詳細と作成方法については、インポート トピックについてをご覧ください。
トピックを作成するには、 Trusted Cloud コンソール、Google Cloud CLI、クライアント ライブラリ、または Pub/Sub API を使用します。
始める前に
Pub/Sub サービスとその用語について学習する。
公開プロセスについて
必要なロールと権限
トピックの作成に必要な権限を取得するには、プロジェクトに対する Pub/Sub 編集者(roles/pubsub.editor
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、トピックの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
トピックを作成するには、次の権限が必要です。
-
プロジェクトでトピックを作成する権限を付与します。
pubsub.topics.create
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
アクセス制御は、プロジェクト レベルと個々のリソースレベルで構成できます。あるプロジェクトにサブスクリプションを作成し、別のプロジェクトにあるトピックにアタッチできます。プロジェクトごとに必要な権限があることを確認します。
トピックのプロパティ
トピックを作成または更新するときは、そのプロパティを指定する必要があります。
デフォルトのサブスクリプションを追加する
Pub/Sub トピックにデフォルトのサブスクリプションを追加します。トピックの別のサブスクリプションは、そのトピックの作成後に作成できます。デフォルトのサブスクリプションには、次のプロパティがあります。
-sub
のサブスクリプション ID- pull 配信タイプ
- メッセージの保持期間が 7 日間
- 非アクティブな状態が 31 日間までの有効期間
- 確認応答の期限(10 秒)
- 即時再試行ポリシー
取り込みを有効にする
このプロパティを有効にすると、外部ソースからトピックにストリーミング データを取り込んで、 Trusted Cloudの機能を利用できるようになります。取り込み用のインポート トピックを作成するには、以下をご覧ください。
メッセージ保持を有効にする
Pub/Sub トピックがパブリッシュ後にメッセージを保持する期間を指定します。メッセージの保持期間が経過すると、確認応答状態にかかわらず、Pub/Sub によりメッセージが破棄される可能性があります。トピックにパブリッシュされたすべてのメッセージの保存には、メッセージ ストレージ料金が発生します。
- デフォルト = 無効
- 最小値: 10 分。
- 最大値: 31 日
メッセージ データを BigQuery にエクスポートする
このプロパティを有効にすると、メッセージを受信時に既存の BigQuery テーブルに書き込む BigQuery サブスクリプションを作成できます。別のサブスクライバー クライアントを構成する必要はありません。 BigQuery サブスクリプションの詳細については、BigQuery サブスクリプションをご覧ください。
メッセージ データを Cloud Storage にバックアップする
このプロパティを有効にすると、メッセージを受信したときに既存の Cloud Storage テーブルにメッセージを書き込む Cloud Storage サブスクリプションを作成できます。別のサブスクライバー クライアントを構成する必要はありません。 Cloud Storage サブスクリプションの詳細については、Cloud Storage サブスクリプションをご覧ください。
変換
トピック SMT を使用すると、Pub/Sub 内でメッセージ データと属性に対する軽量な変更を直接行うことができます。この機能を使用すると、メッセージがトピックにパブリッシュされる前に、データのクリーンアップ、フィルタリング、形式変換を行うことができます。
SMT の詳細については、SMT の概要をご覧ください。
Google Cloud-powered encryption key
トピックがGoogle Cloud-powered encryption keysを使用して暗号化されることを指定します。Pub/Sub はデフォルトで Google Cloud-powered encryption keys を使用してメッセージを暗号化するため、このオプションを選択するとデフォルトの動作が維持されます。鍵の管理とローテーションは Google が自動的に処理するため、メッセージは常に利用可能な最も強力な暗号化で保護されます。このオプションでは、これ以上の構成は必要ありません。 Google Cloud-powered encryption keysの詳細については、 Google Cloud-powered encryption keysによるデフォルトの暗号化をご覧ください。
Cloud KMS 鍵
トピックが顧客管理の暗号鍵(CMEK)で暗号化されているかどうかを指定します。Pub/Sub はデフォルトでは、 Google Cloud-powered encryption keys を使用してメッセージを暗号化します。このオプションを指定すると、Pub/Sub は CMEK でエンベロープ暗号化パターンを使用します。この方法では、Cloud KMS はメッセージを暗号化しません。代わりに、Cloud KMS は、各トピック用に Pub/Sub が作成するデータ暗号鍵(DEK)を暗号化します。メッセージは、トピック用に生成された最新の DEK を使用して Pub/Sub が暗号化します。Pub/Sub は、メッセージをサブスクライバーに配信する直前に復号します。鍵の作成の詳細については、メッセージ暗号化を構成するをご覧ください。
トピックの作成
トピックは、それを公開または登録する前に作成します。
Console
トピックを作成する方法は次のとおりです。
Trusted Cloud コンソールで、Pub/Sub の [トピックの作成] ページに移動します。
[トピック ID] フィールドに、トピックの ID を入力します。トピックの命名の詳細については、命名ガイドラインをご覧ください。
[デフォルトのサブスクリプションを追加] オプションは、そのまま保持します。
省略可。他のオプションは選択しないでください。
[トピックを作成] をクリックします。
gcloud
トピックを作成するには、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
ここで
- PROJECT_ID はプロジェクト ID です。
- TOPIC_ID はトピック ID です。
レスポンス:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C++ の設定手順を実施してください。詳細については、Pub/Sub C++ API リファレンス ドキュメントをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API リファレンス ドキュメントをご覧ください。
Go
次のサンプルでは、Go Pub/Sub クライアント ライブラリのメジャー バージョン(v2)を使用しています。まだ v1 ライブラリを使用している場合は、v2 への移行ガイドをご覧ください。v1 コードサンプルの一覧については、 非推奨のコードサンプルをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Go の設定手順を実施してください。詳細については、Pub/Sub Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
Node.ts
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API リファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の PHP の設定手順を実施してください。詳細については、Pub/Sub PHP API リファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
次のサンプルでは、Ruby Pub/Sub クライアント ライブラリ v3 を使用しています。v2 ライブラリをまだ使用している場合は、 v3 への移行ガイドをご覧ください。Ruby v2 のコードサンプルの一覧については、 非推奨のコードサンプルをご覧ください。
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
次のステップ
トピックのサブスクリプションの種類を選択する。
トピックにメッセージを公開する方法を学習する。
トピックのトラブルシューティングを行います。
gcloud CLI、REST API、またはクライアント ライブラリを使用して、トピックを作成または変更する。