Amazon SNS コンソールでクロスアカウント SQS サブスクリプションの属性を表示または変更しようとしたときに表示される「認証エラー」を解決するにはどうすればよいですか?

最終更新日: 2022年7月29日

Amazon Simple Queue Service (Amazon SQS) キューを別のAWS アカウントの Amazon Simple Notification Service (Amazon SNS) トピックにサブスクライブしました。Amazon SNS コンソールからクロスアカウントサブスクリプションの属性を表示または編集すると、「認証エラー」が表示されます。 どうすれば解決できますか?

簡単な説明

トピックを所有していないアカウントから SQS キューの SNS トピックサブスクリプションを作成した場合、SQS キューを所有するアカウントがサブスクリプションを所有します。その後、SNS トピックを作成したアカウントの SNS サブスクリプション属性を表示または編集すると、認証エラーが発生します。

注: 表示および編集するサブスクリプション関連の許可を SNS トピックポリシーアクションに含めることはできません。代わりに次の解決策を使用してください。

解決方法

AWS コンソールを使用する場合

  1. SNS トピックを所有するアカウントで Amazon SNS コンソールを開きます。
  2. ナビゲーション ペインで、[Topics] (トピック) を選択します。
  3. トピックの名前を選択します。次に、[サブスクリプション] タブから、SQS キューサブスクリプションのサブスクリプション ID をコピーします。
  4. SQS キューを所有するアカウントで Amazon SNS コンソールを開きます。
  5. [Subscriptions] (サブスクリプション) メニューオプションで、ステップ 3 でコピーした [Subscription ID] (サブスクリプション ID) を選択します。
  6. 必要に応じて、サブスクリプション属性を表示および編集します。

GetSubscriptionAttributes を使用する

注意: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、 AWS CLI の最新バージョンを使用するようにしてください

AWS コマンドラインインターフェイス (AWS CLI) または SDK を使用してサブスクリプションを作成するために使用されたアカウントで GetSubscriptionAttributes を使用して、サブスクリプション属性を表示します。このコマンドを実行するには、IAM ユーザーまたはロールに SNS アクション SetSubscriptionAttributes および GetSubscriptionAttributes に対するアクセス権限が必要です。

次の例では、SubscriptionArn をリクエストパラメータとして使用して、AWS CLI から GetSubscriptionAttributes を使用しています。SubscriptionArn を取得するには、ListSubscriptionsByTopic を使用します。

aws sns get-subscription-attributes --subscription-arn arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
  "Attributes": {
    "Owner": "9876543210",
    "RawMessageDelivery": "false",
    "TopicArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS",
    "Endpoint": "example@amazon.com",
    "Protocol": "email",
    "PendingConfirmation": "false",
    "ConfirmationWasAuthenticated": "false",
    "SubscriptionArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
   }
}

サブスクリプションを削除し、再作成する

SNS トピックを所有する AWS アカウントで SNS トピックサブスクリプションの属性を制御する場合:

  1. 既存のサブスクリプションを削除します。
  2. SNS トピックを所有するアカウントから同じサブスクリプションを作成します。

SNS トピックを所有する AWS アカウントが、作成されたサブスクリプションリソースの所有者になりました。