You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda通过VPC端点访问S3失败,同环境EC2正常,求原因

分析Lambda在VPC中访问S3失败的原因(对比EC2环境差异)

咱们先梳理下EC2和Lambda在VPC里运行的核心差异,再结合你的场景排查问题:

EC2 vs Lambda的VPC运行环境差异

  • 网络接口与生命周期:EC2实例绑定的弹性网卡(ENI)是长期存在的,而Lambda函数在VPC中执行时,会动态创建(或复用)临时ENI,这个ENI的网络配置完全依赖VPC的基础设置,比如DNS解析规则。
  • IAM角色独立性:EC2用的是实例IAM角色,Lambda用的是执行角色——这是两个完全独立的权限实体,哪怕EC2的角色有S3访问权限,Lambda的执行角色未必配置了相同权限。
  • DNS依赖程度:Lambda在VPC中访问S3 VPC端点时,必须依赖VPC的DNS解析能力(enableDnsSupport和enableDnsHostnames需同时开启);而EC2实例通常默认已经配置好DNS,所以不会遇到这类问题。
  • 流量路由逻辑:虽然同子网同安全组,但Lambda的流量走临时ENI,需要确保子网路由表正确指向S3 VPC端点,且端点的访问策略明确允许Lambda角色的请求。

Lambda访问S3失败的常见原因(结合你的场景)

根据你EC2能正常访问的情况,大概率是Lambda特有的配置问题,按优先级排查:

1. Lambda执行角色的IAM权限不足

EC2的实例角色有S3访问权限,但Lambda的执行角色可能没被授予对应的权限。你需要检查Lambda执行角色的附加策略,是否包含s3:GetObject权限,比如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::xxxxxx/s3-upload.json"
        }
    ]
}

2. S3 VPC端点的策略限制

S3 VPC端点本身有独立的访问策略,可能只允许EC2的实例角色访问,没把Lambda执行角色加入允许列表。修改端点策略,添加Lambda角色的ARN:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::你的账号ID:role/你的Lambda执行角色名"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::xxxxxx/s3-upload.json"
        }
    ]
}

3. VPC的DNS配置未开启

Lambda在VPC中必须依赖VPC的DNS解析才能访问S3端点,你需要确认VPC的两个关键设置:

  • enableDnsSupport设为true(允许VPC内部解析DNS)
  • enableDnsHostnames设为true(允许ENI获取主机名)
    如果这两个选项关闭,Lambda无法解析S3端点的域名,会导致请求超时或失败。

4. 子网路由表配置验证

虽然EC2同子网能访问,但还是要确认Lambda所在子网的路由表中,存在指向S3 VPC端点的路由:

  • 目标:S3服务的前缀列表(比如ap-northeast-1的前缀列表可在VPC控制台的「前缀列表」中查询)
  • 下一跳:你的S3 VPC端点ID(vpce-xxxxxx)

5. 查看CloudWatch日志定位具体错误

你的代码里已经打印了错误信息,去Lambda对应的CloudWatch日志组查看具体报错:

  • 如果是AccessDenied:优先检查IAM权限和VPC端点策略;
  • 如果是连接超时/无法解析域名:检查DNS配置和路由表;
  • 如果是其他错误,根据日志提示进一步排查。

内容的提问来源于stack exchange,提问作者fish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:41:35