繁体   English   中英

Docker中用于本地部署的无服务器AWS Lambdas

[英]Serverless AWS Lambdas in a Docker for OnPremises Deployment

我搜索了几天,发现了一些类似Serverless或Localstack的方法,但是我真正想做的是能够使用AWS API Gateway和Lambdas为我的基于云的软件版本编写所有代码(解决),而不管理我的部署。

然后...

客户希望在其自己的专用网络中托管其副本,因此...我想使用完全相同的Lambda代码(该代码不使用DynamoDB等其他AWS“魔术”服务...仅使用“常规”依赖项)将其注入运行类似“ API Gateway”的软件的容器中(也许是python / flask解析导出的API Gateway配置?)。

除非有更好的主意,否则我愿意构建此层。 这样我就可以将lambda放在一个文件夹中,说“ aws_lambda”,并且我的容器将知道如何将HTTP有效负载转换为AWS事件有效负载,导入模块,调用“ lambda_handler” ...希望这是它。 拥有另一个带有MySQL的容器和另一个带有Nginx的容器(为静态网站模拟CloudFront),我将完成工作。 整个解决方案都可以。

有什么建议么? 我疯了吗?

有谁知道一些现有的软件解决方案来解决这个问题?

除了不同的无服务器插件和localstack之外,您还可以尝试AWS SAM Cli运行本地api网关。 该命令是start-api https://docs.aws.amazon.com/lambda/latest/dg/test-sam-cli.html 它可能不会扩展,也不会尝试过,并且仅用于测试。

好奇地考虑要做什么(将lambda转换为普通flask服务器是oppozite到zappa,zappa是无服务器的程序包,可将正常flask服务器转换为lambda函数并将其上传到AWS)。 如果您成功实现了将Flask请求转换为Lambda事件的原始想法,并且希望将代码打包,则可以将其称为unzappa。 尽管zappa是成熟且大包装的,但可能可能更容易“反转”一些轻巧的东西,例如awsgi https://github.com/slank/awsgi/blob/master/awsgi/ init .py

如果您愿意使用AWS SAM ,则AWS SAM CLI会提供您想要的东西。

AWS SAM CLI实现其等效的API网关,并在Docker容器中运行AWS Lambda函数。 尽管它主要用于测试,但我看不出任何原因,为什么您也不能在用例中使用它。

@Lovato,我一直在使用https://github.com/lambci/docker-lambda,它是模仿lambda环境的docker映像,lambci似乎为nodejs,java,python等维护了一个很好的lambda映像版本。净,甚至去郎。 因此,您可以从技术上在运行lambda“ like”环境的docker中重用整个lambda代码。 我将其称为类似于lambda的原因是,aws并未完全发布有关lambda如何工作的所有信息。 但这是我所看到的最接近的近似值。 我将其用于lambda的本地开发和测试。 我已经测试了“离线” lambda的踪迹。 让我知道这是否适合您。

我确实更喜欢使用docker文件并创建我的docker映像供我使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM