本文說明如何驗證 Pub/Sub 主題的結構定義。
您可以在建立結構定義資源之前或之後,驗證訊息是否符合特定結構定義。這個步驟可確保您要透過與結構定義相關聯的主題傳送的訊息,在套用結構定義前確實相符。
事前準備
- 瞭解 Pub/Sub 結構定義的運作方式。
- 建立結構定義。
必要角色和權限
    
      如要取得驗證及管理結構定義訊息所需的權限,請要求管理員為您授予專案的「Pub/Sub 編輯者」  (roles/pubsub.editor) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
  
  
這個預先定義的角色具備驗證及管理結構定義訊息所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要驗證及管理結構定義訊息,必須具備下列權限:
- 
                建立結構定義:
                  pubsub.schemas.create
- 
                將結構定義附加至主題:
                  pubsub.schemas.attach
- 
                提交結構定義修訂版本:
                  pubsub.schemas.commit
- 
                刪除結構定義或結構定義修訂版本:
                  pubsub.schemas.delete
- 
                取得結構定義或結構定義修訂版本:
                  pubsub.schemas.get
- 
                列出結構定義:
                  pubsub.schemas.list
- 
                列出結構定義修訂版本:
                  pubsub.schemas.listRevisions
- 
                回溯結構定義:
                  pubsub.schemas.rollback
- 
                驗證訊息:
                  pubsub.schemas.validate
- 
                取得結構定義的身分與存取權管理政策:
                  pubsub.schemas.getIamPolicy
- 
                設定結構定義的 IAM 政策:
                  pubsub.schemas.setIamPolicy
您可以將角色和權限授予主體,例如使用者、群組、網域或服務帳戶。您可以在一個專案中建立結構定義,並將其附加至位於其他專案的主題。請確認您具備每個專案的必要權限。
驗證訊息是否符合結構定義
控制台
- 前往 Google Cloud 控制台的「Pub/Sub schemas」(Pub/Sub 結構定義) 頁面。 - 系統會顯示結構定義清單。 
- 按一下現有結構定義的「結構定義 ID」。 - 系統會開啟結構定義的「結構定義詳細資料」頁面。 
- 在「修訂版本」部分,按一下要驗證訊息的修訂版本。 
- 在「詳細資料」部分,按一下「測試訊息」。 
- 在「測試訊息」視窗中,選取「訊息編碼」類型。 
- 在「訊息」內文中輸入測試訊息。 
- 按一下「Test」。 
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:包含結構定義的檔案。