【发布时间】:2017-02-08 08:23:34
【问题描述】:
总的来说,我对在 VPC 中使用 AWS Lambda 感到很困惑。问题是 Lambda 在尝试访问 S3 存储桶时超时。解决方案似乎是 VPC Endpoint。
我已将 Lambda 函数添加到 VPC,以便它可以访问 RDS 托管数据库(以下代码中未显示,但功能正常)。但是,现在我无法访问 S3,并且任何尝试这样做都会超时。
我尝试创建 VPC S3 端点,但没有任何改变。
VPC 配置
每当我第一次创建 EC2 实例时,我都会使用默认创建的简单 VPC。它有四个子网,都是默认创建的。
VPC 路由表
_Destination - Target - Status - Propagated_
172.31.0.0/16 - local - Active - No
pl-63a5400a (com.amazonaws.us-east-1.s3) - vpce-b44c8bdd - Active - No
0.0.0.0/0 - igw-325e6a56 - Active - No
简单 S3 下载 Lambda:
import boto3
import pymysql
from StringIO import StringIO
def lambda_handler(event, context):
s3Obj = StringIO()
return boto3.resource('s3').Bucket('marineharvester').download_fileobj('Holding - Midsummer/sample', s3Obj)
【问题讨论】:
-
VPC S3 端点需要路由表配置和安全策略配置。如果您需要帮助,您需要展示您是如何配置这些设置的。文档在这里:docs.aws.amazon.com/AmazonVPC/latest/UserGuide/… 或者,您可以向 VPC 添加一个 NAT 网关,这将使 Lambda 函数可以访问 VPC 之外的所有内容,而不仅仅是 S3 服务。
-
这是 vpc 配置问题。在路由表上配置任何一个与 nat 网关的 sbunet 关联。你还在寻找问题吗?
-
我添加了一些关于 VPC 配置的信息。我认为这就是问题所在,但 VPC 在很大程度上对我来说是一个黑匣子。我不知道用它检查什么以查看可能配置错误的内容。
标签: amazon-web-services amazon-s3 aws-lambda amazon-vpc