【问题标题】:Managing AWS Lambda Functions using dotnet core 2.0 and Terraform使用 dotnet core 2.0 和 Terraform 管理 AWS Lambda 函数
【发布时间】: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


    【解决方案1】:

    我知道大约一年前有人从这个回复中提出了这个问题,所以我不知道从那以后一切都发生了多大的变化,但这对我有用:

    我开始使用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 中使用 Cloudformation 的无服务器更可定制的方法。

    希望对你有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2019-01-18
      • 2018-02-11
      相关资源
      最近更新 更多