文件上传到s3存储桶后如何触发我的Lambda函数

Sha*_*ran 3 lambda amazon-s3 node.js

我已将一个zip文件上传到S3存储桶.zip文件上传后,我需要立即触发下面的lambda
函数。请帮助我如何进行

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);
       }
 });
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*aya 6

您需要正确执行一些步骤。

步骤1:首先创建lambda函数,选择,runtime然后blank function从列表中选择或任何蓝图。

步骤2:选择空白方块,然后从服务列表中选择S3。 在此处输入图片说明

步骤3:选择要从中触发的存储桶,然后选择事件类型。在你的情况下应该是Object Created (All)

第4步:输入前缀,以防S3内有任何文件夹并且只想触发上传到该文件夹​​。

步骤5:输入后缀,以仅针对特定后缀'.jpg'触发

第6步:勾选启用触发器复选框,然后选择下一步。

步骤7:现在给功能命名和描述。如果要上传代码或在其中自己输入编辑器,请更改代码输入类型。

步骤8:在Handler函数中,选择index.handler这是函数名称,一旦文件上传,它将调用该函数。索引是文件名,处理程序是函数名。

步骤9:选择create a custom role,然后将其定向到一个新页面,所有字段保持不变,不做任何更改,然后选择Allow

步骤10:现在回到旧选项卡,选择角色-> choose from existing role并选择新创建的role name

步骤11:选择Next(下一步),复查所有选定的选项,然后单击Create Function

成功创建函数后,转到触发器选项卡,您可以看到已配置用于触发的S3存储桶。

现在开始在代码编辑器中编写代码,或将其从本地上传到代码选项卡中的lambda函数。

下面是读取文件的简单S3代码。

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
         }
     });       
};
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!!!