He intentado crear una notificación de evento de bucket de Amazon Simple Storage Service (Amazon S3) para activar mi función de AWS Lambda y he recibido un error.
Breve descripción
El error «La configuración está definida de forma ambigua» se produce cuando la información del evento de una notificación y su prefijo o sufijo se superponen con la configuración de notificaciones de un bucket de S3.
Para solucionar este problema, tome una de estas medidas:
- Elimine el evento superpuesto y cree uno nuevo.
- Cree una notificación de eventos de S3 para varios eventos superpuestos con prefijos o sufijos superpuestos.
- Rediseñe su arquitectura.
**Nota:**Las configuraciones de notificación de eventos de Amazon S3 permiten la superposición de eventos con prefijos o sufijos que no se superpongan. Las configuraciones también permiten eventos que no se superpongan con prefijos o sufijos superpuestos.
Para obtener más información y ejemplos, consulte Configurar las notificaciones de eventos mediante el filtrado de nombres de clave de objeto.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Eliminación del evento superpuesto y creación de uno nuevo
Para eliminar las notificaciones de eventos superpuestos, utilice la consola de Amazon S3 o la AWS CLI.
Nota: Cuando elimina un desencadenador de función de Lambda, la notificación de evento de S3 asociada no se elimina automáticamente. También debe eliminar la notificación en Amazon S3 antes de crear un nuevo desencadenador sin restricciones de sufijo.
Consola de Amazon S3
Siga estos pasos:
- Abra la consola de Amazon S3 y, a continuación, seleccione su bucket de S3.
- Seleccione la pestaña Propiedades.
- En Notificaciones de eventos, elija la notificación de evento que se superponga con la nueva que ha intentado crear.
- Seleccione Eliminar.
- Seleccione Crear notificación de evento.
- En la lista desplegable de funciones de Lambda, seleccione su función y, a continuación, elija Guardar cambios.
AWS CLI
Use la AWS CLI para actualizar el archivo JSON de configuración de notificaciones en su bucket de S3. Para obtener una lista de todas las notificaciones de eventos en su bucket de S3, ejecute el comando get-bucket-notification-configuration de la AWS CLI. Para eliminar todas las notificaciones de eventos de S3, ejecute el comando put-bucket-notification-configuration de la AWS CLI:
aws s3api put-bucket-notification-configuration --bucket=your-bucket-name --notification-configuration="{}"
Nota: Sustituya your-bucket-name por el nombre de su bucket.
Tras eliminar la notificación de eventos superpuestos, puede ejecutar el comando put-bucket-notification-configuration de la AWS CLI para agregar nuevas notificaciones.
Creación de una notificación de eventos de S3 para varios eventos superpuestos con prefijos o sufijos superpuestos
Siga estos pasos:
- Abra la consola de Amazon S3 y, a continuación, seleccione su bucket de S3.
- Seleccione la pestaña Propiedades.
- En Notificaciones de eventos, elija Crear notificación de eventos.
- En Nombre del evento, introduzca un nombre para el evento, por ejemplo, your-event-name.
- En Prefijo, introduzca un prefijo, por ejemplo, images/.
- En Sufijo, introduzca un sufijo, por ejemplo, .jpg.
- En Tipos de eventos, elija Todos los objetos crean eventos.
- En la lista desplegable de funciones de Lambda, elija su función de Lambda.
- Seleccione Guardar cambios.
Rediseño de la arquitectura
Si no puede volver a configurar la notificación de eventos de S3 para evitar la superposición, rediseñe la arquitectura para solucionarlo.
Por ejemplo, configure una notificación de evento para activar una función de Lambda que active otras funciones de Lambda en función del evento de S3. O bien, configure una notificación de eventos para publicar eventos en un tema de Amazon Simple Notification Service (Amazon SNS) o en una cola de Amazon Simple Queue Service (Amazon SQS).
Nota: Asegúrese de que el tema o la cola envíen eventos a varias funciones de Lambda suscritas. Diseñe las funciones suscritas con lógica para decidir si procesar los eventos que reciben. Para más información, consulte Notificaciones de eventos de Fanout S3 a varios puntos de enlace.
También puede activar el registro a nivel de objeto de las acciones de Amazon S3 en AWS CloudTrail. A continuación, utilice una regla de Amazon EventBridge para activar la función de Lambda en función del patrón de eventos de Amazon S3. Para más información, consulte Tutorial: registro de las operaciones a nivel de objetos de Amazon S3 mediante EventBridge.
Para arquitecturas y procesos más complejos, use una máquina de estados de AWS Step Functions para diseñar y administrar el flujo de trabajo. Para más información, consulte los casos de uso de AWS Step Functions y los Tutoriales para aprender a usar Step Functions.
Información relacionada
¿Por qué aparece el error «No se pueden validar las siguientes configuraciones de destino» al crear una notificación de eventos de Amazon S3?
¿Cómo soluciono los problemas cuando mis notificaciones de eventos de Amazon S3 no invocan mi función de Lambda?
Proceso de las notificaciones de eventos de Amazon S3 con Lambda
Tutorial: Uso de un desencadenador de Amazon S3 para invocar una función de Lambda