【问题标题】:How do I use the AWS CLI to do a lambda serverless deployment for a dotnet 5 project如何使用 AWS CLI 为 dotnet 5 项目执行 lambda 无服务器部署
【发布时间】:2021-02-26 08:48:11
【问题描述】:

早上好。 我正在尝试使用 CLI 对我的 C# lambda 项目的 AWS lambda 进行自动部署。 使用 dotnet 3.1,我将执行以下操作。

dotnet lambda deploy-serverless --configuration debug --stack-name custom-webhook-dev --s3-bucket custom-deployment-dev --template serverless.dev.template --region us-east-1 --s3-prefix custom-salesforce-integration-

这将负责我的部署到我的开发环境,而我的生产部署将类似但将 dev 替换为 prod 和 debug 以进行发布。

但是在 5.0 中我遇到了以下问题:

Amazon Lambda Tools for .NET Core applications (3.2.3)
Project Home: https://github.com/aws/aws-extensions-for-dotnet-cli, https://github.com/aws/aws-lambda-dotnet

Processing CloudFormation resource AspNetCoreFunction
Initiate packaging of . for resource AspNetCoreFunction
Unknown error executing command: Value cannot be null.
Parameter name: key
at System.Collections.Generic.Dictionary2.FindEntry(TKey key) at System.Collections.Generic.Dictionary2.TryGetValue(TKey key, TValue& value)
at Amazon.Lambda.Tools.LambdaUtilities.DetermineTargetFrameworkFromLambdaRuntime(String lambdaRuntime, String projectLocation) in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Lambda.Tools\LambdaUtilities.cs:line 38
at Amazon.Lambda.Tools.TemplateProcessor.TemplateProcessorManager.PackageDotnetProjectAsync(IUpdateResourceField field, String location) in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Lambda.Tools\TemplateProcessor\TemplateProcessorManager.cs:line 223
at Amazon.Lambda.Tools.TemplateProcessor.TemplateProcessorManager.ProcessUpdatableResourceAsync(String templateDirectory, IUpdateResourceField field) in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Lambda.Tools\TemplateProcessor\TemplateProcessorManager.cs:line 167
at Amazon.Lambda.Tools.TemplateProcessor.TemplateProcessorManager.TransformTemplateAsync(String templateDirectory, String templateBody) in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Lambda.Tools\TemplateProcessor\TemplateProcessorManager.cs:line 95
at Amazon.Lambda.Tools.Commands.DeployServerlessCommand.PerformActionAsync() in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Lambda.Tools\Commands\DeployServerlessCommand.cs:line 167
at Amazon.Common.DotNetCli.Tools.Commands.BaseCommand1.ExecuteAsync() in C:\codebuild\tmp\output\src109826539\src\src\Amazon.Common.DotNetCli.Tools\Commands\BaseCommand.cs:line 44

DetermineTargetFrameworkFromLambdaRuntime 似乎缺少键

这应该是什么值?我要做的只是自动部署到我的项目的 lambda,理想情况下,我希望一个文件部署到 dev,一个文件部署到生产。

它缺少的一件事是 3.1 中的“运行时”设置。 我应该在这个文件或命令行上添加它吗?如果是,它应该是什么值?

3.1 模板上的值为 "Runtime": "dotnetcore3.1", 提前谢谢你。

【问题讨论】:

  • 您确定 AWS lambda 已经支持 .NET 5?

标签: c# amazon-web-services aws-lambda aws-cli dotnet-cli


【解决方案1】:

AWS Lambda 尚不支持 .NET 5。支持的版本是:

  1. .NET Core 3.1

  2. .NET Core 2.1

Lambda runtimes

.NET 5 支持通过container images

.NET 5 AWS Lambda Support with Container Images

【讨论】:

  • 部署的项目是一个带有 dotnet5 的容器镜像,如果使用向导部署,则可以完美运行。问题是如何通过 CLI 进行部署。
  • @AlejandroGonzalez 您可以通过 CLI 创建/更新函数,也可以在这里查看Makefile
猜你喜欢
  • 2021-08-08
  • 2020-01-01
  • 2018-12-14
  • 2021-02-27
  • 2020-10-20
  • 2020-10-08
  • 2018-06-04
  • 2019-08-04
  • 2017-01-29
相关资源
最近更新 更多