Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

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

別のアカウントの Amazon SQS キューに 1 つ以上のサブスクリプションがある Amazon SNS トピックに通知を発行できます。同じアカウント内にある場合と同じ方法でトピックとキューをセットアップします(「受信者としてキューを使用する場合」を参照)。唯一の相違点はサブスクリプションの確認の処理方法で、トピックへのキューのサブスクライブ方法によって異なります。

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

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

{ "Version":"2012-10-17", "Id":"MyTopicSubscribePolicy", "Statement":[{ "Sid":"Allow-other-account-to-subscribe-to-topic", "Effect":"Allow", "Principal":{ "AWS":"111122223333" }, "Action":"sns:Subscribe", "Resource":"arn:aws:sns:us-east-1:123456789012:MyTopic" } ] }

ポリシーを設定するには

  1. [トピック] を選択し、トピックの ARN を選択します。

  2. [トピックの詳細: MyTopic] ページで、[その他のトピックの操作]、[トピックのポリシーの編集] の順に選択します。

  3. [トピックのポリシーの編集] ダイアログボックスで [アドバンスド表示] を選択し、ポリシーを入力して、[Update (更新)] を選択します。

このポリシーが MyTopic に設定されると、ユーザーは、アカウント 111122223333 の認証情報を使用して Amazon SNS コンソールにログインし、トピックにサブスクライブできます。

Amazon SQS コンソールを使用して別のアカウントのトピックに Amazon SQS キューのサブスクリプションを追加するには

  1. キューが含まれる AWS アカウントまたはそのアカウントの IAM ユーザーの認証情報を使用して、AWS マネジメントコンソール にサインインし、Amazon SNS コンソール (https://console.aws.amazon.com/sns/) を開きます。

  2. トピックとキューの両方の ARN があることを確認してください。サブスクリプションを作成するときに必要です。

  3. トピックからメッセージを受信できるように、キューに sqs:SendMessage 許可が設定されていることを確認します。詳細については、「キューにメッセージを送信するアクセス許可をトピックに付与する」を参照してください。

  4. ナビゲーションペインで、[SNS Dashboard] を選択します。

  5. [Dashboard (ダッシュボード)] の [追加のアプリケーション] セクションで、[新規サブスクリプションの設定] を選択します。

  6. [Topic ARN] ボックスに、トピックの ARN を入力します。

  7. [Protocol] で、[Amazon SQS] を選択します。

  8. [Endpoint] ボックスに、キューの ARN を入力します。

  9. [Subscribe] を選択します。

  10. [Subscription request received! (サブスクリプションリクエスト受信)] で、サブスクリプションを確認する必要があることを示すテキストが表示されます。キューの所有者である場合は、サブスクリプションの確認は必要ありません。[Close] を選択します。サブスクリプションプロセスが完了すると、トピックに対して発行された通知メッセージがキューに送信されるようになります。

ユーザーは、AWS アカウント 111122223333 のアクセスキーとセレクタキーを使用して、sns-subscribe コマンドを発行するか、Subscribe API アクションを呼び出し、アカウント 123456789012 の MyTopic に Amazon SQS キューをサブスクライブすることもできます。以下の sns-subscribe コマンドは、アカウント 111122223333 のキュー MyQ をアカウント 123456789012 のトピック MyTopic にサブスクライブします。

aws sns subscribe --topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic --protocol sqs --notification-endpoint arn:aws:sqs:us-east-1:111122223333:MyQ

注記

送信するためには、キューは、Amazon SNS のアクセス許可が必要です。

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

キューの所有者ではないユーザーがサブスクリプションを作成する (たとえば、アカウント A のトピック所有者がアカウント B のキューにサブスクリプションを追加する) ときは、サブスクリプションの確認が必要です。

重要

トピックにサブスクライブする前に、トピックからメッセージを受信できるように、キューに sqs:SendMessage 許可が設定されていることを確認します。「キューにメッセージを送信するアクセス許可をトピックに付与する」を参照してください。

ユーザーが Subscribe アクションを呼び出すと、SubscriptionConfirmation タイプのメッセージがキューに送信され、サブスクリプション ID が Pending Confirmation に設定されたサブスクリプションが Amazon SNS コンソールに表示されます。サブスクリプションを確認するには、キューからのメッセージを読み取れるユーザーがメッセージの SubscribeURL 値に指定された URL にアクセスする必要があります。サブスクリプションが確認されるまで、トピックに対して発行された通知はキューに送信されません。サブスクリプションを確認するには、Amazon SQS コンソールまたは ReceiveMessage API アクションを使用できます。

Amazon SQS コンソールを使用してサブスクリプションを確認するには

  1. AWS マネジメントコンソールにサインインし、Amazon SQS コンソール(https://console.aws.amazon.com/sqs/)を開きます。

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

  3. [キュー操作] ドロップダウンリストから、[メッセージの表示/削除] を選択して、[メッセージのポーリングを開始] を選択します。タイプが [SubscriptionConfirmation] のメッセージが表示されます。

  4. [本文] 列で、[詳細] を選択します。

  5. テキストボックスで、[SubscribeURL] の値を探し、その URL をコピーします。URL は以下のようになります。

    https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37fb687f5d51e6e241d09c805d352fe148e56f8cff30f023ff35db8bccbc62721725b074841be6524bb215b0c45ec571ba1e7faacc309940c0b4b9e511ab85eba671412a4c314ecd446127ff1a9cfe08642b8e3738e73c279dd3ae565bd98f842ed992a4742ebec0946ebd9a
  6. ウェブブラウザで、URL をアドレスバーに貼り付けて URL にアクセスします。以下の XML ドキュメントのような応答が表示されます。

    <ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>dd266ecc-7955-11e1-b925-5140d02da9af</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

    Amazon SNS コンソールにトピックのサブスクリプションを表示すると、Subscription ID 列の [Pending Confirmation] メッセージがサブスクリプション ARN に置き換えられています。サブスクライブしたキューは、トピックからメッセージを受信する準備ができています。