He subido un archivo zip al depósito S3. Necesito activar mi lambda a continuación
funcione inmediatamente una vez que se haya cargado el archivo zip. Por favor, ayúdenme a proceder
exports.handler = function (event, context) { MyLambdaFuntion(); } MyLambdaFuntion() { var bucketName = "TestBucket1"; var fileKey = "test.js"; s3.getObject(params, function (err, data) { if (err) console.log(err, err.stack); else { console.log(data); } }); }Hay algunos pasos que debe seguir correctamente para hacerlo.
paso 1: Primero cree su función lambda, seleccione el tiempo de runtime y seleccione la blank function o cualquier proyecto original de la lista.
paso 2: seleccione el cuadro en blanco y elija S3 de la lista de servicios. 
Paso 3: Seleccione el depósito desde el que desea activar y elija el tipo de evento. En su caso, debería ser Object Created (All)
Paso 4: Ingrese el prefijo, en caso de que tenga alguna carpeta dentro del S3 y desee activar solo la carga en esa carpeta.
paso 5: Ingrese el sufijo, para activar solo el sufijo específico '.jpg'
Paso 6: marque la casilla de verificación Habilitar disparador y elija Siguiente.
paso 7: Ahora asigne a la función un nombre y una descripción. Si desea cargar el código o escribirlo en el editor, cambie el tipo de entrada del código.
Paso 8: en la función del controlador, elija index.handler este es el nombre de la función que llamará una vez que se cargue el archivo. El índice es el nombre del archivo y el controlador es el nombre de la función.
paso 9: elija create a custom role y se dirige a una nueva página allí, deje todos los campos como están, no cambie nada y elija Allow .
paso 10: ahora regrese a la pestaña anterior, seleccione el rol -> choose from existing role y seleccione el role name recién creado
paso 11: seleccione Siguiente, revise todas las opciones seleccionadas y haga clic en Create Function .
Una vez creada la función con éxito, vaya a la pestaña de activación y podrá ver el depósito S3 configurado para la activación.
Ahora comience a escribir el código en el editor de código o cárguelo desde local a la función lambda en la pestaña de código.
El código S3 simple para leer un archivo se encuentra a continuación.
var aws = require('aws-sdk'),; var s3 = new aws.S3({ apiVersion: '2006-03-01', accessKeyId: process.env.ACCESS_KEY, secretAccessKey: process.env.SECRET_KEY, region: process.env.LAMBDA_REGION }); exports.handler = function(event, context, exit){ //console.log('Received event:', JSON.stringify(event, null, 2)); // Get the object from the event and show its content type const bucket = event.Records[0].s3.bucket.name; const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); const params = { Bucket: bucket, Key: key, }; s3.getObject(params, function(err, data){ if (err) { console.log('ERROR ' + err); exit(err); } else { // the data has the content of the uploaded file } }); };¡¡¡Espero que esto ayude!!!
La mejor opción que veo es tener una función lambda lista para ejecutarse automáticamente cada vez que se coloca un archivo en el depósito S3. Cuando se llama a la función lambda, se enviará un evento con información del archivo creado a la función lambda.
Aquí hay un ejemplo de cómo activar:
Siguiente:
Aquí hay un código de ejemplo lambda nodejs para hacer esto:
exports.handler = (event, context, callback) => { var lastCreatedFile = event.Records[0].s3.object.key; console.log(lastCreatedFile); };
¡Espero que te haya ayudado!
Puede utilizar la notificación de eventos de S3.
Luego use el evento PUT del depósito para activar una función lambda.