Cómo configurar las notificaciones de eventos en S3 Bucket en AWS

La notificación de eventos de AWS S3 nos ayuda a recibir notificaciones cuando se producen determinados eventos en un cubo de S3. Podemos habilitar los eventos disponibles del cubo de Amazon S3 para enviar un mensaje de notificación. Así, cada vez que el evento especificado tiene lugar en el Bucket de S3, el evento se activa y se envían las notificaciones.

En este artículo, veremos cómo recibir notificaciones por correo electrónico cuando se produzcan determinados eventos en nuestro cubo de S3.

La notificación de eventos de AWS S3 admite los siguientes destinos a los que se pueden enviar notificaciones/mensajes.

  1. Tema de Amazon Simple Notification Service (Amazon SNS):
    Los mensajes se envían a los puntos finales suscritos.
  2. Cola de Amazon Simple Queue Service (Amazon SQS):
    Los mensajes se envían a la cola de SQS, donde pueden almacenarse.
  3. AWS Lambda:
    Puede utilizarse para invocar una función Lambda y proporcionar el mensaje de evento como argumento.

Antes de continuar, asumo que estás familiarizado con S3 Bucket y SNS y que tienes un S3 Bucket y un SNS Topic ya creados en tu cuenta. Si no tienes estos recursos, entonces haz clic aquí para aprender a crear un S3 Bucket desde la Consola de AWS y busca «¿Cómo crear un SNS Topic y un Subscriber en AWS?» para crear un SNS Topic con un Email Subscriber en él.

Requisitos previos

  1. Cuenta de AWS(crearla si no la tienes).
  2. Bucket S3.
  3. Tema SNS.

¿Qué vamos a hacer?

  1. Iniciar sesión en AWS.
  2. Configurar las notificaciones de eventos de S3.

Iniciar sesión en AWS

Pulsa aquí para ir a la página de inicio de sesión de AWS.

Cuando pulsemos el enlace anterior, veremos una página web como la siguiente en la que se nos pide que iniciemos sesión con nuestros datos de acceso.

Una vez que hayas accedido con éxito a tu cuenta, verás la siguiente pantalla.

Configura las notificaciones de eventos de S3.

Haz clic en Servicios y busca S3 para ir al Tablero S3.

En el Tablero de S3, haz clic en el bucket de S3 en el que quieras configurar las notificaciones de eventos.

Haz clic en «Propiedades» y verás una pantalla como la siguiente, aquí haz clic en «Eventos»

Ahora puedes crear notificaciones haciendo clic en «Añadir notificaciones».

Dale un nombre a la notificación que vas a crear, selecciona los Eventos que quieres que sean notificados, selecciona el tema del SNS sobre el que quieres enviar las notificaciones y haz clic en «Guardar».

También podemos configurar un filtro de prefijo/sufijo para recibir notificaciones sólo cuando se añadan archivos a una carpeta concreta. Esto se puede conseguir añadiendo un Prefijo/Sufijo. Por ahora, no voy a añadir esto, puedes probarlo si quieres.

Verás un error cuando guardes la notificación. Esto se debe a que el Tema SNS que hemos seleccionado para enviar sus notificaciones no tiene permisos para recibir notificaciones de este cubo. De ahí que nos aparezca este tipo de error. Para resolver este error tenemos que añadir permisos al cubo SNS para que pueda recibir notificaciones de este cubo S3.

Para ir a SNS, busca SNS y haz clic en el resultado.

En el panel principal, haz clic en «Temas» en el panel izquierdo.

Haz clic en el tema de tu SNS.

En «Política de acceso» puedes ver la política actual que tiene el SNS. Tenemos que editar esta política. Haz clic en «Editar».

Sustituye la política del SNS por la siguiente política.

{
  "Version": "2012-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "064827688814"
        }
      }
    },
    {
      "Sid": "AWSEvents_all-events_Id2377506854031",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    },
    {
      "Sid": "AWSEvents_S3_Event",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    }
  ]
}

En la política SNS, hemos añadido sólo la declaración que está en negrita+cursiva. Además, no olvides sustituir los campos que están resaltados en rojo.

Guarda los cambios en el SNS.

Volviendo a los Eventos S3, ahora intenta recrear el mismo evento y guárdalo. Verás que ahora tienes 1 evento creado.

Ve a la página principal de tu S3 Bucket para comprobar si los eventos se notifican o no.

Sube un objeto de muestra a tu S3 Bucket, esto será una acción «PUT» en el S3 Bucket. Esto activará nuestra notificación de eventos y nos enviará una notificación.

Así que cuando subí el objeto, se disparó la notificación de eventos que habíamos creado y SNS me envió una notificación en la suscripción de correo electrónico que tenía en ella.

Conclusión

En este artículo hemos aprendido a crear una Notificación de Eventos en S3 y a disparar SNS cuando se produzcan eventos específicos como PUT/COPY/POST en S3 Bucket.

Scroll al inicio