我使用CloudFormation模板完成了所有工作,该模板创建了一个API网关,其中包含与Lambda函数的代理集成,后者又操纵各种DynamoDB表。
但是,最近,我开始体验DynamoDB及其读/写工作者的缺点。所以,我想,我将启用DynamoDB DAX来加速缓存。
我在构建DAX集群时设置CloudFormation模板没有任何问题。
但是当我尝试从Lambda函数连接到DAX时,我遇到了诸如NoRouteException: not able to resolve address
之类的错误。搜索周围,事实证明,由于DAX在VPC中,Lambda函数当然无法访问。 Lambda函数也必须在VPC中。
但是如果我将Lambda函数放在VPC中,那么API Gateway就不能通过代理集成来访问Lambda函数。
那么,如何编排API网关 - > Lambda - > VPC内的DAX?
通用API网关无法轻易使用DAX似乎很迂回 - > Lambda模式。 VPC要求是一个真正的杀手,它实际上意味着DAX主要仅对EC2实例有用,而不是API - > LAMBDA。
有什么想法吗?
答案 0 :(得分:6)
但是如果我将Lambda函数放在VPC中,那么API Gateway就不能通过代理集成来访问Lambda函数。
这是不正确的。 API网关通过使用Lambda服务API,代理与否,VPC调用Lambda函数来访问它们。
API网关不直接连接到Lambda函数容器 - 因此容器放置(在VPC内部或外部)不会影响API Gateway实际调用该函数的能力 - 它会影响函数访问但不能如何访问。
代理集成修改了有效负载的行为和处理,但不是API网关实际连接到Lambda服务以调用该函数并接收响应的方式。