You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Go程序在Jenkins中无法读取自定义credentials.ini获取账号ID

问题:Go脚本在Jenkins环境中无法正确指定AWS配置文件执行操作
  • 我的Go语言脚本用于对AWS Lambda执行读取/删除操作,支持通过--profile <profile_name>参数指定AWS配置文件,例如执行命令:./golang-binary --profile stage -r us-east-1
  • 脚本在本地Mac环境运行正常,但在Jenkins环境中,即使指定--profile stage,仍会使用Jenkins默认配置文件
  • Jenkins采用基于角色的访问方式(不存储AWS密钥),不同账号通过EC2实例元数据的凭证文件选择不同配置文件
  • 需求:让代码读取应用目录下的credentials.ini文件中指定的配置文件并创建会话,而非直接调用STS的GetCallerIdentity函数

当前代码问题

当前代码的getAccountID函数通过STS的GetCallerIdentity获取账号ID,导致Jenkins环境中获取的是Jenkins默认身份,而非指定配置文件对应的账号。

credentials.ini文件格式

[profile-1]
region            = region-1
credential_source = Ec2InstanceMetadata
role_arn          = arn:aws:iam::<accountID-1>:role/jenkins_role

[profile-2]
region            = region-2
credential_source = Ec2InstanceMetadata
role_arn          = arn:aws:iam::<accountID-2>:role/jenkins_role

尝试解决后的报错

尝试通过--role-arn-file参数指定AWS凭证文件时,出现以下错误:

E0623 14:38:02.301269    5498 main.go:335] Failed to assume role: InvalidParameter: 1 validation error(s) found.
- minimum field size of 20, AssumeRoleInput.RoleArn.
E0623 14:38:02.301298    5498 main.go:96] Failed to getAccountID: InvalidParameter: 1 validation error(s) found.
- minimum field size of 20, AssumeRoleInput.RoleArn.

不清楚解析过程中出现了什么问题。


内容的提问来源于stack exchange,提问作者jeez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:07:28