访问S3存储桶时出现AWS Lambda错误

时间:2018-01-10 02:40:35

标签: node.js amazon-web-services amazon-s3 lambda

我有一个由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的范围是:

  1. 从私有S3存储桶中读取CSV文件
  2. 将CSV文件的内容加载到VPC中的数据库中
  3. 为了让lambda访问数据库,我在与数据库相同的VPC上配置了lambda。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题是Lambda在VPC中是为了连接到数据库,但由于这个原因而无法访问S3存储桶。为了解决这个问题,我为S3 Bucket创建了一个端点,并将其添加到我的私有路由表中。