Tentei publicar um tópico do Amazon Simple Notification Service (Amazon SNS) e recebi um erro "publish operation".
Resolução
Conclua as etapas de solução de problemas para o tipo de erro "publish operation" do Amazon SNS que você recebeu.
"An error occurred (AuthorizationError) when calling the Publish operation"
Isso ocorreu devido a permissões incorretas de perfil do AWS Identity and Access Management (AWS IAM) em sua instância e política de SNS do Amazon Elastic Compute Cloud (Amazon EC2).
Para resolver esse erro, consulte How do I use an IAM role to publish an Amazon SNS topic from a cross-account Amazon EC2 instance? (Como faço para publicar em um tópico do Amazon SNS a partir de uma instância entre contas do Amazon EC2 usando um perfil do IAM?)
"An error occurred (KMSAccessDenied) when calling the Publish operation"
Esse erro ocorre quando você tenta publicar um tópico do SNS a partir de uma instância entre contas do Amazon EC2 da AWS que usa criptografia do lado do servidor. Esse erro ocorreu devido a permissões incorretas do IAM e do AWS Key Management Service (AWS KMS). As permissões para o perfil do IAM da sua instância do EC2 e a política de chave do AWS KMS da sua chave KMS estão incorretas.
Para resolver o erro, ative sua chave do AWS KMS e atualize sua política de chave do AWS KMS e a política do IAM para as permissões corretas.
Observação: é uma prática recomendada conceder permissões de privilégio mínimo com políticas do IAM.
Conclua as etapas a seguir:
-
Certifique-se de que sua chave do AWS KMS esteja ativada.
-
Confirme se seu perfil do IAM da instância do EC2 tem permissão para executar kms:GenerateDataKey* e kms:Decrypt na política de chave do AWS KMS. Essa é a política de chave da chave do KMS usada na criptografia do lado do servidor em seu tópico do SNS semelhante à seguinte:
{ "Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
-
Anexe a seguinte política de perfil do IAM à sua instância do EC2 com as permissões kms:GenerateDataKey* e kms:Decrypt:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "your_KMS_Key_ARN"
}
]
}
Observação: substitua your_KMS_Key_ARN pelo nome do recurso da Amazon (ARN) da sua chave do KMS.