【发布时间】:2018-12-02 22:10:58
【问题描述】:
设置
- VS 代码
- Terraform (v0.11)
问题
我很难理解如何在 dotnet core 2.0 项目中管理 Lambda 函数
当前方法(没有按照我认为的方式实施)
- 在 Terraform 中创建函数结构
- 在 dotnet core 项目中创建函数代码,如here 所述
- 压缩发布文件夹并上传到 S3
- 根据 c# 的 AWS 文档 (assembly::namespace.class-name::method-name) 在 Terraform 函数定义中引用函数的处理程序
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 core CLI 而非 Terraform 来管理 Lambda 函数
- 使用 dotnet core CLI
dotnet lambda deploy-function部署每个函数
从 Lambda 代码版本管理的角度来看,这种方法感觉更干净,但这意味着我不再使用 Terraform 来管理我的 Lambda 函数。
我之前使用过 NodeJs 和 Go 来创建 Lambda 函数,每个似乎都比 dotnet 方法更轻量级(因为它更容易解耦每个函数的源代码)。
问题
这些设置中的任何一个看起来是否最佳?
【问题讨论】:
标签: .net-core aws-lambda terraform