AWS CodeArtifact执行mvn deploy:deploy-file返回401 Unauthorized排查
AWS CodeArtifact Maven 部署401未授权错误排查思路
一、Maven 配置校验
- 校验
~/.m2/settings.xml中server标签的id属性,和部署命令/pom.xml中指定的仓库id 完全一致,大小写、特殊字符不能有任何偏差,id不匹配会导致Maven无法读取对应授权配置,是401问题的高发原因 - 确认密码配置格式正确,Maven读取环境变量的标准写法为
${env.CODEARTIFACT_AUTH_TOKEN},不要遗漏env.前缀,也不要写错环境变量名称 - 排查全局配置覆盖问题:检查Maven安装目录下
conf/settings.xml是否存在相同id的server配置,全局配置优先级高于用户目录下的配置,会导致自定义授权不生效
二、令牌与权限校验
- 手动验证令牌有效性:执行curl命令直接验证令牌权限,命令格式为
curl -u aws:${CODEARTIFACT_AUTH_TOKEN} <你的CodeArtifact仓库地址>,如果返回401说明令牌本身无效,需要重新执行生成令牌的命令 - 确认身份匹配:检查生成令牌时使用的AWS身份ARN,是否在CodeArtifact域、仓库的资源策略允许的主体列表内,跨账号使用场景下需要同时配置域级和仓库级的权限,缺少任意一级都会触发授权失败
- 校验权限策略明细:确认策略中明确开放了
codeartifact:PublishPackageVersion、codeartifact:PutPackageMetadata两个部署必备操作,仅配置模糊的读写权限描述不代表实际开放了对应操作权限
三、部署命令校验
- 检查部署命令中指定的仓库地址是否和CodeArtifact控制台给出的地址完全匹配,不要遗漏路径后缀、域所有者账号ID、区域信息等字段
- 确认
mvn deploy:deploy-file命令中指定了-DrepositoryId参数,且参数值和settings.xml中的server id完全一致
内容的提问来源于stack exchange,提问作者Pierre
相关产品推荐
相关产品推荐

