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)
您需要正确执行一些步骤。
步骤1:首先创建lambda函数,选择,runtime然后blank function从列表中选择或任何蓝图。
步骤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)
希望这可以帮助!!!
| 归档时间: |
|
| 查看次数: |
8682 次 |
| 最近记录: |