Amazon SNS で発行オペレーションエラーを解決するにはどうすればよいですか?

最終更新日: 2022 年 08 月 05 日

Amazon Simple Notification Service (Amazon SNS) でエラーが発生します。このエラーは、サブネットを使用しているときに、クロスアカウントの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから SNS トピックを発行しようとしたときに発生します。

簡単な説明

Publish オペレーションの呼び出し時に認証エラーが発生する場合は、「EC2 インスタンスの IAM ロールと SNS トピックのアクセスポリシー許可を確認する」セクションのステップを完了してください。

サーバー側の暗号化を使用している SNS トピックに関する問題があり、「KMSAccessDenied」エラーが発生する場合は、「KMS キーの設定と EC2 IAM ロールの許可を確認する」セクションのステップを完了してください。

注: EC2 インスタンスがインターネットゲートウェイを使用してインターネットに接続できない場合は、「Amazon EC2 インスタンスがインターネットゲートウェイを使用してインターネットに接続できないのはなぜですか?」を参照してください。

解決方法

EC2 インスタンスの IAM ロールと SNS トピックのアクセスポリシー許可を確認する

EC2 インスタンスと Amazon SNS トピックアクセスポリシーのための AWS Identity and Access Management (IAM) ロール許可の設定が誤っていると、次のエラーが発生する可能性があります。

"An error occurred (AuthorizationError) when calling the Publish operation: User: arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role/i-0123456789f804d is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-2:123456789012:cross-account-ec2-sns."

KMS キーの設定と EC2 IAM ロールの許可を確認する

EC2 インスタンスの IAM ロールと、AWS KMS キー (KMS キー) の AWS Key Management Service (AWS KMS) キーポリシーの許可が正しくない場合、以下のエラーが表示される場合があります。

An error occurred (KMSAccessDenied) when calling the Publish operation: null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Re
quest ID: IDNumber; Proxy: null)

注意: 上記のエラーは、SNS トピックがサーバー側の暗号化を使用する場合にのみ発生します。

このエラーを解決するには、KMS キーの設定と AWS KMS キーポリシーの許可をチェックします。

1.    KMS キーが有効になっていることを確認します。

2.    EC2 インスタンスの IAM ロールに、AWS KMS キーポリシーkms:GenerateDataKey*kms:Decrypt の実行が許可されていることを確認します。これは、SNS トピックのサーバー側の暗号化に使用される KMS キーのキーポリシーです。以下はその例です。

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
  },
  "Action": [
    "kms:GenerateDataKey*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}

3.    kms:GenerateDataKey* および kms:Decrypt 許可が EC2 インスタンスの IAM ロールにアタッチされていることを確認します。

注: ベストプラクティスは、必要な最小特権を付与することです。したがって、次の IAM ロールポリシーで、必ず Resource 値を KMS キー ARN に置き換えてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": "*"
    }
  ]
}

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


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