Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon SNS トピックへ Amazon SQS キューをサブスクライブする

フォーカスモード
Amazon SNS トピックへ Amazon SQS キューをサブスクライブする - Amazon Simple Notification Service

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

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

Amazon SNS トピックが Amazon SQS キューにメッセージを送信できるようにするには、次のいずれかを選択します。

別の AWSアカウントにあるキューにメッセージを送信するようにトピックをセットアップする方法については、「別のアカウントの Amazon SQS キューへ Amazon SNS メッセージを送信する」を参照してください。

2 つのキューにメッセージを送信するトピックを作成する AWS CloudFormation テンプレートを確認するには、「」を参照してくださいAWS CloudFormationを使用して Amazon SNS から Amazon SQS へのメッセージングを自動化する

ステップ 1: キューとトピックの ARN を取得する

トピックにキューをサブスクライブするときは、キューの ARN のコピーが必要です。同様に、トピックがキューにメッセージを送ることを許可するには、トピックの ARN のコピーが必要です。

キューの ARN を取得するには、Amazon SQS コンソールまたは GetQueueAttributes API アクションを使用できます。

キューの ARN を Amazon SQS コンソールから取得するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/sqs/ で Amazon SQS コンソールを開きます。

  2. ARN を取得するキューのチェックボックスをオンにします。

  3. [詳細] タブから、Amazon SNS トピックへのサブスクライブに使用できるように ARN 値をコピーします。

トピックの ARN を取得するには、Amazon SNS コンソール、sns-get-topic-attributes コマンド、または GetQueueAttributes API アクションを使用できます。

トピックの ARN を Amazon SNS コンソールから取得するには
  1. Amazon SNS コンソールにサインインします。

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

  3. 詳細セクションで、ARN 値を使用して Amazon SNS トピックがメッセージを送信する許可を取得できるようにします。

ステップ 2: Amazon SQS キューにメッセージを送信する許可を Amazon SNS トピックに付与する

Amazon SNS トピックがキューにメッセージを送信できるようにするには、Amazon SNS トピックに sqs:SendMessage アクションの実行を許可するようにキューのポリシーを設定する必要があります。

トピックにキューをサブスクライブする前に、トピックとキューが必要です。トピックやキューをまだ作成していない場合は、ここで作成します。詳細については、「トピックの作成」と、「Amazon Simple Queue Service デベロッパーガイド」の「キューの作成」を参照してください。

キューにポリシーを設定するには、Amazon SQS コンソールまたは SetQueueAttributes API アクションを使用できます。開始する前に、キューにメッセージを送信できるようにするトピックの ARN があることを確認してください。複数のトピックにキューをサブスクライブする場合、ポリシーにはトピックごとに 1 つの Statement 要素が含まれている必要があります。

Amazon SQS コンソールを使用してキューに SendMessage ポリシーを設定するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/sqs/ で Amazon SQS コンソールを開きます。

  2. ポリシーを設定するキューのチェックボックスをオンにし、[アクセスポリシー] タブを選択してから、[編集] を選択します。

  3. [アクセスポリシー] セクションで、キューにアクセスできるユーザーを定義します。

    • トピックにアクションを許可する条件を追加します。

    • 以下の例に示すように、Amazon SNS サービスを Principal に設定します。

    • aws:SourceArn または aws:SourceAccount グローバル条件キーを使用して、混乱した代理シナリオから保護します。これらの条件キーを使用するには、値をトピックの ARN に設定します。キューを複数のトピックにサブスクライブしている場合は、代わりに aws:SourceAccount を使用できます。

    このポリシーは、MyTopic が MyQueue にメッセージを送ることを許可します。

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }

ステップ 3: キューを Amazon SNS トピックへサブスクライブします。

トピックを介してキューにメッセージを送信するには、キューを Amazon SNS トピックにサブスクライブする必要があります。キューは ARN で指定します。トピックにサブスクライブするには、Amazon SNS コンソール、sns-subscribe CLI コマンド、または Subscribe API アクションを使用できます。開始する前に、サブスクライブするキューの ARN があることを確認してください。

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

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

  3. [トピック] ページでトピックを選択します。

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

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

    1. [トピックの ARN] を検証します。

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

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

    4. [サブスクリプションの作成] を選択します。

    サブスクリプションが確認されると、新しいサブスクリプションの [サブスクリプション ID] にサブスクリプション ID が表示されます。キューの所有者がサブスクリプションを作成する場合、サブスクリプションは自動的に確認され、ほぼ瞬時にアクティブになります。

    通常は、自分のアカウントの自分のトピックに自分のキューをサブスクライブします。ただし、別のアカウントのキューを自分のトピックにサブスクライブすることもできます。サブスクリプションを作成するユーザーがキューの所有者ではない場合 (例えば、アカウント A のユーザーがアカウント A のトピックにアカウント B のキューをサブスクライブする場合)、サブスクリプションの確認が必要です。別のアカウントのキューをサブスクライブし、サブスクリプションを確認する方法の詳細については、「別のアカウントの Amazon SQS キューへ Amazon SNS メッセージを送信する」を参照してください。

ステップ 4: 適切なトピックおよびキューアクションに対するアクセス権限をユーザーに付与する

AWS Identity and Access Management (IAM) を使用して、適切なユーザーのみが Amazon SNS トピックに発行し、Amazon SQS キューからのメッセージの読み取り/削除を許可する必要があります。IAM ユーザーに対するトピックおよびキューに対するアクションの制御の詳細については、「Amazon SNS でのアイデンティティベースのポリシーを使用する」および『Amazon Simple Queue Service デベロッパーガイド』の「Amazon SQS での Identity and Access Management」を参照してください。

トピックまたはキューへのアクセスは、以下の 2 つの方法で制御します。

  • IAM ユーザーまたはグループにポリシーを追加する。ユーザーにトピックやキューへのアクセス権限を付与する最も簡単な方法として、グループを作成し、そのグループに適切なポリシーとユーザーを追加することができます。個々のユーザーに設定するポリシーを継続的に追跡するよりも、グループに対してユーザーを追加または削除する方がはるかに簡単です。

  • トピックまたはキューにポリシーを追加する。トピックまたはキューへのアクセス許可を別の AWS アカウントに付与する場合、そのプリンシパルとしてアクセス許可を付与 AWS アカウント する を持つポリシーを追加することしかできません。

ほとんどの場合は、最初の方法 (ポリシーをグループに適用し、適切なユーザーをグループに追加または削除することでアクセス権限を管理する) を使用します。別のアカウントのユーザーにアクセス権限を付与する場合は、2 番目の方法を使用する必要があります。

IAM ユーザーまたはグループにポリシーを追加する

IAM ユーザーまたはグループに次のポリシーを追加した場合、そのユーザーまたはそのグループのメンバーに、MyTopic トピックで sns:Publish アクションを実行する許可が付与されます。

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

IAM ユーザーまたはグループに次のポリシーを追加した場合、ユーザーまたはそのグループのメンバーに、キューの「MyQueue 1」と「MyQueu 2」に対して sqs:ReceiveMessage および sqs:DeleteMessage アクションを実行する許可が付与されます。

{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }

トピックまたはキューにポリシーを追加する

以下のサンプルポリシーは、トピックとキューに別のアカウントのアクセス権限を付与する方法を示しています。

注記

アカウント内のリソースへの別の AWS アカウント アクセスを許可すると、そのリソースへの管理者レベルのアクセス (ワイルドカードアクセス) アクセス許可を持つ IAM ユーザーにも付与されます。他のアカウントの他のすべての IAM ユーザーは、自動的にリソースへのアクセスが拒否されます。その AWS アカウント アクセスの特定の IAM ユーザーにリソースへのアクセス権を付与する場合、管理者レベルアクセス権を持っているアカウントまたは IAM ユーザーは、そのリソースのアクセス権限をそれらの IAM ユーザーに委任する必要があります。クロスアカウントの委任の詳細については、『IAM ガイドの使用』の「Enabling Cross-Account Access」を参照してください。

アカウント 123456789012 の「マイトピック」トピックに次のポリシーを追加した場合、そのトピックで sns:Publish アクションを実行するアクセス権限をアカウント 111122223333 に付与したことになります。

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

アカウント 123456789012 のキュー「マイキュー」に以下のポリシーを追加した場合、そのキューで sqs:DeleteMessage および sqs:ReceiveMessage アクションを実行する許可をアカウント 111122223333 に付与したことになります。

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }

ステップ 5: トピックのキューサブスクリプションをテストする

トピックのキューサブスクリプションは、トピックに発行し、トピックがキューに送信したメッセージを表示することでテストできます。

Amazon SNS コンソールを使用してトピックに発行するには
  1. トピックに発行するアクセス許可を持つ AWS アカウント または IAM ユーザーの認証情報を使用して、 にサインイン AWS Management Console し、https://console.aws.amazon.com/sns/ で Amazon SNS コンソールを開きます。

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

  3. [件名] ボックスに件名 (「Testing publish to queue」など) を入力し、[メッセージ] ボックスに任意のテキスト (「Hello world!」など) を入力して、[メッセージの発行] を選択します。「Your message has been successfully published.」というメッセージが表示されます。

Amazon SQS コンソールを使用してトピックからのメッセージを表示するには
  1. キュー内のメッセージを表示するアクセス許可を持つ AWS アカウント または IAM ユーザーの認証情報を使用して、 にサインイン AWS Management Console し、https://console.aws.amazon.com/sqs/ で Amazon SQS コンソールを開きます。

  2. トピックにサブスクライブされている [queue] (キュー) を選択します。

  3. [Send and receive messages] (メッセージの送受信) を選択し、[Poll for messages] (メッセージのポーリング) を選択します。タイプが [通知] のメッセージが表示されます。

  4. [本文] カラムで、[詳細] を選択します。[メッセージ詳細] ボックスに、トピックに発行した件名とメッセージを含む JSON ドキュメントが表示されます。メッセージは、以下の JSON ドキュメントのようになります。

    { "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
  5. [閉じる] を選択します。キューに通知メッセージを送信するトピックへの発行は、正常に終了しました。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.