未关联VPC的AWS中国区Lambda访问海外S3超时排查求助
可能遗漏的配置/检查要点
AWS中国区与全球区的物理隔离限制
AWS中国区(北京/宁夏区域)和AWS全球区域属于完全物理隔离的环境,默认情况下中国区Lambda无法直接访问全球区域的S3服务。即便持有有效会话令牌,也必须通过合规的网络通道(如AWS Direct Connect中国区服务、合规VPN)打通跨区域网络,否则必然出现连接超时。S3客户端的区域与端点配置验证
确保访问全球区S3的客户端(sourceClient)明确指定了目标区域(eu-central-1),避免SDK在中国区环境下默认使用中国区端点:val sourceClient = AmazonS3ClientBuilder.standard() .withRegion(Regions.EU_CENTRAL_1) .withCredentials(STSAssumeRoleSessionCredentialsProvider(...)) // 传入带会话令牌的凭证 .build()同时确认客户端使用Signature Version 4签名(全球区S3的默认要求),避免强制使用旧版本签名导致请求被拒绝。
会话令牌的权限与信任关系复核
重新检查生成会话令牌的STS角色:- 权限策略是否明确包含目标S3桶的
s3:GetObject操作权限; - 角色信任关系是否允许AWS中国区的Lambda执行角色(ARN格式为
arn:aws-cn:iam::账号ID:role/角色名)扮演该角色; - 会话令牌的有效期是否覆盖Lambda的最长执行时间(900秒),防止执行过程中令牌过期。
- 权限策略是否明确包含目标S3桶的
Lambda临时文件路径配置
Lambda执行环境仅/tmp目录具备可写权限,File.createTempFile()默认可能尝试在非可写路径创建文件,建议显式指定/tmp目录:val bufferedS3Object: File = File.createTempFile(objKey, "", File("/tmp"))虽然当前错误是连接超时,但该问题可能在后续步骤引发异常,建议提前修正。
出站网络规则限制检查
若你的AWS中国区账号配置了出站代理、AWS Shield规则或其他网络防火墙策略,需确认这些规则允许Lambda访问S3 eu-central-1区域的端点(端口443)。
内容的提问来源于stack exchange,提问作者nymvno
相关产品推荐
相关产品推荐

