node.js - 如何知道我的 lambda 绑定(bind)到的自定义域?

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

我有一个 lambda 函数,它有 api-gateway URL。另外,我在 CloudFront 中有一个与之关联的自定义域 URL ( https://abc.def.com/ghi )。我可以使用自定义域访问我的 lambda。 现在,根据要求,我应该从 lambda 函数返回自定义域 URL,作为 JSON 响应的一部分。 所以我的 lambda 响应正文应该如下所示:

    {
    "response": "hi i am coming from lambda",
    "myurl": "https://abc.def.com/ghi"
    }

如何获取 lambda 函数内的 URL? PS:我使用的是node 8.10环境。

最佳答案

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

也就是说,解决问题的一种方法是将自定义域 URL 作为 Lambda environment variable 传递。 。如果您已使用AWS SAM设置您的应用程序/CloudFormation 您将值作为 Environment 的一部分传递属性(property),例如使用 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;

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

关于node.js - 如何知道我的 lambda 绑定(bind)到的自定义域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52823295/

相关文章:

django - 无服务器 AWS Lambda/Django/Zappa 的异步任务队列

node.js - 如何检查列中的任何值是否为空,它应该在 Mongoose 中计数值1?

python - Fabric:在目标主机上执行内联 Python?

node.js - 在服务器端计算以像素为单位的文本宽度

amazon-web-services - Amazon Lightsail 上的 CodeDeploy 本地注册失败并出现 AccessDeniedException

amazon-web-services - 当托管区域是父帐户的一部分时,CDK DnsValidatedCertificate : Can create a certificate in a linked AWS account,?

reactjs - 从 DynamoDB 更改 react 应用程序更新数据

amazon-web-services - 尽管使用依赖层 Lambda 函数包仍然很大

node.js - ReactJS,内部专用 IP 服务器上的 Express 应用程序自托管

mysql - 如何使用 Knex 迁移器 CLI 命令创建 mysql 数据库?