別のアカウントの Amazon SQSキューに Amazon SNSメッセージを送信する - Amazon Simple Notification Service

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

別のアカウントの Amazon SQSキューに Amazon SNSメッセージを送信する

このドキュメントでは、別のアカウントの Amazon SQSキューへの 1 つ以上のサブスクリプションを使用して Amazon SNSトピックに通知を発行する方法について説明します。同じアカウント内にある場合と同じ方法でトピックとキューをセットアップします (「非同期処理のための Amazon SQSキューへのファンアウト Amazon SNS通知」を参照)。主な相違点はサブスクリプションの確認の処理方法で、トピックへのキューのサブスクライブ方法によって異なります。

キューの所有者がサブスクリプションを作成すると確認が自動的に実行されるため、可能な場合は「キューの所有者がサブスクリプションを作成する」セクションで参照されている手順に従うことがベストプラクティスです。

注記

Amazon SQSキューに大量のメッセージがある場合は、キュー所有者がサブスクリプションを作成することをお勧めします。

キューの所有者がサブスクリプションを作成する

Amazon SQSキューを作成したアカウントはキュー所有者です。キューの所有者がサブスクリプションを作成するとき、サブスクリプションを確認する必要はありません。Subscribe アクションが完了するとすぐに、キューはトピックからの通知の受信を開始します。キューの所有者がトピック所有者のトピックにサブスクライブできるようにするには、トピック所有者が、トピックに対して Subscribe アクションを呼び出す許可をキューの所有者のアカウントに付与する必要があります。

ステップ 1: AWS Management Consoleを使用してトピックポリシーを設定するには

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

  2. ナビゲーションパネルで、[トピック] を選択します。

  3. トピックを選択し、[編集] を選択します。

  4. 編集時 MyTopic ページ、アクセスポリシーセクションを展開します。

  5. 以下のポリシーを入力します。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

    このポリシーは、123456789012 アカウント内で MyTopicsns:Subscribe を呼び出す許可を 111122223333 アカウントに付与します。

    111122223333 のアカウントに対する認証情報が持っているユーザーは、MyTopic に登録できます。このアクセス許可により、アカウント ID はアクセス許可をIAMユーザー/ロールに委任できます。呼び出しは、ルートアカウントまたは管理者ユーザーのみに許可されます。IAM ユーザー/ロールは、キューsns:subscribeにサブスクライブを許可する必要があります。

  6. [Save changes] (変更の保存) をクリックします。

    アカウントの認証情報を持つユーザーは、 にサブスクライブ111122223333できます MyTopic。

ステップ 2: AWS アカウント を使用して別の のトピックに Amazon SQSキューサブスクリプションを追加するには AWS Management Console

開始する前に、トピックとキューARNsの があり、キューにメッセージを送信するアクセス許可をトピックに付与していることを確認してください。

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

  2. ナビゲーションパネルで、[Queues](キュー) を選択します。

  3. キューのリストから、Amazon SNSトピックにサブスクライブするキューを選択します。

  4. Amazon SNSトピック にサブスクライブを選択します

  5. このキューで使用できる Amazon SNSトピックを指定するメニューから、キューの Amazon SNSトピックを選択します。

  6. Amazon SNSトピックを入力 ARN を選択し、トピックの Amazon リソースネーム (ARN) を入力します。

  7. [Save] を選択します。

    注記
    • サービスと通信できるようにするには、キューに Amazon のアクセス許可が必要ですSNS。

    • キューの所有者であるため、サブスクリプションを確認する必要はありません。

キュー作成サブスクリプションを所有していないユーザー

サブスクリプションを作成するユーザーがキューの所有者ではない場合、そのサブスクリプションを確認する必要があります。

Subscribe アクションを使用すると、Amazon はサブスクリプションの確認をキューSNSに送信します。サブスクリプションは Amazon SNSコンソールに表示され、サブスクリプション ID は確認保留中 に設定されます。

サブスクリプションを確認するには、キューからメッセージを読み取るアクセス許可を持つユーザーがサブスクリプション確認 を取得しURL、サブスクリプション所有者がサブスクリプション確認 を使用してサブスクリプションを確認する必要がありますURL。サブスクリプションが確認されるまで、トピックに対して発行された通知はキューに送信されません。サブスクリプションを確認するには、Amazon SQSコンソールまたは ReceiveMessageアクションを使用します。

注記

トピックにエンドポイントをサブスクライブする前に、キューに sqs:SendMessage アクセス権限を設定してこのキューがトピックからメッセージを受信できるようにする必要があります。詳細については、「ステップ 2: Amazon SQSキューにメッセージを送信するアクセス許可を Amazon SNSトピックに付与する」を参照してください。

ステップ 1: AWS アカウント を使用して別の のトピックに Amazon SQSキューサブスクリプションを追加するには AWS Management Console

開始する前に、トピックとキューARNsの があり、キューにメッセージを送信するアクセス許可をトピックに付与していることを確認してください。

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

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

  3. [サブスクリプション] ページで [サブスクリプションの作成] を選択します。

  4. [サブスクリプションの作成] ページで [詳細] セクションで、以下を実行します。

    1. トピック ARNには、トピックARNの を入力します。

    2. プロトコル でAmazon SQSを選択します。

    3. エンドポイント には、キューARNの を入力します。

    4. [Create subscription] を選択します。

      注記
      • サービスと通信できるようにするには、キューに Amazon のアクセス許可が必要ですSNS。

以下は、Amazon SNSトピックが Amazon SQSキューにメッセージを送信することを許可するポリシーステートメントの例です。

{ "Sid": "Stmt1234", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName" } } }

ステップ 2: を使用してサブスクリプションを確認するには AWS Management Console

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

  2. トピックへのサブスクリプションが保留になっているキューを選択します。

  3. [Send and receive messages] (メッセージの送受信) を選択し、[Poll for messages] (メッセージのポーリング) を選択します。

    サブスクリプションの確認を含むメッセージがキューで受信されます。

  4. [本文] 列で、次の操作を行います。

    1. [詳細] を選択します。

    2. メッセージの詳細ダイアログボックスで、サブスクライブURL値を見つけてメモします。これはサブスクリプションリンクです (以下に例を示します)。API トークン検証の詳細については、Amazon SNSAPIリファレンスConfirmSubscriptionの「」を参照してください。

      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
    3. サブスクリプション確認リンクを書き留めます。は、キュー所有者からサブスクリプション所有者に渡URLされる必要があります。サブスクリプション所有者は、Amazon コンソール URL に を入力する必要があります。 SNS

  5. Amazon SNSコンソールサブスクリプション所有者としてログインします。サブスクリプション所有者は確認を実行します。

  6. 関連する [topic] (トピック) を選択します。

  7. トピックのサブスクリプション一覧表で、関連するサブスクリプションを選択します。「Pending confirmation (保留中の確認)」とラベル付けされています。

  8. [confirm subscription] (サブスクリプションの確認) を選択します。

  9. サブスクリプション確認リンクを求めるモーダルが表示されます。サブスクリプション確認リンクを貼り付けます。

  10. モーダルで [Confirm subscription] (サブスクリプションの確認) を選択します。

    次のようなXMLレスポンスが表示されます。

    <ConfirmSubscriptionResponse> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-bc89-012d-3e45-6fg7h890123i</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

    サブスクライブしたキューは、トピックからメッセージを受信する準備ができています。

  11. (オプション) Amazon SNSコンソールでトピックサブスクリプションを表示すると、保留中の確認メッセージがサブスクリプション ID 列ARNのサブスクリプションに置き換えられたことがわかります。

サブスクリプション解除リクエストでサブスクリプションに認証を要求させるにはどうすればよいですか。

サブスクリプションの所有者は、サブスクリプション確認時に AuthenticateOnUnsubscribe フラグを true に設定する必要があります。

  • キューの所有者がサブスクリプションを作成すると、AuthenticateOnUnsubscribe は自動的に true に設定されます。

  • 認証なしでサブスクリプション確認リンクに移動した場合、AuthenticateOnUnsubscribe を true に設定することはできません。