【发布时间】:2020-02-22 00:52:15
【问题描述】:
我在 VPC 后面有一个 lambda。当我尝试获取 S3 对象时,出现“连接 ETIMEDOUT”错误。我设置了一个端点,但仍然有这个问题。
如果我删除 VPC,我能够获取对象,因此我知道 VPC 是问题而不是权限。
我已经设置了一个 Internet 网关来与外界通信(并且我已经确认它可以正常工作)。按照 Stack Overflow 和这些说明 (https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/),我创建了一个具有“完全访问权限”的服务端点“com.amazonaws.us-east-1.s3”,并将其与我创建的路由表相关联以获取外部 -世界访问。
Screenshot of VPC Gateway Endpoint created
VPC、lambda 和 S3 都在同一个区域。 (Lambda 和 S3 是通过 SAM 创建的。)
我最初有默认的 AWS 和 S3 对象。我试过为两者设置区域,但没有成功。
AWS.config.update({ region: 'us-east-1'});
const s3 = new AWS.S3({ region: 'us-east-1' });
const s3FileParams = {
Bucket: srcBucket,
Key: srcKey,
};
const resp = await s3.getObject(s3FileParams).promise();
我还尝试将 s3 端点明确设置为 s3 = new AWS.S3({ endpoint: 'https://s3.us-east-1.amazonaws.com' });
让我知道我可以提供的任何其他信息,并提前致谢。
【问题讨论】:
-
可能更容易使用VPC endpoint。如果您不熟悉当前存在的网络/安全约束,则很难调试 VPC 连接
-
我创建了一个 VPC 终端节点Screenshot。它与子网的路由表相关联。但是我仍然遇到同样的问题。 (为了澄清,我刚刚在问题中添加了该屏幕截图。)如果我使用 VPC 端点,在访问 S3 时是否需要做任何不同的事情?
-
路由表附加到子网并且 lambda 与 vpc 和子网相关联,您为 lambda 选择的子网,它们是否都有带有 vpc 端点路由的路由表?我希望 ACL 允许流量?
-
所有子网都与路由表关联,是的。
标签: node.js amazon-web-services amazon-s3 aws-lambda amazon-vpc