簡體   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