gpt4 book ai didi

aws-lambda - 为什么 'dotnet lambda deploy-function' 不能从 Azure DevOps 工件源中提取包?

转载 作者:行者123 更新时间:2023-12-03 16:31:57 25 4
gpt4 key购买 nike

我在 Azure DevOps 中使用 AWS deploy lambda 任务。在部署的 lambda 函数中,它被设置为从同一 Azure DevOps 存储库/安装中的工件源中提取包。

如果我在之前的部署步骤中运行 NuGet restore,那么可以正常访问包,但是当它到达 AWS Lambda .NET Core Deployment 步骤时尝试从同一提要读取时收到 401。

有谁知道如何配置 lambda 发布步骤以成功读取自定义源?

具体错误是:

Response status code does not indicate success: 401

最佳答案

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

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

dotnet lambda package

结果包通常会在项目下的 bin/release 文件夹中生成。

这让您可以做的是将参数 --msbuild-parameters "--no-restore" 添加到打包过程中,这不会触发自动恢复步骤。在 Azure DevOps Build Pipelines 内部,你可以在它之前设置一个构建步骤来恢复所有解决方案或 csproj 文件,这些文件将自动根据你的源进行身份验证。我们还设置了组件的版本号,我想摆脱烦人的警告,所以我们当前版本的调用如下所示:

dotnet lambda package ("/p:Version=" + $VersionNumber) "/p:PreserveCompilationContext=false" --msbuild-parameters "--no-restore"

我现在遇到的问题是,传入 msbuild-parameters 似乎将框架设置为以 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 构建的标志。希望这至少能让你走得更远!

更新:我现在可以正常工作了。我去发现了 dotnet lambda publishthe git repository for the toolset 中实际使用的 dotnet cli 包装器并在没有中间人的情况下重复其步骤。因为不再使用 msbuild-parameters 标志,所以它没有尝试在 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")

希望对您有所帮助!

关于aws-lambda - 为什么 'dotnet lambda deploy-function' 不能从 Azure DevOps 工件源中提取包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496007/

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