Salta al contenuto

Come posso risolvere l'errore "publish operation" in Amazon SNS?

2 minuti di lettura
0

Ho provato a pubblicare un topic in Amazon Simple Notification Service (Amazon SNS) e ho ricevuto un errore "publish operation".

Risoluzione

Completa la procedura di risoluzione dei problemi in base al tipo di errore "publish operation" di Amazon SNS che hai ricevuto.

"An error occurred (AuthorizationError) when calling the Publish operation"

L'errore è causato da autorizzazioni errate per i ruoli AWS Identity and Access Management (AWS IAM) dell'istanza Amazon Elastic Compute Cloud (Amazon EC2) e della policy SNS.

Per risolverlo, consulta How do I publish to an Amazon SNS topic from a cross-account Amazon EC2 instance using an IAM EC2 role? (Come posso utilizzare un ruolo IAM per pubblicare un topic Amazon SNS da un'istanza Amazon EC2 multi-account?)

"An error occurred (KMSAccessDenied) when calling the Publish operation"

L'errore si verifica quando tenti di pubblicare un topic SNS da un'istanza Amazon EC2 multi-account AWS che utilizza la crittografia lato server. In questo caso, è stato provocato da autorizzazioni IAM e del Servizio AWS di gestione delle chiavi (AWS KMS) errate. Le autorizzazioni per il ruolo IAM dell'istanza EC2 e della policy della tua chiave AWS KMS non sono corrette.

Per risolverlo, attiva la chiave AWS KMS e aggiorna la policy della chiave AWS KMS e la policy IAM con le autorizzazioni corrette.

Nota: è consigliabile concedere autorizzazioni con privilegi minimi tramite le policy IAM.

Completa i seguenti passaggi:

  1. Assicurati che la chiave AWS KMS sia attivata.

  2. Verifica che il ruolo IAM dell'istanza EC2 sia autorizzato a eseguire kms:GenerateDataKey* e kms:Decrypt nella policy della chiave AWS KMS. La policy della chiave KMS utilizzata per la crittografia lato server nel topic SNS è simile alla seguente:

    {  "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
      ],
      "Resource": "*"
    }
    
  3. Collega la seguente policy del ruolo IAM all'istanza EC2 con le autorizzazioni kms:GenerateDataKey* e kms:Decrypt:

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

    Nota: sostituisci your_KMS_Key_ARN con il nome della risorsa Amazon (ARN) della tua chiave KMS.