【问题标题】:Can a serverless application be moved to a PaaS platform?可以将无服务器应用程序迁移到 PaaS 平台吗?
【发布时间】:2018-09-23 15:48:51
【问题描述】:
我构建了一个无服务器应用程序(共享驱动器),用户可以在其中通过网页将视频和图像上传到 S3 存储桶。对上传媒体的一些处理是在上传操作(视频转码、图像缩略图创建)时完成的。为此,编写了两个 Lambda 函数。
无服务器应用程序使用 AWS Lambda。
我想知道我是否可以将此应用程序移动到像 Elastic Beanstalk 这样的 PaaS 平台(使用像 Docker 这样的东西)。
【问题讨论】:
标签:
amazon-web-services
docker
aws-lambda
amazon-elastic-beanstalk
【解决方案1】:
是的,但是根据您实现 lambda 所使用的语言,您可能需要提供一些轻微的填充来将您的 lambda 封装在一个轻量级 HTTP 服务器框架中。
将代码移出 lambda 的最大障碍不是非常简单的 lambda 接口。但是,您的 lambda 可能调用的任何 AWS 服务都极有可能受到 SDK 和 API 的支持,这些 SDK 和 API 也可以在 lambda 之外的任何上下文中使用,例如在 docker 容器中运行的代码。
在您的情况下,处理媒体上传到 S3 的代码需要使用 AWS 开发工具包与 S3 对话。该 SDK 在 Lambda 内部和外部都同样有效。
如果您使用 Python 编写代码,那么 Zappa 是一个流行的包,它抽象了 AWS Lambda 接口,使您可以更轻松地将代码移动到运行 gunicorn 和 gunicorn 的 docker 容器,甚至是不同的云提供商。
您还必须自己配置和构建 docker 容器。