【问题标题】:Unable to connect Lambda in private subnet to S3 through VPCE Endpoint无法通过 VPC Endpoint 将私有子网中的 Lambda 连接到 S3
【发布时间】:2021-05-25 06:24:01
【问题描述】:

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

这是我的 lambda 的 VPC 配置

以下是安全组输出配置:

以下是与 lambda 关联的子网的出站规则

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

我已经在这样的政策中授予了对 S3 的完全访问权限:

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

}

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-vpc aws-security-group


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨@John。 ListBuckets() 也适用于我。但是, list_objects_v2() 或 list_objects() fxn 给我超时错误。我不确定为什么会这样,但如果这是一个政策问题,它会抛出 403。这是代码:ibb.co/nB8VN40
    • 如果你可以列出桶但不能列出对象,那就很奇怪了。这意味着你已经很好地连接了。我不知道什么会导致超时。桶里有很多东西吗?如果是这样,请尝试进一步增加您的 Lambda 超时。顺便说一句,代码没有使用您定义的Prefix
    • 我删除了前缀,看看它是否可以直接列出存储桶内立即可用的对象。桶中的对象并不多。我将超时时间增加到 30 秒,但仍然存在同样的问题...感谢您的帮助
    猜你喜欢
    • 2021-07-25
    • 2020-04-27
    • 1970-01-01
    • 2019-06-24
    • 2016-07-21
    • 2018-11-04
    • 2019-06-29
    • 2018-10-20
    • 2020-06-28
    相关资源
    最近更新 更多