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

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

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

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

重要

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

AWS マネジメントコンソール

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

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

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

  4. リポジトリの []編集 EXAMPLE1-23bc-4567-d890-ef12g3hij456ページで、サブスクリプションフィルターポリシーセクションに追加します。

  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

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

AWS SDK for Java

AWS SDK for Java を使用してフィルタポリシーを適用するには、setSubscriptionAttributesメソッドのAmazonSNSクライアント。次の例のように、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

AWS SDK 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 スタックを作成します。詳細については、『』を参照してください。FilterPolicypropertyAWS::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 ] を選択します。