我有一个lambda函数,该函数具有其api-gateway URL。另外,我在CloudFront(https://abc.def.com/ghi)中有一个与之关联的自定义域URL。我可以使用自定义域访问我的lambda。 现在作为一项要求,我应该从lambda函数返回自定义域URL作为JSON响应的一部分。 因此,我从lambda获得的响应主体应如下所示:
{
"response": "hi i am coming from lambda",
"myurl": "https://abc.def.com/ghi"
}
我如何在lambda函数中捕获URL? PS:我正在使用节点8.10环境。
答案 0 :(得分:3)
首先,我要挑战该要求。恕我直言,将域url作为响应的一部分返回给客户端是没有意义的,因为它已经知道了(否则首先将无法发出请求)。
也就是说,解决问题的一种方法是将自定义域网址作为Lambda environment variable传递。如果您使用AWS SAM / CloudFormation设置了应用程序,则将值作为Environment属性的一部分进行传递,例如使用SAM时:
ExampleLambda:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs8.10
CodeUri: .
Handler: index.handler
Environment:
Variables:
CUSTOM_DOMAIN_URL: !Sub CustomDomainUrl
然后CUSTOM_DOMAIN_URL
将在您的Lambda运行时中用作环境变量:
const CUSTOM_DOMAIN_URL = process.env.CUSTOM_DOMAIN_URL;
然后您只需将其添加到响应对象中即可。