Amazon SNS トピックにサブスクライバーを追加しようとするときの認証エラーを解決するにはどうすればよいですか?

最終更新日: 2021 年 10 月 6 日

Amazon Simple Notification Service (Amazon SNS) トピックにサブスクライバーを追加すると、AWS Identity and Access Management (IAM) の認証エラーを受け取ります。どうすればこのエラーを解決できますか?

簡単な説明

IAM エンティティ Subscribe API アクションのアクセス許可なしで Amazon SNS トピックにサブスクリプションを追加しようとすると、SNS は次のエラーを返します。

An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: sns:Subscribe on resource: YOUR_SNS_TOPIC_ARN

注: IAM エンティティは、IAM ユーザーまたはロールである可能性があります。

このエラーを解決するには、Amazon SNS トピックで Subscribe API アクションを実行するアクセス権限を IAM エンティティに付与します。

「明示的拒否」で終わる同様のエラーを受け取った場合

SNS リソースへの IAM エンティティアクセスを明示的に拒否するポリシーステートメントをすべて削除します。

解決方法

IAM エンティティと SNS トピックが異なる AWS アカウントにある場合

次の両方を実行します。

エンティティに「sns: Subscribe」アクションの実行を許可する IAM エンティティに IAM ポリシーステートメントを添付します。

手順については、「IAM ID のアクセス許可の追加および削除」参照してください。次の例の IAM ポリシーステートメントを添付します。

重要:「YOUR_SNS_TOPIC_ARN」 は、Amazon SNS トピックの Amazon リソースネーム (ARN) に置き換えてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SNSSubscribePermission",
            "Effect": "Allow",
            "Action": "sns:Subscribe",
            "Resource": "YOUR_SNS_TOPIC_ARN"
        }
    ]
}

IAM エンティティに「sns: Subscribe」アクションの実行を許可する Amazon SNS ポリシーステートメントをトピックのアクセスポリシーに添付します。

手順については、Amazon SNS トピックのアクセスポリシーを編集するにはどうすればよいですか?を参照してください。 次の例の Amazon SNS ポリシーステートメントを添付します。

重要:「YOUR_IAM ユーザー/ROLE_ARN」 を IAM エンティティの ARN に置き換えます。「YOUR_SNS_TOPIC_ARN」 を Amazon SNS トピックの ARN に置き換えます。

{
  "Sid": "AllowIAMEntity",
  "Effect": "Allow",
  "Principal": {
    "AWS": "YOUR_IAM USER/ROLE_ARN "
  },
  "Action": "sns:Subscribe",
  "Resource": "YOUR_SNS_TOPIC_ARN"
}

IAM エンティティと SNS トピックが同じアカウントにある場合

次のいずれかを実行します。両方は実行しないでください。

エンティティに「sns: Subscribe」アクションの実行を許可する IAM エンティティに IAM ポリシーステートメントを添付します

- または -

IAM エンティティが「sns: Subscribe」アクションを実行できるようにする Amazon SNS ポリシーステートメントをトピックのアクセスポリシーに添付します

ポリシーステートメントの例については、この記事の「IAM エンティティと SNS トピックが異なる AWS アカウントにある場合」セクションを参照してください。

IAM エンティティのポリシーも SNS トピックのアクセスポリシーも、SNS リソースへのアクセスを明示的に拒否していないことを確認します

IAM エンティティのポリシーと SNS トピックのアクセスポリシーを確認します。次に、SNS リソースへの IAM エンティティアクセスを明示的に拒否するポリシーステートメントをすべて削除します。

詳細については、「明示的な拒否と暗黙的な拒否の違い」を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?