首页 > 解决方案 > 无法通过 VPCE Endpoint 将私有子网中的 Lambda 连接到 S3

问题描述

我一直在尝试从位于私有子网中的 lambda 连接到 S3 存储桶。我对 Ec2 实例做了完全相同的事情,它就像一个魅力,我不确定为什么使用 lambda 会出现这样的问题。我的 lambda 在某个定义的时间间隔后超时。

这是我的 lambda 的 VPC 配置 在此处输入图像描述

这是安全组输出配置: 在此处输入图像描述

下面是与 lambda 关联的子网的出站规则 在此处输入图像描述

如您所见,我创建了一个 VPC 终端节点来通过 VPC 路由我的流量,但它不起作用。我不确定我在这里缺少什么。下面是 VPC 端点配置。

在此处输入图像描述

我已经在这样的策略中完全访问了 S3:

{
"Statement": [
    {
        "Action": "*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    }
]

}

当我运行我的 lambda 代码时,我得到如下超时错误:

在此处输入图像描述

标签: amazon-web-servicesamazon-s3aws-lambdaamazon-vpcaws-security-group

解决方案


为了重现您的情况,我执行了以下步骤:

  • 创建了一个调用ListBuckets(). 在未附加到 VPC 的情况下对其进行了测试。它工作得很好。
  • 创建了一个只有私有子网的VPC
  • 向 VPC 和子网添加了Amazon S3 终端节点网关
  • 重新配置 Lambda 函数以使用 VPC 和子网
  • 测试了 Lambda 函数——它运行良好

我怀疑您的问题可能出在附加到 Lambda 函数的安全组上。我将出站规则保留为“所有流量 0.0.0.0/0”,而不是限制它。试一试,看看它是否能让事情变得更好。


推荐阅读