总的来说,我在VPC中使用AWS Lambda感到非常困惑。问题是Lambda在尝试访问S3存储桶时超时。该解决方案似乎是VPC端点。从VPC内的Lambda访问AWS S3
我已将Lambda函数添加到VPC,因此它可以访问RDS托管数据库(未在下面的代码中显示,但功能正常)。但是,现在我无法访问S3以及任何尝试这样做的时间。
我试着创建一个VPC S3端点,但没有任何改变。
VPC配置
我使用的是默认创建一个简单的VPC每当我首次提出的EC2实例。它有四个子网,都是默认创建的。
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端点需要路由表配置和安全策略配置。如果您需要帮助,您需要显示如何配置这些设置。该文档位于:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html或者,您可以添加一个NAT网关到VPC,这将使Lambda函数可以访问VPC之外的所有内容,而不仅仅是S3服务。 –
这是vpc配置问题。在路由表上配置任意一个与NAT网关的sbunet assosiatio。你仍然在寻找问题? –
我已经添加了一些关于VPC配置的信息。我认为这将是问题出在哪里,但VPC对我来说在很大程度上是一个黑盒子。我不知道用什么来检查它,看看可能是什么配置不当。 – noobiemcfoob