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

无法安装AWS CLI时,如何通过API生成Amazon ECR登录密码?

无需AWS CLI获取Amazon ECR登录凭证的方法

aws ecr get-login-password底层其实就是调用AWS的ECR GetAuthorizationToken API,完全可以直接通过HTTP请求或者AWS SDK来替代,具体方法如下:

一、直接调用HTTP REST API

ECR的GetAuthorizationToken API需要通过AWS Signature Version 4进行身份验证,步骤如下:

  1. 构造请求:

    • 请求端点格式:https://api.ecr.<你的区域>.amazonaws.com/
    • 请求方法:POST
    • 必要请求头:
      • X-Amz-Target: AmazonEC2ContainerRegistry_V20150921.GetAuthorizationToken
      • Content-Type: application/x-amz-json-1.1
      • 包含AWS签名信息的Authorization头(签名逻辑遵循AWS SigV4标准)
    • 请求体:空JSON {} 即可,若需指定特定仓库账户,可传{"registryIds": ["你的AWS账户ID"]}
  2. 处理响应:
    API返回的authorizationData数组中,authorizationToken字段是Base64编码的字符串,解码后格式为AWS:<临时登录密码>。只需提取冒号后的部分,就是Docker登录ECR所需的密码。

示例curl请求(已省略签名细节,实际需自行生成有效签名):

curl -X POST \
  -H "X-Amz-Target: AmazonEC2ContainerRegistry_V20150921.GetAuthorizationToken" \
  -H "Content-Type: application/x-amz-json-1.1" \
  -H "Authorization: AWS4-HMAC-SHA256 Credential=AKIAEXAMPLE/20240520/us-east-1/ecr/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature=abc123..." \
  -d "{}" \
  https://api.ecr.us-east-1.amazonaws.com/

提取密码的命令:

echo "<返回的authorizationToken值>" | base64 -d | cut -d: -f2

二、使用AWS SDK调用

如果环境能安装对应语言的AWS SDK,这是更简单的方式,SDK会自动处理签名和请求细节。以Python的boto3为例:

import boto3
import base64

# 初始化ECR客户端,指定区域
ecr_client = boto3.client('ecr', region_name='us-east-1')
# 调用GetAuthorizationToken API
response = ecr_client.get_authorization_token()

# 解析并提取登录密码
auth_token = response['authorizationData'][0]['authorizationToken']
decoded_token = base64.b64decode(auth_token).decode('utf-8')
docker_login_password = decoded_token.split(':')[1]

print(docker_login_password)

注意事项

  • 调用API的IAM实体(用户/角色)必须拥有ecr:GetAuthorizationToken权限
  • 生成的临时密码有效期为12小时,过期后需重新调用API获取
  • 不同区域的ECR需使用对应区域的API端点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:05:18