首页 > 解决方案 > 如何知道我的 lambda 绑定到的自定义域?

问题描述

我有一个 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:我使用的是 node 8.10 环境。

标签: node.jsamazon-web-servicesaws-lambdaaws-api-gatewayamazon-cloudfront

解决方案


首先,我会挑战要求。恕我直言,将域 url 作为响应的一部分返回给客户端是没有意义的,因为它已经知道它(否则它将无法首先发出请求)。

也就是说,解决您的问题的一种方法是将自定义域 url 作为Lambda 环境变量传递。如果您使用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;

然后你只需将它添加到你的响应对象中。


推荐阅读