AWS CodeArtifact Maven部署出现401未授权错误求助
解决AWS CodeArtifact Maven上传401未授权错误
核心问题排查与修复步骤
1. 修复授权令牌环境变量的设置错误
你当前的export命令用了单引号,导致CODEARTIFACT_AUTH_TOKEN变量存储的是命令字符串,而不是实际执行命令生成的令牌。正确写法需用$()包裹命令,让Shell执行并返回结果:
export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain uat-myco --domain-owner domainownerid --region us-east-1 --query authorizationToken --output text)
2. 解决AWS凭证无效问题(UnrecognizedClientException)
直接执行get-authorization-token返回的UnrecognizedClientException是关键线索,说明本地AWS凭证无效:
- 检查
~/.aws/credentials和~/.aws/config文件,确认里面的aws_access_key_id和aws_secret_access_key属于domainownerid账号且未过期 - 若使用临时凭证,需确保
AWS_SESSION_TOKEN环境变量已正确设置 - 执行
aws sts get-caller-identity验证当前凭证,返回正确账号ID则凭证有效,否则重新配置AWS凭证
3. 调整Maven镜像配置,避免全局镜像拦截官方插件
你当前的Maven镜像设置了<mirrorOf>*</mirrorOf>,导致所有依赖(包括Maven官方插件)都尝试从CodeArtifact拉取。若CodeArtifact未代理Maven Central,就会出现插件找不到的错误:
- 方案一:在AWS控制台给CodeArtifact仓库添加Maven Central外部连接
- 方案二:修改镜像规则,只让业务构件走CodeArtifact,官方插件走默认仓库:
<mirrors> <mirror> <id>uat-myco-uat-myco-repository</id> <name>uat-myco-uat-myco-repository</name> <url>https://uat-myco-domainownerid.d.codeartifact.us-east-1.amazonaws.com/maven/uat-myco-repository/</url> <mirrorOf>com.myco*</mirrorOf> <!-- 仅匹配你的业务groupId前缀 --> </mirror> </mirrors>
4. 修正IAM权限配置
你当前的仓库策略仅给root账号授权,需确保实际使用的IAM用户/角色拥有对应权限:
- 给当前IAM用户添加如下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeartifact:GetAuthorizationToken", "codeartifact:PublishPackageVersion", "codeartifact:ReadFromRepository" ], "Resource": "arn:aws:codeartifact:us-east-1:domainownerid:domain/uat-myco/repository/uat-myco-repository" } ] }
5. 清理Maven本地缓存并重新部署
之前的失败请求已被Maven缓存,执行以下命令强制更新并重新部署:
mvn clean deploy:deploy-file -U \ -DgroupId=myco-osgi-bom \ -DartifactId=myco-osgi-bom \ -Dversion=1.0 \ -Dfile=/Users/user/.m2/repository/com/myco/integration/myco-osgi-bom/1.0/myco-osgi-bom-1.0.pom \ -Dpackaging=xml \ -DrepositoryId=uat-myco-uat-myco-repository \ -Durl=https://uat-myco-domainownerid.d.codeartifact.us-east-1.amazonaws.com/maven/uat-myco-repository/
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

