amazon-web-services - Jenkins:使用 AWS CLI 命令运行 Windows Powershell 脚本的问题
问题描述
全部。我是与 Jenkins 合作的新手,我将感谢您的帮助。
我有一个“build&publishLambda.ps1”powershell 脚本,用于将压缩的 Lambda 代码推送到 AWS S3 并更新 Lambda 以使用新的代码版本。在此脚本中,我使用以下命令为会话获取正确的 AWS 凭证:
try {
Initialize-AWSDefaultConfiguration -ProfileName <Profile> -Region <Region>
Write-Host "STEP 1: Authorization for accessing S3 was successfull." -ForegroundColor green `n
}
catch {
Write-Host $_ -ForegroundColor red `n
Write-Error "STEP 1: Authorization for accessing S3 failed." -ErrorAction:Stop
}
当我在本地运行此脚本时 - 一切正常。
此外,我有一个 Jenkins 构建作业,其中包含一个调用此 powershell 脚本的步骤(启用了“错误停止”和“使用 PowerShell 配置文件”)。我在 Jenkins 服务器机器上创建了相同的 AWS 配置文件 + 当我在 Jenkins 服务器上手动运行此脚本时,一切也都很好。
但是当我在 Jenkins 构建步骤中调用脚本时:
. "$ENV:WORKSPACE\build&publishLambda.ps1" -env dev
我收到以下错误:
16:17:29 [Project] $ powershell.exe -NonInteractive -ExecutionPolicy Bypass -File C:\Windows\TEMP\jenkins2516545345990457969.ps1
16:17:48 Windows PowerShell is in NonInteractive mode. Read and Prompt functionality is not available.
16:17:48
16:17:48 C:\Program Files (x86)\Jenkins\workspace\Project\build&publishLamdba.ps1 : STEP 1: Authorization for accessing S3 failed.
16:17:48 At C:\Windows\TEMP\jenkins2516545345990457969.ps1:2 char:1
16:17:48 + . "$ENV:WORKSPACE\build&publishLamdba.ps1" -env dev
16:17:48 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16:17:48 + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
16:17:48 + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,build&publishLamdba.ps1
16:17:48
16:17:48 Build step 'PowerShell' marked build as failure
请你弄清楚我做错了什么,错误的原因是什么以及如何解决这个问题。提前致谢
解决方案
Alex B 的第一条评论解决了我的问题。这里是:
“看起来您需要为执行 Jenkins 任务的实例分配一个 AWS 实例角色(首选方式,但有点复杂,请参阅https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles- for-amazon-ec2.html)或在实例中包含短期 AWS 凭证(请参阅https://docs.aws.amazon.com/cli/latest/reference/sts/)并将临时凭证设为公共环境变量(请参阅https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html:公开 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION)“
推荐阅读
- android - 使用分页架构组件调试分页
- database-administration - ArangoDB 按需压缩文件空间回收的最佳实践
- javascript - 不变违规:元素类型无效:期望字符串或类/函数,但得到:对象。检查渲染方法
- python - 多步预测 LSTM 模型
- java - 在 DropWizard 中禁用 Swagger Bundle
- sql - 在满足条件之前如何获取最新数据?[SQL]
- c# - 如何设置默认值而不是从 Create-View 的下拉列表中选择
- apache-spark - 为什么在 PySpark 中使用 UDF 而不是 Function?
- c# - 我怎样才能拥有一个包含两个 .Net Core 项目的解决方案并使用两个 Startup.cs 文件来设置服务?
- visual-studio - LLVM 7.0 在 Visual Studio 2015 上不提供特定的平台工具集