您是否可以使用除Javascript以外的语言使用Lambda @ Edge修改AWS CloudFront事件的URI?

问题描述 投票:0回答:1

我正在尝试进行一些AB测试,并在我们的AWS CloudFront设置中插入Lambda似乎是一种很好的方法。我的公司有NodeJ的问题。他们被一些使用它的旧开发者烧毁并禁止使用它。

Lambda支持一堆语言,所以没什么大不了的。但经过一番研究和观察源头。只有Javascript似乎能够与CloudFront事件交互并向前传递请求。其他语言的所有库似乎只发出响应事件,并且不允许在修改后传递请求。

我错过了什么或这个场景只支持JS吗?

amazon-web-services go aws-lambda amazon-cloudfront
1个回答
2
投票

Lambda @ Edge仅支持Node.js运行时。

您必须使用nodejs6.10nodejs8.10运行时属性创建函数。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-requirements-limits.html#lambda-requirements-lambda-function-configuration

您对其他运行时的观察“似乎只发出响应事件,并且不允许在修改后转发请求”并不能真正准确地表示发生的情况。 Node.js没有做任何特殊的“前进”魔术。 CloudFront解释Lambda函数的响应有效负载,以确定如何继续。如果它是请求触发器并且Lambda函数返回类似请求的结构,则CloudFront将继续处理请求,并进行修改。否则,CloudFront会将响应有效内容解释为要返回给调用者的响应。一切都由CloudFront对Lambda函数返回的解释来处理。

理论上,任何Lambda运行时都可以实现相同的目的,但Lambda @ Egde是为 - 并且目前仅支持 - Node.js运行时而设计的,它们是轻量级和快速的,因为它们需要,因为CloudFront调用触发器函数同步然后阻塞(暂停自己的处理),同时等待函数返回。

© www.soinside.com 2019 - 2024. All rights reserved.