驗證結構定義的訊息

本文說明如何驗證 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

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

您可以將角色和權限授予主體,例如使用者、群組、網域或服務帳戶。您可以在一個專案中建立結構定義,並將其附加至位於其他專案的主題。請確認您具備每個專案的必要權限。

驗證訊息是否符合結構定義

控制台

  1. 前往 Google Cloud 控制台的「Pub/Sub schemas」(Pub/Sub 結構定義) 頁面。

    前往「結構定義」

    系統會顯示結構定義清單。

  2. 按一下現有結構定義的「結構定義 ID」

    系統會開啟該結構定義的「結構定義詳細資料」頁面。

  3. 在「修訂版本」部分,按一下要驗證訊息的修訂版本。

  4. 在「詳細資料」部分,按一下「測試訊息」

  5. 在「測試訊息」視窗中,選取「訊息編碼」類型。

  6. 在「訊息」內文中輸入測試訊息。

  7. 按一下「Test」

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 如要根據結構定義驗證訊息,請使用 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:訊息的編碼。指定下列其中一個值:binaryjson

    • SCHEMA_NAME:現有結構定義的名稱或完整路徑。

    • TYPE:內嵌結構定義的類型。請指定下列其中一個值:avroprotocol-buffer

    • DEFINITION:內嵌結構定義。

    • DEFINITION_FILE:包含結構定義的檔案。

後續步驟