Aws lambda 为什么可以';t';dotnet lambda部署函数';从Azure DevOps工件源中提取包?

Aws lambda 为什么可以';t';dotnet lambda部署函数';从Azure DevOps工件源中提取包?,aws-lambda,azure-devops,azure-pipelines,Aws Lambda,Azure Devops,Azure Pipelines,我正在Azure DevOps中使用AWS部署lambda任务。在部署的lambda函数中,它的设置是从同一Azure DevOps repo/安装中的工件提要中提取一个包 如果我在部署的前一个步骤中运行NuGet restore,那么可以很好地访问包,但是当它点击AWS Lambda.NET Core部署步骤时,它在尝试从同一提要读取时会得到401 有人知道我如何配置lambda发布步骤以成功读取自定义提要吗 具体错误是: 响应状态代码不表示成功:401 我也有同样的问题,但希望我能提供一个新

我正在Azure DevOps中使用AWS部署lambda任务。在部署的lambda函数中,它的设置是从同一Azure DevOps repo/安装中的工件提要中提取一个包

如果我在部署的前一个步骤中运行
NuGet restore
,那么可以很好地访问包,但是当它点击
AWS Lambda.NET Core部署
步骤时,它在尝试从同一提要读取时会得到401

有人知道我如何配置lambda发布步骤以成功读取自定义提要吗

具体错误是:

响应状态代码不表示成功:401


我也有同样的问题,但希望我能提供一个新的角度

我们没有使用AWS deploy lambda运行,而是打包我们的lambda并将其推送到S3,以允许CloudFormation部署它们。这将使用来构造部署包(aws deploy lambda正在后台执行此操作)。执行此操作的powershell步骤如下所示:

dotnet lambda package
dotnet lambda package ("/p:Version=" + $VersionNumber) "/p:PreserveCompilationContext=false" --msbuild-parameters "--no-restore"
结果包通常会在项目下的bin/release文件夹中生成

然后,您可以将参数
--msbuild parameters”--no restore“
添加到打包过程中,这将不会触发自动还原步骤。在Azure DevOps构建管道内部,您可以在它之前设置一个构建步骤,以恢复所有解决方案或csproj文件,这些文件将根据您的提要自动进行身份验证。我们还设置了assemblies的版本号,我想消除一个恼人的警告,因此我们当前的调用版本如下所示:

dotnet lambda package
dotnet lambda package ("/p:Version=" + $VersionNumber) "/p:PreserveCompilationContext=false" --msbuild-parameters "--no-restore"
我现在遇到的问题是,传入msbuild参数似乎会将框架设置为以red hat linux(rhel.7.2-x64)为目标,从而导致以下错误:

publish: C:\Program Files\dotnet\sdk\2.1.500\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(198,5): error NETSDK1047: Assets file 'C:\Agent\_work\1\s\Kiosk.Microservice.User.Lambda.Command\obj\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v2.0/rhel.7.2-x64'. Ensure that restore has run and that you have included 'netcoreapp2.0' in the TargetFrameworks for your project. You may also need to include 'rhel.7.2-x64' in your project's RuntimeIdentifiers. [C:\Agent\_work\1\s\Kiosk.Microservice.User.Lambda.Command\Kiosk.Microservice.User.Lambda.Command.csproj]

我非常明确地希望它为dotnetcore2.0构建,所以我实际上不想为red hat linux构建

这就是我当前遇到的问题,好像我没有使用该标志停止未经验证的nuget还原步骤,我收到了未经授权的错误,并且我似乎无法向dotnet.exe传递我的源凭据。如果我使用它为red hat Linux构建的标志,没有任何一致的原因。希望这至少能让你走得更远一点

更新:我现在有我的东西工作。我找到了dotnetcli包装器,
dotnetlambda publish
实际上正在使用它,并在没有中间人的情况下复制了它的步骤。由于不再使用msbuild参数标志,因此它没有尝试在red hat linux中构建它。之后我也必须创建zip文件,但这相当简单。以下是在不使用aws dotnet工具集的情况下生成新包的powershell:

# Run the build that will generate the proper files
dotnet publish --no-restore -f netcoreapp2.0 -c Release

# Create the path to the zip file
$PathToZip = $PathToCSProj + "\bin\Release\netcoreapp2.0\publish"

# Create the zip file
Compress-Archive -Path $PathToZip -DestinationPath ($PathToZip + $csproj[0].Name.trim(".csproj") + ".zip")
我希望这有帮助