您需要正确遵循一些步骤才能这样做。
第 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 步:选择下一步,查看所有已选择的选项并单击 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
}
});
};
希望对你有帮助!!!