【问题标题】:Serverless Framework - Get API Gateway URL for use in tests无服务器框架 - 获取 API 网关 URL 以用于测试
【发布时间】:2019-04-16 02:09:51
【问题描述】:

我正在使用无服务器框架,并且我希望能够在我的验收测试中引用我的 API Gateway URL。

我的测试环境经常被破坏然后重新创建,因此无法将 URL 硬编码到测试中。

我可以看到reference API Gateway as an AWS environment variable 的方法,但这并不能帮助我在本地获取测试的 URL。

我希望 cloudformation 输出会在 .serverless 包中被引用,并且可以通过 json 访问,但情况似乎并非如此。

知道如何在验收测试文件中引用 API 网关 URL 吗?

注意:这些测试需要在 AWS 上运行,而不是使用本地服务器来模拟 API 网关

【问题讨论】:

  • @Harshit_Raj - 这在本地测试中不起作用。 Ref 和 Fn::Join 之类的函数似乎不在本地运行(并且可能不能,因为 Ref 在部署之前不存在)。只有将它们上传到 AWS 后,它们才会被解析为实际字符串。

标签: amazon-cloudformation serverless-framework aws-serverless


【解决方案1】:

serverless-plugin-test-helper 插件可以在这里提供帮助。它将生成一个包含堆栈所有输出的 YAML 文件。这包括几个标准的 - 使用的 S3 存储桶 (ServerlessDeploymentBucketName) 和基本服务端点 (ServiceEndpoint)。

如果您使用的是 Node 并且您的测试与正在测试的堆栈位于同一目录中,那么还有一个模块可以读取此文件。否则,它只是标准的 YAML,您可以使用任何方便的工具。

【讨论】:

    【解决方案2】:

    考虑为您的 API 添加一个 APIGateway 自定义域。然后,您可以使用已知的 DNS 名称进行验收测试。

    您需要将 ApiGateway 基本路径映射、apigateway 域名和 route53 记录集添加到 serverless.yml 的资源部分。

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 2022-06-16
      • 2021-04-30
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2021-05-11
      • 2021-03-10
      相关资源
      最近更新 更多