サブスクリプションの SMT を更新する

このドキュメントでは、Pub/Sub サブスクリプションの Single Message Transform(SMT)を更新する方法について説明します。SMT の変更は数分以内に有効になります。サブスクリプション SMT の場合、変更は UDF の更新後にサブスクリプションに配信される新しいメッセージに適用されます。

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

必要なロールと権限

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

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

必要な権限

サブスクリプション SMT を更新するには、次の権限が必要です。

  • サブスクリプションに対するサブスクリプションの更新権限を付与します: projects.subscriptions.patch
  • プロジェクトに対するサブスクリプションの表示権限を付与します。この権限は、 Google Cloud コンソールを使用している場合にのみ必要です: pubsub.subscriptions.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 subscriptions update コマンドを実行します。

    gcloud pubsub subscriptions update SUBSCRIPTION_ID \
        --message-transforms-file=TRANSFORMS_FILE

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

    • SUBSCRIPTION_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 subscriptions update SUBSCRIPTION_ID --clear-message-transforms

    SUBSCRIPTION_ID は、更新するサブスクリプションの ID または名前に置き換えます。

次のステップ