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

如何跨账号调用aws ecr describe-repositories查询ECR仓库列表

核心说明

aws ecr describe-repositories 接口默认返回调用凭证所属账号下的ECR仓库列表,没有直接传入目标账号ID即可拉取对方全量仓库的参数,直接执行命令仅返回当前账号结果是接口本身的逻辑限制,并非漏填参数。

实现方式

查询目标账号全量ECR仓库列表

全量列举必须通过跨账号角色扮演的方式实现,操作步骤:

  • 在目标AWS账号中提前创建IAM角色:
    • 信任策略配置为允许当前EC2实例绑定的角色作为可信实体代入
    • 权限策略附加AmazonEC2ContainerRegistryReadOnly托管策略,或自定义包含ecr:DescribeRepositories等所需ECR操作权限的自定义策略
  • 在当前EC2实例中执行STS命令代入目标账号角色,获取临时访问凭证:
aws sts assume-role \
  --role-arn arn:aws:iam::<目标账号12位ID>:role/<目标账号内创建的跨账号访问角色名> \
  --role-session-name cross-account-ecr-query
  • 将返回结果中的AccessKeyId、SecretAccessKey、SessionToken配置为当前终端的临时环境变量,或直接作为参数传入后续AWS CLI命令
  • 执行原查询命令即可拿到目标账号下的全量ECR仓库列表:
aws ecr --region <my_region> describe-repositories

查询目标账号下指定名称的ECR仓库详情

如果已知目标账号下的ECR仓库名称,无需列举全量,可直接加--registry-id参数指定目标账号ID查询(前提是已配置对应跨账号访问权限),命令示例:

aws ecr describe-repositories \
  --region <my_region> \
  --registry-id <目标账号12位ID> \
  --repository-names <仓库名1> <仓库名2>

注意:--registry-id参数不支持在不指定仓库名的情况下拉取全量仓库列表,必须传入具体仓库名才能返回对应结果,无法满足全量列举需求。

补充

后续拉取目标账号ECR仓库中的Docker镜像时,登录命令同样需要指定--registry-id为目标账号ID:

aws ecr get-login-password --region <my_region> --registry-id <目标账号12位ID> | docker login --username AWS --password-stdin <目标账号ID>.dkr.ecr.<my_region>.amazonaws.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:24:26