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

Docker构建Java Maven项目:AWS CodeArtifact外部访问令牌配置方法

在AWS基础设施外配置Maven settings.xml访问AWS CodeArtifact依赖

1. 生成CodeArtifact临时认证令牌

CodeArtifact的访问令牌是临时的(有效期12小时),需通过AWS CLI生成,执行以下命令(替换占位符为你的实际信息):

aws codeartifact get-authorization-token \
  --domain <你的CodeArtifact域名> \
  --domain-owner <你的AWS账号ID> \
  --region <CodeArtifact所在区域> \
  --query authorizationToken \
  --output text

执行后会输出一串令牌字符串,后续配置会用到。

2. 配置Maven settings.xml

修改你的settings.xml(本地路径一般为~/.m2/settings.xml),添加以下配置:

服务器认证配置(servers节点)

<servers>
  <server>
    <id>codeartifact-repo</id>
    <!-- 用户名固定填aws即可,CodeArtifact会忽略实际用户名,仅校验令牌 -->
    <username>aws</username>
    <!-- 这里替换为第一步生成的令牌 -->
    <password>CODEARTIFACT_AUTH_TOKEN</password>
  </server>
</servers>

仓库配置(repositories节点)

<repositories>
  <repository>
    <!-- **这里的id必须和上面server节点的id完全一致** -->
    <id>codeartifact-repo</id>
    <!-- 替换占位符为你的CodeArtifact仓库URL,格式参考:https://<域名>-<账号ID>.d.codeartifact.<区域>.amazonaws.com/maven/<仓库名>/ -->
    <url>https://your-domain-1234567890.d.codeartifact.us-east-1.amazonaws.com/maven/your-repo/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

3. Docker构建时的安全传递方式

不要硬编码令牌到Dockerfile或settings.xml中,推荐用构建参数动态注入:

  1. 先把settings.xml中的密码替换为占位符:
<password>CODEARTIFACT_PLACEHOLDER</password>
  1. 在Dockerfile中添加以下步骤:
# 定义构建参数接收令牌
ARG CODEARTIFACT_TOKEN
# 复制本地settings.xml到容器的Maven配置目录
COPY settings.xml /root/.m2/settings.xml
# 替换占位符为实际令牌
RUN sed -i "s/CODEARTIFACT_PLACEHOLDER/${CODEARTIFACT_TOKEN}/g" /root/.m2/settings.xml
  1. 执行Docker构建命令时,动态传入令牌:
docker build \
  --build-arg CODEARTIFACT_TOKEN=$(aws codeartifact get-authorization-token --domain <你的域名> --domain-owner <账号ID> --region <区域> --query authorizationToken --output text) \
  -t your-service-image .

注意事项

  • 确保执行AWS CLI的账号拥有codeartifact:GetAuthorizationToken权限,可通过IAM策略配置该权限。
  • 令牌有效期为12小时,过期后需重新生成,可编写脚本自动化这一步骤。
  • 如果你的项目是多模块构建,确保父pom或子模块的依赖声明中,common-utilities的groupId、artifactId、version与上传到CodeArtifact的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:23:24