トピック SMT を更新する

このドキュメントでは、Pub/Sub トピックの単一メッセージ変換(SMT)を更新する方法について説明します。SMT の変更は数分以内に有効になります。トピック SMT の場合、変更は SMT の更新後にパブリッシュされる新しいメッセージに適用されます。

トピック SMT を更新するには、 Google Cloud コンソール、Google Cloud CLI、 クライアント ライブラリ、または Pub/Sub API を使用します。

必要なロールと権限

トピック SMT を更新するために必要な権限を取得するには、プロジェクトに対する Pub/Sub 編集者 roles/pubsub.editor)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには トピック SMT の更新に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

トピック SMT を更新するには、次の権限が必要です。

  • トピックに対するトピックの更新権限を付与します。 projects.topics.patch
  • プロジェクトに対するトピックの表示権限を付与します。この権限は、 Google Cloud コンソールを使用している場合にのみ必要です。 pubsub.topics.view

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

アクセス制御は、プロジェクト レベルと個々のリソースレベルで構成できます。

トピック SMT を更新する

トピック SMT を更新する手順は次のとおりです。

コンソール

  1. コンソールで、Pub/Sub の [トピック] ページに移動します。 Google Cloud

    [トピック] に移動

  2. SMT を編集するトピックをクリックします。

  3. [トピックの詳細] ページで、[編集] をクリックします。

    [変換] タブには、トピックにアタッチされているすべての SMT が一覧表示されます。

  4. [トピックを編集] ページで、次の操作を行うことができます。

    1. 新しい SMT を追加します。[変換を追加] をクリックします。

    2. 既存の SMT を編集します。SMT を展開して編集します。

    3. SMT を並べ替えます。上下の矢印を使用します。

    4. SMT を削除します。削除ボタンをクリックします。

  5. [更新] をクリックします。

gcloud

  1. コンソールで Cloud Shell をアクティブにします。 Google Cloud

    Cloud Shell をアクティブにする

    コンソールの下部にある Google Cloud Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です 。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています 。セッションが初期化されるまで数秒かかることがあります。

  2. gcloud pubsub topics update コマンドを実行します。

    gcloud pubsub topics update TOPIC_ID \
        --message-transforms-file=TRANSFORMS_FILE

    次のように置き換えます。

    • TOPIC_ID: 更新するトピックの ID または名前。

    • TRANSFORMS_FILE: 更新された SMT を含む YAML または JSON ファイルのパス。

      YAML 変換ファイルの例を次に示します。

      - javascriptUdf:
          code: >
              function redactSSN(message, metadata) {
                const data = JSON.parse(message.data);
                delete data['ssn'];
                message.data = JSON.stringify(data);
                return message;
              }
          functionName: redactSSN
      - javascriptUdf:
          code: >
              function filterHighAmount(message, metadata) {
                const data = JSON.parse(message.data);
                if (data['amount'] > 100 ) { return null; }
                return message;
              }
          functionName: filterHighAmount

    トピックからすべての SMT をクリアするには、次のコマンドを使用します。

    gcloud pubsub topics update TOPIC_ID --clear-message-transforms

    TOPIC_ID は、更新するトピックの ID または名前に置き換えます。

次のステップ