Amplify构建React应用连接CodeArtifact私有npm包时出现401 Unauthorized错误求助
我之前在Amplify项目里对接CodeArtifact私有npm包时也碰到过一模一样的401问题,结合你的配置情况,给你几个实用的排查和解决方向:
1. 确保Yarn同步CodeArtifact的npm配置
你用aws codeartifact login --tool npm只会生成npm的.npmrc配置,但Yarn有时候不会自动同步这个设置,导致安装时还是走默认的公共npm源。可以在preBuild里显式让Yarn复用npm的注册表配置:
preBuild: commands: - aws codeartifact login --tool npm --repository myrepo --domain mydomain --namespace mynamespace --domain-owner myid --region <你的CodeArtifact所在区域> - yarn config set registry $(npm config get registry) - yarn install
另外一定要加上--region参数,CodeArtifact是区域级服务,不指定区域会导致凭证和仓库不匹配。
2. 调试构建环境的配置有效性
在构建流程里加几个调试命令,确认CodeArtifact登录是否真的生效了。比如在yarn install前插入:
- npm config list - yarn config list
查看构建日志时重点检查:
registry字段是否正确指向你的CodeArtifact仓库地址- 是否存在
_auth或//<CodeArtifact域名>:_authToken这类凭证字段
如果这些字段缺失,说明aws codeartifact login命令没有正确生成配置,大概率是区域指定错误或者角色权限的细节问题。
3. 细化Amplify角色的权限配置
虽然你已经附加了策略,但可以做两个小调整排查:
- 把
Resource: "*"换成目标CodeArtifact仓库的具体ARN(比如arn:aws:codeartifact:<区域>:<账号ID>:repository/<域名>/<仓库名>),避免权限范围的潜在问题 - 确认
sts:GetServiceBearerToken的Condition里,sts:AWSServiceName确实是codeartifact.amazonaws.com,拼写不能错
4. 排除本地配置的干扰
如果你的项目根目录存在.npmrc或.yarnrc文件,可能会覆盖Amplify构建环境中的动态配置。可以在preBuild最开头加命令删除这些文件:
- rm -f .npmrc .yarnrc
避免本地的硬编码配置干扰构建流程。
5. 用npm代替Yarn做测试
如果以上方法都没效果,可以临时把yarn install换成npm install,看看是否能成功安装依赖。如果npm能正常跑通,说明问题出在Yarn对CodeArtifact配置的处理逻辑上,可以进一步排查Yarn版本或者单独配置Yarn的CodeArtifact登录。
内容的提问来源于stack exchange,提问作者Vector-Hector
相关产品推荐
相关产品推荐

