Lambda超时与S3通信

Zeu*_*eus 11 amazon-s3 node.js aws-lambda

我试图简单地使用Lambda列出S3存储桶中的所有文件

代码如下:

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = (event, context, callback) => {

   s3.listObjectsV2({
       Bucket: "bucketname",
   }, function(err, data) {
       console.log("DONE : " + err + " : " + data); 

       callback(null, 'Hello from Lambda');
    });
};
Run Code Online (Sandbox Code Playgroud)

使用上面的内容,我从来没有打印过"DONE".除了超时之外,日志不会显示任何信息.

我可以在这里做任何故障排除吗?我原以为至少错误会在"完成"一节中显示出来.

Zeu*_*eus 12

感谢迈克尔以上.问题是它在VPC内部运行.如果我将其更改为No VPC,它可以正常工作.如果您需要在VPC中运行,则您的解决方案可能会有所不同.


Exp*_*ple 8

就我而言,我选择了 2 个不同的子网,1 个是私有子网,另一个是公共子网。所以它有时有效,有时无效。我将两个子网都更改为私有子网(路由中有 NAT 网关),现在它可以正常工作,没有超时错误。


Dea*_*maj 7

如果您在 VPC 内运行代码,请确保创建 VPC 端点。
这是教程:https : //aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/


pal*_*i.p 6

如果您在 VPC 内运行代码,请确保 VPC 子网及其路由表条目应该正确(路由:Dest= 0.0.0.0/0 和 target = igw-xxxx)。此外,必须添加 VPC 端点路由才能通过端点与 s3 通信。

  • 这将帮助您创建 VPC 终端节点:https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/ (2认同)