AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

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

所要時間2分
0

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."

このエラーを解決するには、「IAM EC2 ロールを使用して、クロスアカウントの Amazon EC2 インスタンスから Amazon 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": "*"
    }
  ]
}

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ