切换IAM角色后git-remote-codecommit访问CodeCommit遇403错误求助
解决CodeCommit HTTPS Git克隆403错误(使用带MFA的IAM角色)
你的问题核心是Git的CodeCommit HTTPS凭证助手默认不会自动识别需要切换角色+MFA的AWS CLI配置文件,导致克隆时未使用Admin角色的权限,返回403。以下是几种实用的解决方式:
方法一:手动获取临时凭证并设置环境变量
- 先通过AWS CLI获取Admin角色的临时凭证,输入MFA令牌完成验证:
aws sts assume-role --role-arn arn:aws:iam::123456:role/AdminAccess --role-session-name git-codecommit --serial-number arn:aws:iam::123456:mfa/s.parthiva --token-code <你的MFA令牌>
执行后会返回包含AccessKeyId、SecretAccessKey、SessionToken的JSON结果。
- 将临时凭证设置为环境变量(Git凭证助手会读取这些变量):
export AWS_ACCESS_KEY_ID=<返回的临时AccessKeyId> export AWS_SECRET_ACCESS_KEY=<返回的临时SecretAccessKey> export AWS_SESSION_TOKEN=<返回的临时SessionToken>
- 执行Git克隆命令:
git clone codecommit::eu-central-1://test-repo
方法二:配置Git直接使用Admin配置文件(利用AWS CLI凭证缓存)
- 配置Git的凭证助手关联Admin配置文件:
git config --global credential.helper '!aws codecommit credential-helper --profile admin $@' git config --global credential.UseHttpPath true
- 触发AWS CLI缓存Admin角色的临时凭证(需要输入MFA令牌):
aws s3 ls --profile admin
验证成功后,AWS CLI会自动缓存临时凭证(默认有效期1小时)。
- 直接执行Git克隆命令即可:
git clone codecommit::eu-central-1://test-repo
注意事项
- 确保你的IAM用户
parthiva所在用户组拥有sts:AssumeRole权限,且目标Admin角色的信任策略允许该用户/用户组切换(你当前的配置能执行aws s3 ls --profile admin,说明这部分是正常的)。 - 临时凭证过期后,需要重新触发MFA验证来获取新的凭证缓存。
内容的提问来源于stack exchange,提问作者Parthiva
相关产品推荐
相关产品推荐

