このドキュメントでは、Pub/Sub サブスクリプションの単一メッセージ変換(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 を更新する手順は次のとおりです。
コンソール
-
Google Cloud コンソールで、Pub/Sub の [サブスクリプション] ページに移動します。
-
SMT を編集する定期購入をクリックします。
-
サブスクリプションの詳細ページで、[編集] をクリックします。
[変換] タブには、サブスクリプションに接続されているすべての SMT が一覧表示されます。
-
[定期購入を編集] ページでは、次の操作を行うことができます。
-
新しい SMT を追加します。[変換を追加] をクリックします。
-
既存の SMT を編集します。SMT を展開して編集します。
-
SMT を並べ替えます。上下の矢印キーを使用します。
-
SMT を削除します。削除ボタンをクリックします。
-
-
[更新] をクリックします。
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 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 または名前に置き換えます。
-