You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amplify构建React应用连接CodeArtifact私有npm包时出现401 Unauthorized错误求助

解决Amplify构建中CodeArtifact私有包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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:37:38