Gitlab Runner无法获取IAM角色:默认配置文件(default)未找到
解决GitLab Runner执行AWS命令提示找不到default配置文件的问题
排查方向及解决步骤
1. 修正文件权限
userdata以root身份执行,生成的/home/gitlab-runner/.aws/config文件所有者和组可能为root,导致gitlab-runner用户无法读取。执行以下命令修正权限:
chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/.aws chmod 600 /home/gitlab-runner/.aws/config chmod 700 /home/gitlab-runner/.aws
2. 确认配置文件存在且内容正确
登录EC2实例,检查文件是否存在并验证内容:
cat /home/gitlab-runner/.aws/config
如果.aws目录不存在,先创建再写入配置:
mkdir -p /home/gitlab-runner/.aws cat << EOF > /home/gitlab-runner/.aws/config [default] role_arn=arn:aws:iam::123456789012:role/gitlabrunner credential_source=Ec2InstanceMetadata region=us-east-1 EOF
执行完后再运行权限修正命令。
3. 为GitLab Runner配置环境变量
编辑GitLab Runner的配置文件(通常路径为/etc/gitlab-runner/config.toml),为runner添加指定AWS配置文件路径的环境变量:
[[runners]] # 保留现有其他配置 environment = ["AWS_CONFIG_FILE=/home/gitlab-runner/.aws/config", "AWS_DEFAULT_REGION=us-east-1"]
修改完成后重启GitLab Runner服务:
gitlab-runner restart
4. 更简便的替代方案:直接为EC2实例附加IAM角色
无需手动配置aws config文件,直接给EC2实例附加gitlabrunner IAM角色:
- 进入AWS EC2控制台,找到目标实例
- 选择「动作」→「安全」→「修改IAM角色」
- 选中
gitlabrunner角色并保存
GitLab Runner执行AWS命令时会自动从实例元数据获取凭证,无需额外配置。
内容的提问来源于stack exchange,提问作者Judi
相关产品推荐
相关产品推荐

