使用命名空间在 AWS ECR 中存储图像

sma*_*sma 11 amazon-web-services amazon-ecr

AWS 声称支持存储库上的命名空间规则,但我不\xe2\x80\x99 不遵循你应该如何设置它们。根据这里的文档:

\n
\n

存储库名称可以支持命名空间,您可以使用命名空间对相似的存储库进行分组。例如,如果有多个团队使用相同的注册表,则团队 A 可以使用 team-a 命名空间,而团队 B 使用 team-b 命名空间。每个团队都可以拥有自己的名为\nweb-app 的映像,但由于它们均以团队名称空间为前缀,\n这两个映像可以同时使用而不会相互干扰。团队 A 的映像将称为 team-a/web-app,而团队 B 的映像将称为 team-b/web-app。

\n
\n

所以我们在注册表中创建了一个存储库<registry ID>.dkr.ecr.<region>.amazonaws.com/mycompany/myproj

\n

基于此,我希望能够在此myproj名称空间中存储多个图像,例如:

\n

<registry ID>.dkr.ecr.<region>.amazonaws.com/mycompany/myproj/imageone:latest

\n

<registry ID>.dkr.ecr.<region>.amazonaws.com/mycompany/myproj/imagetwo:latest

\n

但是,当我尝试推送这些图像之一时,它告诉我该存储库mycompany/myproj/imageone不存在。我不知道为什么它认为这imageone是我的存储库名称的一部分,而不是我的图像名称:标签的一部分。我的存储库命名方式或图像命名/标记方式是否有问题?

\n

Ric*_*yen 26

ECR 不支持“命名空间”作为分层分组概念。虽然 ECR 具有扁平结构,但通常在存储库名称中使用斜杠来组织存储库。

在您的示例中,您将创建两个名称为的存储库:

  1. mycompany/myproj/imageone
  2. mycompany/myproj/imagetwo

然后,您可以使用此命名约定来编写基于身份的策略,例如myproj可以向 IAM 组授予对资源的权限arn:aws:ecr:us-east-1:123456789012:repository/mycompany/myproj/*。除此之外,使用公共前缀没有什么特别的,并且 ECR 认为它们是两个名称恰好相似的存储库。