Uso de AWS Lambda con Amazon S3 - AWS Lambda

Uso de AWS Lambda con Amazon S3

Puede utilizar Lambda para procesar notificaciones de eventos desde Amazon Simple Storage Service. Amazon S3 puede enviar un evento a una función Lambda cuando se crea o elimina un objeto. Puede configurar las opciones de notificación en un bucket y conceder a Amazon S3 permiso para invocar una función en la política de permisos basada en recursos de la función.

aviso

Si la función Lambda utiliza el mismo bucket que el que la desencadena, podría ocurrir que la ejecución de la función entrara en un bucle. Por ejemplo, si el bucket activa una función cada vez que se carga un objeto y la función carga un objeto en el bucket, la función se activa indirectamente a sí misma. Para evitarlo, utilice dos buckets o configure el desencadenador para que solo se aplique a un prefijo que se utiliza para los objetos entrantes.

Amazon S3 invoca la función de forma asíncrona con un evento que contiene detalles sobre el objeto. En el siguiente ejemplo se muestra un evento que envió Amazon S3 cuando se cargó un paquete de implementación en Amazon S3.

ejemplo Evento de notificaciones de Amazon S3

{ "Records": [ { "eventVersion": "2.1", "eventSource": "aws:s3", "awsRegion": "us-east-2", "eventTime": "2019-09-03T19:37:27.192Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "AWS:AIDAINPONIXQXHT3IKHL2" }, "requestParameters": { "sourceIPAddress": "205.255.255.255" }, "responseElements": { "x-amz-request-id": "D82B88E5F771F645", "x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo=" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1", "bucket": { "name": "lambda-artifacts-deafc19498e3f2df", "ownerIdentity": { "principalId": "A3I5XTEXAMAI3E" }, "arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df" }, "object": { "key": "b21b84d653bb07b05b1e6b33684dc11b", "size": 1305107, "eTag": "b21b84d653bb07b05b1e6b33684dc11b", "sequencer": "0C0F6F405D6ED209E1" } } } ] }

Para invocar la función, Amazon S3 necesita permiso de la política basada en recursos de la función. Al configurar un desencadenador de Amazon S3 en la consola de Lambda, esta modifica la política basada en recursos para permitir a Amazon S3 invocar la función si el nombre del bucket y el ID de cuenta coinciden. Si configura la notificación en Amazon S3, utilice la API de Lambda para actualizar la política. También puede utilizar la API de Lambda para conceder permisos a otra cuenta o restringir el permiso a un alias designado.

Si la función utiliza el SDK de AWS para administrar los recursos de Amazon S3, también necesita permisos de Amazon S3 en su rol de ejecución.