如何知道我的lambda绑定到的自定义域?

时间:2018-10-15 19:10:21

标签: node.js amazon-web-services aws-lambda aws-api-gateway amazon-cloudfront

我有一个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环境。

1 个答案:

答案 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;

然后您只需将其添加到响应对象中即可。