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

在本地Dockerfile中使用AWS CodeArtifact遇401错误,求解决方法

解决Docker中AWS CodeArtifact 401未授权问题

方案1:构建时注入临时令牌

  • 本地先获取CodeArtifact令牌:
    aws codeartifact get-authorization-token --domain <你的域名> --domain-owner <AWS账号ID> --query authorizationToken --output text
    
  • 构建镜像时通过--build-arg传入令牌:
    docker build --build-arg CODEARTIFACT_TOKEN=<刚才获取的令牌> -t <你的镜像名称> .
    
  • 修改Dockerfile,添加参数并配置yarn仓库:
    ARG CODEARTIFACT_TOKEN
    # 替换成你的CodeArtifact仓库地址
    RUN yarn config set registry https://<域名>-<账号ID>.d.codeartifact.<区域>.amazonaws.com/npm/<仓库名>/
    RUN yarn config set //<域名>-<账号ID>.d.codeartifact.<区域>.amazonaws.com/npm/<仓库名>/:_authToken $CODEARTIFACT_TOKEN
    RUN yarn install --frozen-lockfile
    
    注意:令牌有效期12小时,每次构建前需重新获取。

方案2:挂载本地AWS凭证到容器(仅本地开发场景)

  • 容器运行时挂载本地AWS配置目录(Windows路径):
    docker run -v %USERPROFILE%\.aws:/root/.aws <你的镜像名称>
    
  • 修改Dockerfile,先安装AWS CLI,再自动获取令牌并配置yarn:
    # 基于Debian/Ubuntu镜像安装AWS CLI
    RUN apt-get update && apt-get install -y awscli
    # 基于Alpine镜像则用:RUN apk add --no-cache aws-cli
    
    # 替换成你的CodeArtifact信息
    RUN aws codeartifact get-authorization-token --domain <域名> --domain-owner <账号ID> --query authorizationToken --output text > /tmp/token && \
        yarn config set registry https://<域名>-<账号ID>.d.codeartifact.<区域>.amazonaws.com/npm/<仓库名>/ && \
        yarn config set //<域名>-<账号ID>.d.codeartifact.<区域>.amazonaws.com/npm/<仓库名>/:_authToken $(cat /tmp/token) && \
        yarn install --frozen-lockfile
    

方案3:绑定IAM角色(AWS云环境构建场景)

如果在ECS、EKS等AWS容器服务中构建镜像,给任务或Pod绑定具备codeartifact:GetAuthorizationToken权限的IAM角色,容器内可自动获取凭证,无需手动传入令牌。Dockerfile中直接执行方案2里的令牌获取和yarn配置命令即可。

注意事项

  • 确保CodeArtifact仓库地址完全正确,包括域名、账号ID、区域、仓库名,避免拼写错误。
  • Windows环境下注意命令行路径格式,PowerShell中需用$env:USERPROFILE替代%USERPROFILE%。
  • 本地能正常运行说明AWS凭证权限没问题,容器中需确保凭证挂载路径或IAM角色配置正确。

内容的提问来源于stack exchange,提问作者Chief

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:13