Amazon Simple Notification Service(SNS)에서 오류가 발생합니다. 이 오류는 서브넷을 사용할 때 발생하며 교차 계정 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 SNS 주제를 게시하려고 할 때 발생합니다.
간략한 설명
게시 작업을 호출할 때 권한 부여 오류가 발생하면 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."
이 오류를 해결하려면 교차 계정 Amazon EC2 인스턴스에서 IAM 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 역할 정책에서 리소스 값을 KMS Key ARN으로 대체해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
]
}