我有一个由S3存储桶中的put事件触发的Lambda函数。将文件添加到存储桶时,lambda会被正确触发,但它会执行s3.getObject(params, (err, data) => {})
没有任何反应。
Lambda函数的角色附加了S3FullAccess策略。
我已经在本地测试了lambda(使用sam)并且一切正常,但是当部署lambda时没有任何事情发生,也不知道如何调试它。
const aws = require('aws-sdk');
const s3 = new aws.S3();
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
s3.getObject({Bucket: bucket, Key: key}, function(err, data) {
if (err) {
console.error(err);
}
console.log(data);
});
我的lambda的范围是:
为了让lambda访问数据库,我在与数据库相同的VPC上配置了lambda。
有什么想法吗?
答案 0 :(得分:1)
问题是Lambda在VPC中是为了连接到数据库,但由于这个原因而无法访问S3存储桶。为了解决这个问题,我为S3 Bucket创建了一个端点,并将其添加到我的私有路由表中。