【问题标题】:deploy serverless application to docker将无服务器应用程序部署到 docker
【发布时间】:2019-02-11 05:39:28
【问题描述】:

我按照本指南https://serverless.com/blog/how-to-create-a-rest-api-in-java-using-dynamodb-and-serverless/ 使用无服务框架创建了一个小型服务。我正在使用“AWS Lambda”、“APIGateway”和“DynamoDB”。我希望能够将我的服务部署到 docker 容器,这样我就可以在本地测试我的 api 和 dynamodb。我希望能够将 curl 命令发送到我的本地主机并能够看到响应。我该怎么做呢?有教程或分步指南吗?

【问题讨论】:

  • 对于 DynamoDB 部分,您可以使用来自 Docker hub 的 DynamoDB 本地 Docker 映像。 hub.docker.com/r/amazon/dynamodb-local 这是一个测试/开发版本,适合您正在做的事情。
  • 我建议您使用 AWS Cloud9,它是一个用于编写、运行和调试代码的云 IDE。您可以将 lambda 函数作为本地环境运行。这是他们的网站:aws.amazon.com/cloud9
  • 顺便说一句,Lambda 和 Docker 同时使用是没有意义的。

标签: amazon-web-services docker amazon-dynamodb serverless-framework serverless


【解决方案1】:

我不明白你的目的。 Serverless 的全部目的是“不管理服务器”。那你为什么要这么做?而是在 AWS 本身上创建一个单独的测试环境来测试无服务器。 API 网关、Lambda 和 DynamoDB 都是 AWS 特定的服务。通过考虑在 docker 中创建 DynamoDB、Lambda、API 网关的克隆,您正在使您的任务变得更加复杂而不是简单。即使您使用 MongoDB 或 Cassandra 代替 DynamoDB,您确实必须在创建与 API Gateway-> Lambda 集成类似的集成方面做很多工作。 (即使您只是在图片中采用这种可扩展性)。如果您想学习在 docker 中创建此类 Web 服务,那么您可以使用 mongo db docker image(直接来自 docker hub)之类的东西来代替 DynamoDB

更新:不过,您可以将 https://hub.docker.com/r/amazon/dynamodb-local/ 用于 DynamoDB。第一次图像推送是六个月前。

对于 Lambda,您可以尝试 https://github.com/lambci/docker-lambda 看看它是否有效。

【讨论】:

  • 为什么不直接使用来自 docker hub 的 DynamoDB 本地? hub.docker.com/r/amazon/dynamodb-local
  • 你说得有道理。我没有意识到这一点,因为第一次发布是 6 个月前的事。编辑答案
  • 感谢@Kirk,如果我从 docker hub 使用本地 dynamodb,那么这只是 dynamodb 的处理,但我仍然在努力了解如何测试我的 RESTAPI?我也可以将我的 Lambda 部署到 docker 容器吗?
  • 您可以尝试github.com/lambci/docker-lambda 用于 docker,但原始建议保持不变。相应地更新了答案。
【解决方案2】:

对 lambda 片段使用 Sam local,对 DynamoDB 片段使用 DynamoDB local

此外,一旦进入 AWS,您可能可以通过 hook up ELBs to Lambda functions 在没有 api 网关的情况下逃脱。

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 2016-04-02
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多