C# 如何使用AWS CLI为dotnet 5项目执行lambda无服务器部署

C# 如何使用AWS CLI为dotnet 5项目执行lambda无服务器部署,c#,amazon-web-services,aws-lambda,aws-cli,dotnet-cli,C#,Amazon Web Services,Aws Lambda,Aws Cli,Dotnet Cli,早上好。 我正在尝试使用CLI对我的C#lambda项目的AWS lambda进行自动部署。 使用Dotnet3.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-pre

早上好。 我正在尝试使用CLI对我的C#lambda项目的AWS lambda进行自动部署。 使用Dotnet3.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环境中的部署,而我的生产部署将与之类似,只是将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
它似乎缺少从lambdaruntime确定GetFramework的键

这应该是什么价值?我试图做的只是将项目的部署自动化到lambda,理想情况下,我希望一个文件部署到dev,一个文件部署到生产环境

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

3.1模板上的值为“Runtime”:“dotnetcore3.1”,
提前感谢。

AWS Lambda还不支持
.NET 5
。支持的版本包括:

  • .NET核心3.1

  • .NET核心2.1

  • 通过
    容器图像支持
    .NET 5


    您确定AWS lambda已经支持.NET 5了吗?部署的项目是一个带有dotnet5的容器映像,如果使用向导进行部署,它将非常有效。问题是如何通过CLI部署。@AlejandroGonzalez您可以通过CLI创建/更新函数,也可以查看此处