设置
问题
我很难理解如何在dotnet core 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方法更轻便(因为解耦每个函数源代码更容易)。
问题
这两个设置中的哪一个看起来都是最佳的吗?
答案 0 :(得分:0)
我知道这个答复是一年多以前提出的,所以我不知道从那以后发生了什么变化,但这对我有用:
就像您建议的那样,我开始使用dotnet
CLI Lambda工具,并且它工作正常。它开箱即用,需要最少的配置。我遇到的问题是我需要设置Cloudformation didn't allow的一些特定配置。那就是我开始利用Terraform的时候。经过一番挖掘之后,我决定使用Terraform,因为它fixed this issue。
现在,您提到了使用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 CLI的Serverless of Cloudformation相比,我发现这是一种更可定制的方法。
希望对您有所帮助!