我在VPC后面有一个lambda。当我尝试获取S3对象时,出现“连接ETIMEDOUT”错误。我设置了一个端点,但是仍然有这个问题。
如果删除VPC,便可以获取对象,因此我知道VPC是问题所在,而不是权限。
我已经建立了一个Internet网关来与外界进行通信(并且我已经确认那是可行的)。按照堆栈溢出和这些说明(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' });
请让我知道我可以提供的任何其他信息,并先谢谢您。
答案 0 :(得分:1)
使用S3网关端点的要求:
enableDnsHostnames
和enableDnsSupport
属性。答案 1 :(得分:0)
答案是上面Greg列表中的第3项。我切换到了一个新的安全组(暂时),该组允许所有流量流向出站规则中的所有内容,从而解决了我的问题。 (现在,我知道前进的道路,可以尝试更好的出站规则。)
谢谢大家! (对于在其他问题中发表有关VPC端点的原始人员。)