Intenté publicar un tema de Amazon Simple Notification Service (Amazon SNS) y recibí un error de "publish operation".
Resolución
Completa los pasos de solución de problemas para el tipo de error "publish operation" de Amazon SNS que has recibido.
"An error occurred (AuthorizationError) when calling the Publish operation"
Esto se debe a que los permisos de rol de AWS Identity and Access Management (IAM) para tu instancia de Amazon Elastic Compute Cloud (Amazon EC2) y tu política de SNS son incorrectos.
Para resolver este error, consulta How do I use an IAM role to publish an Amazon SNS topic from a cross-account Amazon EC2 instance? (¿Cómo puedo usar un rol de IAM para publicar un tema de Amazon SNS desde una instancia de Amazon EC2 entre cuentas?).
"An error occurred (KMSAccessDenied) when calling the Publish operation"
Este error se produce cuando intentas publicar un tema de SNS desde una instancia de Amazon EC2 entre cuentas de AWS que utiliza el cifrado en el servidor. Este error se produjo porque los permisos de IAM y AWS Key Management Service (AWS KMS) eran incorrectos. Los permisos para el rol de IAM de tu instancia de EC2 y la política de claves de AWS KMS de tu clave de KMS son incorrectos.
Para resolver el error, activa la clave de AWS KMS y actualiza la política de claves de AWS KMS y la política de IAM con los permisos correctos.
Nota: Se recomienda conceder permisos de privilegios mínimos con políticas de IAM.
Sigue estos pasos:
-
Asegúrate de que la clave de AWS KMS esté activada.
-
Confirma que tu rol de IAM de instancia de EC2 puede ejecutar kms:GenerateDataKey* y kms:Decrypt en la política de claves de AWS KMS. Esta es la política de claves de la clave de KMS que se utiliza para el cifrado en el servidor en tu tema de SNS similar al siguiente:
{ "Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
-
Adjunta la siguiente política de roles de IAM a tu instancia de EC2 con los permisos kms:GenerateDataKey* and kms:Decrypt:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "your_KMS_Key_ARN"
}
]
}
Nota: Sustituye your_KMS_Key_ARN por el nombre de recurso de Amazon (ARN) de tu clave de KMS.