Creé con éxito una función lambda que cambia el tamaño de una imagen y la almacena en un depósito en s3 (nombre del depósito: cropped ). Además, esta función lambda se invoca cuando se carga un archivo en otro depósito (nombre del depósito: source ).
Cuando cargo una imagen a través de la consola de AWS en el depósito de source , se activa la función AWS lambda y la imagen recortada se crea en el depósito cropped .
Pero cuando intento con la carga programática de archivos (carga de archivos del navegador s3), la función lambda no se activa (la imagen recortada no se crea en el depósito cropped ), sin embargo, la imagen se carga correctamente en el depósito de source .
Carga de archivos del navegador
<form id="upload" action="//s3-us-west-2.amazonaws.com/lambdacushbu" method="POST" enctype="multipart/form-data"> <input type="hidden" name="Content-Type" value="multipart/form-data" /> <input type="hidden" name="acl" value="private" /> <input type="hidden" name="success_action_status" value="201" /> <input type="hidden" name="policy" value="" /> <input type="hidden" name="X-amz-credential" value="AKIAJRVEARQ/20170324/us-west-2/s3/aws4_request" /> <input type="hidden" name="X-amz-algorithm" value="AWS4-HMAC-SHA256" /> <input type="hidden" name="X-amz-date" value="20170324T054410Z" /> <input type="hidden" name="X-amz-signature" value="854ea7ec0c456c03509d22a6de39b045e54b71a779af8d88175717d8b54ccebc" /> <input type="hidden" name="key" value="${filename}" /> <input type="file" name="file" id="image"> <br> <input type="submit" value="upload" name="upload"> <span id="status-text"></span> <img src="" id="cropped-image"> </form>ACTUALIZAR
Lo intenté con el método normal de carga de archivos, es decir, el usuario carga el archivo en mi servidor y luego lo coloca en el depósito de aws s3. Ahora funciona
Así que creo que hay un problema con la carga directa del navegador
Finalmente, resolví el problema de las cargas directas del navegador, los eventos son POST
para habilitar
1. Vaya a la consola s3 y seleccione el depósito.
2. Vaya a propiedades, seleccione Eventos y agregue un nuevo evento con POST
Cree el evento con publicación y elija la función lambda que desea invocar y guardar.