设置
问题
我很难理解如何在dotnet核心2.0项目中管理Lambda函数
当前的方法(不只是实现我认为它可以工作的方式)
Terraform Lambda函数示例
resource "aws_lambda_function" "this" {
function_name = "test_function"
role = "lambda_exec_role"
s3_bucket = "my_bucket"
s3_key = "object_key/package.zip"
handler = "MyApp::Example.Hello::MyHandler"
runtime = "dotnetcore2.0"
}
这种方法意味着,如果我在项目中更改了单个函数,就必须将整个代码库上传到S3,这并不是处理代码更改的干净方法。
替代方法
dotnet lambda deploy-function
部署每个函数从Lambda代码版本管理的角度来看,这种方法更干净,但这意味着我不再使用Terraform来管理Lambda函数。
我以前使用过NodeJs和Go来创建Lambda函数,每个函数看起来都比dotnet方法轻量级(因为每个函数的源代码都更容易分离)。
问题
这些设置中的任何一个看起来都是最佳的吗?
发布于 2019-07-06 05:32:31
我知道这个问题是大约一年前从这个答复中问出来的,所以我不知道从那以后一切都发生了多大的变化,但这是对我有用的:
我开始使用dotnet
CLI工具,就像您建议的那样,它运行得很好。它是开箱即用的,需要最小的配置。遇到的问题是,我需要设置的一些特定配置。从那时起我开始利用Terraform。经过一番挖掘,我决定使用Terraform,因为它是修正了这个问题。
现在,您提到了使用Terraform的缺点是必须将整个代码上传到S3.但是我发现dotnet
CLI工具也是这样做的。如果签出执行dotnet lambda deploy-function
的输出,您将看到:
Zipping publish folder
... zipping: some.dll
... zipping: another.dll
Created publish archive (---)
Uploading to S3. (Bucket: ---)
... Progress: 11%
... Progress: 55%
... Progress: 100%
Creating new Lambda function some_lambda
因此,简单地说,我决定坚持Terraform,简单地阐述一个定制的shell脚本,它首先运行dotnet restore
,然后是dotnet build
,最后是terraform apply
。这就是将我的应用程序部署到AWS所需的全部内容。我发现这是一种比在dotnet中使用Serverless Cloudformation更可定制的方法。
我希望这能帮上忙!
https://stackoverflow.com/questions/51004755
复制相似问题