Configuración de notificaciones de eventos mediante el filtrado de nombres de clave de objeto - Amazon Simple Storage Service

Configuración de notificaciones de eventos mediante el filtrado de nombres de clave de objeto

Al configurar una notificación de evento de Amazon S3, debe especificar qué tipos de eventos de Amazon S3 admitidos hacen que Amazon S3 envíe la notificación. Si se produce un tipo de evento que no ha especificado en el bucket de S3, Amazon S3 no envía la notificación.

Puede configurar las notificaciones para que se filtren por el prefijo y el sufijo del nombre de clave de objetos. Por ejemplo, puede establecer una configuración para recibir una notificación solo cuando se agregan archivos de imagen con una extensión de nombre de archivo “.jpg” a un bucket. O bien, puede establecer una configuración que envíe una notificación a un tema de Amazon SNS cuando se agregue un objeto con el prefijo “images/” al bucket y, al mismo tiempo, enviar notificaciones por objetos con un prefijo “logs/” en el mismo bucket a una función de AWS Lambda.

Puede establecer configuraciones de notificaciones que utilicen el filtrado de nombre de clave de objeto en la consola de Amazon S3. Para ello, puede utilizar las API de Amazon S3 a través de los SDK de AWS o las API REST directamente. Para obtener información sobre el uso de la interfaz de usuario de la consola para establecer una configuración de notificación en un bucket, consulte Habilitación y configuración de notificaciones de eventos mediante la consola de Amazon S3 Activación de Amazon EventBridge.

Amazon S3 guarda la configuración de notificación como XML en el subrecurso notificación asociado a un bucket según lo descrito en Uso de Amazon SQS, Amazon SNS y Lambda. Puede utilizar la estructura XML Filter para definir las reglas para filtrar las notificaciones según el prefijo o sufijo de un nombre de clave de objeto. Para obtener información acerca de la estructura XML de Filter, consulte Notificación de bucket PUT en la Referencia de la API de Amazon Simple Storage Service.

Si una notificación de evento de Amazon S3 está configurada para utilizar el filtrado de nombres de clave de objeto, las notificaciones solo se publican para los objetos con un determinado prefijo o sufijo de nombre de clave. Un carácter comodín (“*”) no se puede usar en filtros como prefijo o sufijo para representar cualquier carácter. Si utiliza caracteres especiales en el valor del prefijo o sufijo, debe escribirlos en formato codificado en URL (codificado en porcentaje). Para obtener más información, consulte Directrices de nomenclatura de claves de objeto .

Las configuraciones de notificaciones que utilizan Filter no pueden definir las reglas de filtrado con prefijos superpuestos, sufijos superpuestos o superposición de prefijo y sufijo. En las siguientes secciones se presentan ejemplos de configuraciones de notificación válidas con filtrado de nombres de clave de objeto. También contienen ejemplos de configuraciones de notificación que no son válidas debido a la superposición de prefijo y sufijo.

Ejemplos de configuraciones de notificaciones válidas con filtrado de nombre de clave de objeto

La siguiente configuración de notificación incluye una configuración de cola que identifica una cola de Amazon SQS donde Amazon S3 puede publicar eventos del tipo s3:ObjectCreated:Put. Los eventos se publican siempre que se envíe una solicitud PUT para un objeto con un prefijo de images/ y un sufijo jpg a un bucket.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

La siguiente configuración de notificación tiene varios prefijos no superpuestos. La configuración define que las notificaciones para solicitudes PUT en la carpeta images/ van a la cola A, mientas que las notificaciones para solicitudes PUT en la carpeta logs/ van a la cola B.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> <QueueConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>logs/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

La siguiente configuración de notificación tiene varios sufijos no superpuestos. Mediante la configuración, se define que todas las imágenes .jpg recientemente agregadas al bucket se procesan mediante la función de nube A de Lambda y todas las imágenes .png recientemente agregadas se procesan mediante la función de nube B. Los sufijos .png y .jpg no se superponen a pesar de terminar con la misma letra. Si una determinada cadena puede finalizar con ambos sufijos, los dos sufijos se consideran superpuestos. Una cadena no puede finalizar con .png y .jpg, por lo que los sufijos en la configuración de ejemplo no son sufijos superpuestos.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

Las configuraciones de notificación que utilizan Filter no pueden definir reglas de filtrado con prefijos superpuestos para los mismos tipos de eventos. Solo pueden hacerlo si los prefijos superpuestos que se utilizan con sufijos que no se superponen. La siguiente configuración de ejemplo muestra cómo los objetos creados con un prefijo común pero sufijos no superpuestos se pueden enviar a diferentes destinos.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

Ejemplos de configuraciones de notificación con superposición de prefijo o sufijo no válido

En su mayoría, las configuraciones de notificación que utilizan Filter no pueden definir reglas de filtrado con prefijos superpuestos, sufijos superpuestos ni combinaciones de prefijos y sufijos superpuestos para los mismos tipos de eventos. Puede tener prefijos superpuestos siempre que los sufijos no se superpongan. Para ver un ejemplo, consulte Configuración de notificaciones de eventos mediante el filtrado de nombres de clave de objeto.

Puede utilizar filtros de nombre de clave de objeto superpuestos con diferentes tipos de eventos. Por ejemplo, puede crear una configuración de notificación que utilice el prefijo image/ para el tipo de evento ObjectCreated:Put y el prefijo image/ para el tipo de evento ObjectRemoved:*.

Se recibe un mensaje de error si se intenta guardar una configuración de notificación que tiene filtros de nombre superpuestos no válidos para los mismos tipos de eventos, o cuando se utiliza la consola o la API de Amazon S3. En esta sección, se muestran ejemplos de configuraciones de notificación que no son válidas debido a los filtros de nombre superpuestos.

Se asume que cualquier regla de configuración de notificación existente tiene un prefijo y un sufijo predeterminados que coinciden con cualquier otro prefijo y sufijo respectivamente. La siguiente configuración de notificación no es válida porque incluye prefijos superpuestos. En concreto, el prefijo raíz se superpone con cualquier otro prefijo. Lo mismo sucede si utiliza un sufijo en lugar de un prefijo en este ejemplo. El sufijo raíz se superpone con cualquier otro sufijo.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic> <Event>s3:ObjectCreated:*</Event> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>

La siguiente configuración de notificación no es válida porque incluye sufijos superpuestos. Si una determinada cadena puede finalizar con ambos sufijos, los dos sufijos se consideran superpuestos. Una cadena puede finalizar con jpg y pg. Por lo tanto, los sufijos se superponen. Lo mismo se aplica a los prefijos. Si una cadena dada puede comenzar con ambos prefijos, los dos prefijos se consideran superpuestos.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>pg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration

La siguiente configuración de notificación no es válida porque incluye prefijos y sufijos superpuestos.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>