【问题标题】:Lambda Timeout while communicating with S3与 S3 通信时 Lambda 超时
【发布时间】:2016-12-22 04:19:04
【问题描述】:

我正在尝试使用 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');
    });
};

使用上述方法,我根本没有打印出“DONE”。除了超时之外,日志不显示任何信息。

我可以在这里进行任何故障排除吗?我原以为至少错误会显示在“完成”部分。

【问题讨论】:

标签: node.js amazon-s3 aws-lambda


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您节省了我的时间,谢谢。你在 AWS 上做过任何课程吗?整个事情太复杂了,我无法理解。
    • 不,我没有在 AWS 上完成任何课程。这只是大量的研究。 :)
    • 这是正确的,但为了避免别人的挫败感,请确保您也创建了端点/路由表关联registry.terraform.io/providers/hashicorp/aws/latest/docs/…
    • 我相信只有当子网是私有的即没有互联网网关时才需要这样做
    【解决方案3】:

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

    【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 2022-01-10
      • 2019-06-04
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多