¿Por qué las notificaciones de eventos de Amazon S3 no se envían a una cola de Amazon SQS que utiliza el cifrado del servidor?

6 minutos de lectura
0

Las notificaciones de eventos de Amazon Simple Storage Service (Amazon S3) no se entregan a mi cola de Amazon Simple Queue Service (Amazon SQS) de cifrado del servidor (SSE).

Solución

Siga estos pasos para configurar y enviar notificaciones de eventos de S3 a una cola de Amazon SQS que utiliza el cifrado del servidor (SSE).

Creación de una clave de AWS KMS administrada por el cliente y configuración de la política de claves

Debe cifrar las colas de Amazon SQS con una clave de AWS Key Management Service (AWS KMS) administrada por el cliente. A continuación, conceda los permisos de entidades principales del servicio Amazon S3 para trabajar con colas cifradas.

Nota: No puede modificar la clave de KMS administrada por AWS predeterminada. En su lugar, debe utilizar una clave administrada por el cliente para este proceso. También debe agregar permisos a la clave de AWS KMS para permitir el acceso a una entidad principal de servicio específica.

Para conceder los permisos de entidades principales del servicio Amazon S3, añada esta instrucción a la política de claves administradas por el cliente:

{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

Nota: Sustituya arn:aws:iam::«111122223333»:root por su ARN.

Creación de una cola de SQS y concesión de permisos a Amazon S3

  1. Cree una cola de Amazon SQS que esté configurada para usar SSE. Para obtener más información, consulte Configuring server-side encryption (SSE) for a queue (console).
  2. Para permitir que Amazon S3 envíe mensajes a la cola, añada esta instrucción de permisos a la cola de SQS:
{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:111122223333:sqs-s3-kms-same-account",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
        }
      }
    }
  ]
}

Nota: Sustituya el valor de Recurso por el ARN de la cola de SQS, aws:SourceAccount por el ID de su cuenta de origen de AWS y aws:SourceArn por el ARN de su bucket de Amazon S3.

En el ejemplo anterior, el bucket de S3 hellobucket para la cuenta de cliente 123456789 puede enviar notificaciones de eventos de ObjectCreated a la cola de SQS especificada. Para obtener más información sobre los permisos necesarios para trabajar con colas de SQS cifradas, consulte Key management.

Creación de un evento de S3

Para añadir un evento de Amazon S3 a su bucket, siga estos pasos:

  1. Abra la consola de S3 y, a continuación, elija el Nombre con hipervínculo para su bucket de S3.
  2. En la pestaña Propiedades, seleccione Crear notificación de eventos.
  3. En la página Crear notificación de eventos, introduzca esta información:
    En Nombre del evento, introduzca un nombre.
    En Tipos de eventos, seleccione los tipos de eventos para los que desee recibir notificaciones.
    En Destino, elija Cola de SQS.
    En Cola de SQS, elija su cola.
  4. Seleccione Guardar cambios.

Confirmación de si el tipo de evento de Amazon S3 se ha configurado correctamente

Cuando configure una notificación de eventos de Amazon S3, debe especificar los tipos de eventos compatibles para que Amazon S3 envíe la notificación. Si se produce un tipo de evento no especificado en el bucket de Amazon S3, Amazon S3 no enviará la notificación.

Confirmación de si los filtros de nombre de clave de objeto tienen formato URL codificado

Si sus notificaciones de eventos se han configurado de modo que utilicen el filtrado de nombre de clave de objeto, solo se publicarán para objetos con prefijos o sufijos concretos.

Si usa caracteres especiales en sus prefijos o sufijos, deberá introducirlos en formato URL codificado. Para obtener más información, consulte Configuración de notificaciones de eventos mediante el filtrado de nombres de clave de objeto.

Nota: No puede usar un carácter comodín («*») como prefijo o sufijo para representar cualquier carácter en los filtros.

Comprobación de si existen todos los destinos de eventos

El error «Unable to validate the following destination configurations» se produce cuando no existe un destino para el bucket de notificación de eventos de Amazon S3.

Si ha configurado una notificación de eventos para enviar eventos a un destino que ya no existe, deberá eliminar dichos eventos. Asegúrese de eliminar los eventos antes de actualizar la configuración de notificación de eventos.

Nota: Se recomienda eliminar todos los eventos con destinos inexistentes mediante la API PutBucketNotificationConfiguration.

Comprobación de las regiones del bucket de S3 y de la cola de SQS

No puede enviar notificaciones desde un bucket de S3 de una región de AWS a una cola de Amazon SQS de otra región. En su lugar, defina un tema de Amazon Simple Notification Service (Amazon SNS) como destino del bucket de S3 con una cola de Amazon SQS en otra región. Amazon SNS admite la entrega de notificaciones entre regiones a las colas de Amazon SQS y a las funciones de AWS Lambda.

Para obtener más información, consulte Sending Amazon SNS messages to an Amazon SQS queue or Lambda function in a different Region.

Confirmación de si los mensajes se han enviado a la cola de Amazon SQS

Utilice la métrica NumberOfMessagesSent de Amazon CloudWatch para comprobar si los mensajes se han enviado a la cola de Amazon SQS.

Para obtener más información, consulte Why is my Amazon SQS queue not receiving messages?

Solución de problemas con AWS Support

Si el problema no se soluciona con los pasos anteriores, póngase en contacto con AWS Support. Incluya los valores RequestId y timestamp con timezone de las llamadas fallidas a la API.

Información relacionada

¿Cómo puedo hacer que mi suscripción a Amazon SQS reciba correctamente notificaciones de mi tema de Amazon SNS?

Notificaciones de eventos de Amazon S3

Explicación: configuración de un bucket para notificaciones (tema de SNS o cola de SQS)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses