我已将zip文件上传到S3存储桶。我需要触发我的下方 拉姆达
一旦zip文件上传就立即运行。请帮我怎么做 继续
(plus[f.legs.idxOf[leg], 1] = f.legs.idxOf[leg']) =>
(leg -> leg') in NextLegTable.nextLeg
答案 0 :(得分:5)
您需要正确遵循一些步骤才能执行此操作。
步骤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:选择下一步,查看所有选定的选项,然后点击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
}
});
};
希望这有帮助!!!
答案 1 :(得分:2)
我看到的最佳选择是准备好自动运行lambda函数 每次将文件放入存储桶S3中。调用lambda函数时,带有来自创建文件的信息的事件将被发送到lambda函数。
以下是如何触发的示例:
下:
这是一个示例代码lambda nodejs来执行此操作:
exports.handler = (event, context, callback) => {
var lastCreatedFile = event.Records[0].s3.object.key;
console.log(lastCreatedFile);
};
我希望它对你有所帮助!
答案 2 :(得分:0)