Quiero solucionar los problemas relacionados con las notificaciones de eventos de Amazon Simple Storage Service (Amazon S3) que no invocan mi función de AWS Lambda.
Resolución
Para solucionar problemas relacionados con las notificaciones de eventos de Amazon S3 para las funciones de Lambda, sigue estos pasos para verificar tus permisos y ajustes de configuración:
- Abre la consola de Amazon S3 y, a continuación, navega hasta tu bucket.
- Selecciona la pestaña Propiedades.
- En Notificaciones de eventos, selecciona tu notificación de evento y, a continuación, elige Editar.
- En Configuración general, revisa las opciones de prefijo y sufijo.
- (Opcional) Si utilizas un prefijo o un sufijo, confirma lo siguiente:
La clave de objeto de tu bucket coincide con las pautas de nomenclatura de las claves de objeto.
Todos los caracteres especiales están en formato URL codificado (codificado en porcentajes).
- En Destino, confirma que el ARN de la función de Lambda coincide con una función válida.
- Selecciona Guardar cambios.
- Abre la consola de Lambda y, a continuación, selecciona Funciones.
- En Nombre de la función, selecciona la función de Lambda.
- Selecciona la pestaña Configuración y, a continuación, Permisos.
- En las instrucciones de políticas basadas en recursos, elige tu política y, a continuación, elige Ver política.
- Asegúrate de que la política basada en recursos permita a Amazon S3 invocar la función de Lambda:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "ACCOUNT_ID"
},
"ArnLike": {
"AWS:SourceArn": "arn:aws:s3:::BUCKET_NAME"
}
}
}
]
}
Nota: Sustituye REGION, ACCOUNT_ID, FUNCTION_NAME y BUCKET_NAME por tu región de AWS, cuenta de AWS, nombre de función y nombre de bucket. The AWS:SourceAccount es la cuenta propietaria del bucket y ArnLike es el ARN del bucket.
En la anterior política basada en recursos, la entidad principal s3.amazonaws.com tiene permiso para realizar la acción de la API lambda:InvokeFunction en el ARN del recurso.
Importante: Amazon S3 suele entregar las notificaciones de eventos en segundos, pero a veces pueden tardar 1 minuto o más. Para obtener más información, consulta Notificaciones de eventos de Amazon S3.
Información relacionada
¿Cómo permito que mi función de Lambda acceda a mi bucket de Amazon S3?
¿Por qué aparecen errores de acceso denegado cuando utilizo una función de Lambda para cargar archivos en un bucket de Amazon S3 en otra cuenta de AWS?