このドキュメントでは、Pub/Sub トピックのスキーマを検証する方法について説明します。
スキーマ リソースの作成前または作成後に、メッセージが特定のスキーマに準拠しているかを検証できます。この手順により、スキーマに関連付けられているトピックを介して送信しようとしているメッセージがスキーマを適用する前に一致するかを確認できます。
準備
- Pub/Sub スキーマの仕組みを理解する。
- スキーマの作成
必要なロールと権限
スキーマのメッセージを検証して管理するために必要な権限を取得するには、管理者にPub/Sub 編集者 (roles/pubsub.editor
)プロジェクトに対する IAM ロールを付与するよう依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、スキーマ メッセージを検証して管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スキーマ メッセージを検証して管理するには、次の権限が必要です。
-
スキーマを作成します:
pubsub.schemas.create
-
スキーマをトピックに添付します:
pubsub.schemas.attach
-
スキーマのリビジョンを commit します:
pubsub.schemas.commit
-
スキーマまたはスキーマ リビジョンを削除します:
pubsub.schemas.delete
-
スキーマまたはスキーマのリビジョンを取得します:
pubsub.schemas.get
-
スキーマを一覧表示します:
pubsub.schemas.list
-
スキーマのリビジョンを一覧表示します:
pubsub.schemas.listRevisions
-
スキーマをロールバックします:
pubsub.schemas.rollback
-
メッセージを検証します:
pubsub.schemas.validate
-
スキーマの IAM ポリシーを取得します:
pubsub.schemas.getIamPolicy
-
スキーマの IAM ポリシーを構成します:
pubsub.schemas.setIamPolicy
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
ユーザー、グループ、ドメイン、サービス アカウントなどのプリンシパルにロールと権限を付与できます。あるプロジェクトにスキーマを作成し、別のプロジェクトにあるトピックにアタッチできます。プロジェクトごとに必要な権限があることを確認します。
スキーマに対してメッセージを検証する
Console
Google Cloud コンソールで、[Pub/Sub スキーマ] ページに移動します。
スキーマのリストが表示されます。
既存のスキーマの [スキーマ ID] をクリックします。
スキーマの [スキーマの詳細] ページが開きます。
[リビジョン] セクションで、メッセージを検証するリビジョンをクリックします。
[詳細] セクションで、[メッセージのテスト] をクリックします。
[メッセージのテスト] ウィンドウで、[メッセージ エンコード] のタイプを選択します。
[メッセージ] 本文にテスト メッセージを入力します。
[テスト] をクリックします。
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 schemas validate-message コマンドを使用します。
gcloud pubsub schemas validate-message --message=MESSAGE \ --message-encoding=MESSAGE_ENCODING \ (--schema-name=SCHEMA_NAME | \ --type=TYPE \ (--definition=DEFINITION | \ --definition-file=DEFINITION_FILE))
以下を置き換えます。
MESSAGE: スキーマに対して検証するメッセージ
MESSAGE_ENCODING: メッセージのエンコード。
binary
またはjson
のいずれかの値を指定します。SCHEMA_NAME: 既存のスキーマの名前またはフルパス。
TYPE: インライン スキーマのタイプ。
avro
またはprotocol-buffer
のいずれかの値を指定します。DEFINITION: インライン スキーマの定義。
DEFINITION_FILE: スキーマ定義を含むファイル。