サブスクリプションフィルタポリシーを適用する - Amazon Simple Notification Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サブスクリプションフィルタポリシーを適用する

Amazon SNS コンソールを使用して、Amazon SNS サブスクリプションにフィルタポリシーを適用できます。または、プログラムでポリシーを適用するには、Amazon SNS API (対応の Amazon SNS API) を使用できます。AWS Command Line Interface(AWS CLI)、または任意のAWSAmazon SNS をサポートする SDK(AWS SDK for Java。

重要

AWSIAM や Amazon SNS などのサービスでは、結果整合性と呼ばれる分散コンピューティングモデルを使用します。サブスクリプションフィルターポリシーへの追加または変更は、完全に有効になるまでに最大 15 分かかります。

AWS Management Console

  1. Amazon SNS コンソールにサインインします。

  2. ナビゲーションパネルで、[サブスクリプション] を選択します。

  3. サブスクリプションを選択したら、[Edit (編集)] を選択します。

  4. [Edit EXAMPLE1-23bc-4567-d890-ef12g3hij456 (例1-23bc-4567-d890-ef12g3hij456 の編集)] ページで、[Subscription filter policy (サブスクリプションフィルタポリシー)] セクションを展開します。

  5. [JSON editor (JSON エディタ)] フィールドで、フィルタポリシーの JSON 本文を提供します。

  6. [変更を保存] をクリックします。

    Amazon SNS により、フィルタポリシーがサブスクリプションに適用されます。

AWS CLI

AWS Command Line Interface (AWS CLI) を使用してフィルタポリシーを適用するには、以下の例に示すように set-subscription-attributes コマンドを使用します。

$ aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicy --attribute-value "{\"store\":[\"example_corp\"],\"event\":[\"order_placed\"]}"

--attribute-name オプションで、FilterPolicy を指定します。--attribute-value で、JSON ポリシーを指定します。

ポリシーに有効な JSON を提供するには、属性名と値を二重引用符で囲みます。また、ポリシーの引数全体を引用符で囲む必要があります。引用符のエスケープを避けるため、例に示すように、一重引用符を使用してポリシーを囲み、二重引用符を使用して JSON 名と値を囲みます。

フィルタポリシーが適用されたことを確認するには、get-subscription-attributes コマンドを使用します。ターミナル出力の属性には、次の例に示すように、FilterPolicy キーのフィルタポリシーが表示されます。

$ aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ... { "Attributes": { "Endpoint": "endpoint . . .", "Protocol": "https", "RawMessageDelivery": "false", "EffectiveDeliveryPolicy": "delivery policy . . .", "ConfirmationWasAuthenticated": "true", "FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}", "Owner": "111122223333", "SubscriptionArn": "arn:aws:sns: . . .", "TopicArn": "arn:aws:sns: . . ." } }

AWS SDK for Java

以下の例では、Amazon SNS クライアントを使用して、フィルタポリシーを適用する方法について説明します。AWSSDK。

AWS SDK for Java

AWS SDK for Java を使用してフィルタポリシーを適用するには、 クライアントの setSubscriptionAttributesAmazonSNS メソッドを使用します。次の例のように、SetSubscriptionAttributesRequest オブジェクトを引数として指定します。

AmazonSNS snsClient = AmazonSNSClientBuilder.defaultClient(); String filterPolicyString = "{\"store\":[\"example_corp\"],\"event\":[\"order_placed\"]}"; SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest(subscriptionArn, "FilterPolicy", filterPolicyString); snsClient.setSubscriptionAttributes(request);

SetSubscriptionAttributesRequest オブジェクトを初期化するには、次の引数を指定します。

  • subscriptionArn— ポリシーを適用するサブスクリプションの Amazon リソースネーム (ARN)。

  • attributeName— を指定してください。"FilterPolicy"

  • attributeValue— 文字列としての JSON フィルタポリシー。文字列ポリシーは二重引用符で囲む必要があるため、\"store\" のように、属性名と値を囲む二重引用符を忘れずにエスケープしてください。

SetSubscriptionAttributesRequest クラスでは、フィルタポリシーを文字列として受け取ります。ポリシーを Java コレクションとして定義する場合は、各属性名を値のリストと関連付けるマップを作成します。サブスクリプションにポリシーを割り当てるには、最初にマップのコンテンツからポリシーの文字列バージョンを作成します。次にその文字列を attributeValue 引数として SetSubscriptionAttributesRequest に渡します。

AWS SDK for .NET

でフィルタポリシーを適用するにはAWSSDK for .NET (使用) SetSubscriptionAttributesメソッドのAmazonSNSクライアント。次の例のように、SetSubscriptionAttributesRequest オブジェクトを引数として指定します。

AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(); String filterPolicyString = "{\"store\":[\"example_corp\"],\"event\":[\"order_placed\"]}"; SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest(subscriptionArn, "FilterPolicy", filterPolicyString); snsClient.setSubscriptionAttributes(request);

SetSubscriptionAttributesRequest オブジェクトを初期化するには、次の引数を指定します。

  • subscriptionArn— ポリシーを適用するサブスクリプションの Amazon リソースネーム (ARN)。

  • attributeName— を指定してください。"FilterPolicy"

  • attributeValue— 文字列としての JSON フィルタポリシー。文字列ポリシーは二重引用符で囲む必要があるため、\"store\" のように、属性名と値を囲む二重引用符を忘れずにエスケープしてください。

SetSubscriptionAttributesRequest クラスでは、フィルタポリシーを文字列として受け取ります。ポリシーを C# コレクションとして定義する場合は、各属性名を値のリストと関連付けるディクショナリを作成します。サブスクリプションにポリシーを割り当てるには、最初にディクショナリのコンテンツからポリシーの文字列バージョンを作成します。次にその文字列を attributeValue 引数として SetSubscriptionAttributesRequest に渡します。

Amazon SNS API

Amazon SNS API を使用してフィルタポリシーを適用するには、SetSubscriptionAttributesaction. AttributeName パラメータを FilterPolicy に設定し、AttributeValue パラメータをフィルタポリシーの JSON に設定します。

AWS CloudFormation

AWS CloudFormation を使用してフィルタポリシーを適用するには、JSON または YAML テンプレートを使用して AWS CloudFormation スタックを作成します。詳細については、「」を参照してください。FilterPolicyプロパティAWS::SNS::Subscriptionの「リソース」AWS CloudFormationユーザーガイドの例AWS CloudFormationテンプレート

  1. AWS CloudFormation コンソールにサインインします。

  2. [Create Stack] を選択します。

  3. [テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択してから、ファイルを選択して [次へ] を選択します。

  4. [詳細の指定] ページで、以下の作業を行います。

    1. [スタックの名前] に「MyFilterPolicyStack」と入力します。

    2. [myHttpEndpoint] に、トピックにサブスクライブする HTTP エンドポイントを入力します。

      ヒント

      HTTP エンドポイントがない場合は作成します。

  5. [Options] ページで、[Next] を選択します。

  6. [Review] ページで、[Create ] を選択します。