VPC接口端点和API网关被Lambda调用。

0

【以下的问题经过翻译处理】 由于安全原因,我们正在将所有Lambda移入VPC,并通过添加到VPC的接口终端点使用PrivateLink来访问所有AWS服务。我正在尝试使用启用了私有DNS的终端点接口来调用API Gateway中的REST API,但遇到问题。

对于私有API,这是可以的,因为我们将我们的VPC添加到API资源策略中,我们可以毫无问题地调用API。但是,我们需要从一个Lambda中调用Webhooks,这个Lambda可能在AWS内也可能不在AWS内。在AWS外部使用没有问题,但在同一账户中的(REGIONAL)REST API失败并返回403错误,除非我将其设置为私有并附加API Gateway的终端点ID。这个Lambda上的安全组允许所有出站流量,我可以使用postman从互联网调用Webhook,没有问题。

我很困惑为什么在区域性调用时会出现403错误,以及为什么需要将其设置为私有才能使用。我们将调用内部和外部AWS的随机Webhook URL,我的理解是终端点接口是PrivateLink的入口,使得所有API Gateway调用都不会经过公共终端点,但是其他情况都是相同的。有人知道我错了什么地方吗?我似乎无法从文档中找到我错在哪里...

非常感谢。

1 回答
0

【以下的回答经过翻译处理】 如果您在将API GW VPC端点添加到VPC时启用“启用私有DNS名称”,所有REGIONAL和PRIVATE API将被路由到VPC端点。

正如[1]中所述:“然而,使用启用了私有DNS的API网关VPC端点无法访问公共API。” (我的强调)

您可以通过以下两种方式解决此问题:

  • 保留私有DNS名称, 并确保所有公共API均从边缘优化的自定义域名访问。
  • 禁用私有DNS名称,但这将需要您通过显式设置Host标头[2]或使用Route 53别名[3]来调用私有API端点。

希望这可以帮助您!

[1] 在Amazon API Gateway中创建私有API-为API网关创建接口VPC端点<code class ="code">execute-api </ code> - https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html#apigateway-private-api-create-interface-vpc-endpoint

[2] 如何调用私有API-使用特定于端点的公共DNS主机名调用您的私有API - https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html#apigateway-private-api-public-dns

[3] 如何调用私有API-使用Route53别名访问您的私有API - https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html#apigateway-private-api-route53-alias

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则