Amazon ECR 构造库
AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .
该套装包含与亚马逊弹性集装箱登记处合作的构件.
仓库
通过创建新实例定义寄存器 Repository。存储器
持有一个单一容器图像的多面体.
const repository = new ecr.Repository(this, 'Repository');
图像扫描
Amazon ECR图像扫描有助于识别您容器图像中的软件弱点. 你可以手动扫描存储在亚马逊ECR的容器图像,也可以在将图像推入存储库时配置自己的存储库来扫描. 要创建一个新的仓库来扫描按下,只需启用 imageScanOnPush 属性
const repository = new ecr.Repository(this, 'Repo', {
imageScanOnPush: true,
});
创建 onImageScanCompleted 事件规则并触发事件目标
declare const repository: ecr.Repository;
declare const target: SomeTarget;
repository.onImageScanCompleted('ImageScanComplete')
.addTarget(target);
授权托肯
除了亚马逊ECR API,ECR还允许多克CLI或语言特有多克库来推和拉 图像来自 ECR 存储器。 但是,Docker CLI不支持本地IAM认证方法和 必须采取更多步骤,使亚马逊ECR能够认证并授权多克推和拉请求. 更多信息可在 注册认证。 。 。 .
可使用此选项获取 Docker 授权令牌 GetAuthorizationToken ECR API (英语). 以下代码片断
授权一个 IAM 用户访问权限来调用此 API .
const user = new iam.User(this, 'User');
ecr.AuthorizationToken.grantRead(user);
如果您访问图像 公共 ECR 图片库 另外,建议你向登记处认证,以便从 更高的速率和带宽限制.
见
Pricing内 https://aws.amazon.com/blogs/aws/amazon-ecr-public-a-new-public-container-registry/ 互联网档案馆的存檔,存档日期2014-12-02 财务报告和审定财务报表 服务配额。 。 。 .
以下代码片段允许IAM用户访问,以获取公共画廊的授权令牌.
const user = new iam.User(this, 'User');
ecr.PublicGalleryAuthorizationToken.grantRead(user);
该用户随后可以使用其中之一登录登记册 认证方法。 。 。 .
图像标记不可改变性
您可以使用 imageTagMutability 构造道具.
new ecr.Repository(this, 'Repo', { imageTagMutability: ecr.TagMutability.IMMUTABLE });
加密
默认情况下,Amazon ECR使用服务器侧加密,使用Amazon S3管理的加密密钥在休息时使用AES-256加密算法加密您的数据. 为了对您的亚马逊ECR寄存器的加密进行更多的控制,可以使用存储在AWS密钥管理服务(AWS KMS)中的KMS密钥进行服务器侧加密. 更多信息,请访问 ECR 开发者指南。 。 。 .
当您使用 AWS KMS 加密您的数据时, 您可以使用默认的 AWS 管理密钥, 由 Amazon ECR 管理, 通过指定 RepositoryEncryption.KMS 输入 encryption 属性。 或指定客户管理 KMS 密钥 encryptionKey 属性.
何时 encryptionKey 设定了 encryption 属性必须是 KMS 或为空.
在这种情况下 encryption 设置为 KMS 但是没有 encryptionKey 设置,使用 AWS 管理的 KMS 密钥.
new ecr.Repository(this, 'Repo', {
encryption: ecr.RepositoryEncryption.KMS
});
否则,如果 encryptionKey 设定和 encryption 可选设置为 KMS。 。 。 .
import * as kms from '@aws-cdk/aws-kms';
new ecr.Repository(this, 'Repo', {
encryptionKey: new kms.Key(this, 'Key'),
});
自动清理仓库
您可以设置生命周期规则, 自动清理您的旧图像 仓库。 将应用匹配图像的第一个生命周期规则 反倒那个形象。 例如,以下删除比 30天,同时将所有图像贴上斜体标记(注意顺序) 这里很重要:
declare const repository: ecr.Repository;
repository.addLifecycleRule({ tagPrefixList: ['prod'], maxImageCount: 9999 });
repository.addLifecycleRule({ maxImageAge: Duration.days(30) });