翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サブスクリプションフィルターポリシーを適用する
Amazon SNS コンソールを使用して、Amazon SNS サブスクリプションにフィルターポリシーを適用できます。または、ポリシーをプログラム的に適用するには、Amazon SNS API、 AWS Command Line Interface (AWS CLI)、または Amazon SNS をサポートする任意の AWS SDK を使用できます。を使用することもできます。 AWS CloudFormation
重要
AWS IAM や Amazon SNS などのサービスは、結果整合性と呼ばれる分散コンピューティングモデルを使用します。サブスクリプションフィルターポリシーへの追加または変更は、完全に有効になるまでに最大 15 分かかります。
AWS Management Console
Amazon SNS コンソール
にサインインします。 -
ナビゲーションパネルで、[サブスクリプション] を選択します。
-
サブスクリプションを選択したら、[編集] を選択します。
-
[Edit](編集) ページで、[Subscription filter policy](サブスクリプションフィルターポリシーセクション) を展開します。
-
属性ベースのフィルタリングまたはペイロードベースのフィルタリングのいずれかを選択します。
-
[JSON editor](JSON エディタ) フィールドで、フィルターポリシーの [JSON body](JSON 本文) を提供します。
-
[変更を保存] をクリックします。
Amazon SNS により、フィルターポリシーがサブスクリプションに適用されます。
AWS CLI
AWS Command Line Interface (AWS CLI) を使用してフィルタポリシーを適用するには、set-subscription-attributes
以下の例のようにコマンドを使用します。--attribute-name
オプションで、FilterPolicy
を指定します。--attribute-value
で、JSON ポリシーを指定します。
$
aws sns set-subscription-attributes --subscription-arn
arn:aws:sns: ...
--attribute-name FilterPolicy --attribute-value'{"store":["example_corp"],"event":["order_placed"]}'
ポリシーに有効な JSON を提供するには、属性名と値を二重引用符で囲みます。また、ポリシーの引数全体を引用符で囲む必要があります。引用符のエスケープを避けるため、上に示した例のように、一重引用符を使用してポリシーを囲み、二重引用符を使用して JSON 名と値を囲みます。
属性ベース (デフォルト) からペイロードベースのメッセージフィルタリングに切り替える場合は、コマンドを使用することもできます。set-subscription-attributes--attribute-name
オプションで、FilterPolicyScope
を指定します。--attribute-value
の場合、MessageBody
を指定します。
$
aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicyScope --attribute-value MessageBody
フィルターポリシーが適用されたことを確認するには、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\"]}",
"FilterPolicyScope": "MessageAttributes",
"Owner": "111122223333",
"SubscriptionArn": "arn:aws:sns: . . .",
"TopicArn": "arn:aws:sns: . . ."
}
}
AWS SDK
SetSubscriptionAttributes
次のコード例は使用方法を示しています。
重要
SDK for Java 2.x の例を使用している場合、クラス SNSMessageFilterPolicy
はそのままでは使用できません。このクラスのインストール方法については、 GitHub Web サイトの例を参照してください
Amazon SNS API
Amazon SNS API を使用してフィルターポリシーを適用するには、SetSubscriptionAttributes
アクションへのリクエストを作成します。AttributeName
パラメータを FilterPolicy
に設定し、AttributeValue
パラメータをフィルターポリシーの JSON に設定します。
メッセージフィルタリングを属性ベース (デフォルト) からペイロードベースのメッセージフィルタリングに切り替える場合は、SetSubscriptionAttributes
アクションも使用できます。AttributeName
パラメータを FilterPolicyScope
に設定し、AttributeValue
パラメータを MessageBody
に設定します。
AWS CloudFormation
を使用してフィルターポリシーを適用するには AWS CloudFormation、JSON または YAML テンプレートを使用してスタックを作成します。 AWS CloudFormation
詳細については、『AWS CloudFormation ユーザーガイド』FilterPolicy
AWS::SNS::Subscription
AWS CloudFormation のリソースのプロパティとサンプルテンプレートを参照してください
-
AWS CloudFormation コンソール
にサインインします。 -
[スタックの作成] を選択します。
-
[テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択してから、ファイルを選択して [次へ] をクリックします。
-
[詳細の指定] ページで、以下の作業を行います。
-
[スタックの名前] に「
MyFilterPolicyStack
」と入力します。 -
にはmyHttpEndpoint、トピックに登録する HTTP エンドポイントを入力します。
ヒント
HTTP エンドポイントがない場合は作成します。
-
-
[オプション] ページで、[次へ] をクリックします。
-
[Review] ページで、[作成] を選択します。