gpt4 book ai didi

.net-core - 使用 dotnet core 2.0 和 Terraform 管理 AWS Lambda 函数

转载 作者:行者123 更新时间:2023-12-01 05:53:59 24 4
gpt4 key购买 nike

设置

  • VS 代码
  • Terraform (v0.11)

  • 问题
    我很难理解如何在 dotnet core 2.0 项目中管理 Lambda 函数
    当前方法(未按照我认为可行的方式实现)
  • 在 Terraform 中创建函数结构
  • 在 dotnet 核心项目中创建函数代码,如 here 所述
  • 压缩发布文件夹并上传到 S3
  • 根据 AWS 文档 c# (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 核心 CLI 来管理 Lambda 函数而不是 Terraform
  • 使用 dotnet 核心 CLI 部署每个功能 dotnet lambda deploy-function

  • 从 Lambda 代码版本管理的角度来看,这种方法感觉更清晰,但这意味着我不再使用 Terraform 来管理我的 Lambda 函数。
    我之前使用 NodeJs 和 Go 创建 Lambda 函数,每个函数似乎比 dotnet 方法更轻量级(因为它更容易分离每个函数源代码)。
    问题
    这些设置中的任何一个看起来是最佳的吗?

    最佳答案

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

    我开始使用 dotnet CLI Lambda 工具,就像你建议的那样,它工作得很好。它开箱即用,需要最少的配置。我遇到的问题是我需要设置一些特定的配置,Cloudformation didn't allow .那是我开始利用 Terraform 的时候。经过一番挖掘,我决定使用 Terraform,因为它 fixed this issue .

    现在,您提到了使用 Terraform 的缺陷是您必须将整个代码上传到 S3...但我发现 dotnet CLI 工具的作用完全相同。如果您 check out 执行 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 所需的全部内容。我发现这是一种比将 Serverless of Cloudformation 与 dotnet CLI 结合使用更可定制的方法。

    我希望有帮助!

    关于.net-core - 使用 dotnet core 2.0 和 Terraform 管理 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51004755/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com