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 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen