将 Docker Scout 与 Amazon ECR 集成
将 Docker Scout 与 Amazon Elastic Container Registry (ECR) 集成后,您可以查看托管在 ECR 仓库中的镜像的镜像洞察。将 Docker Scout 与 ECR 集成并为仓库激活 Docker Scout 后,将镜像推送到仓库会自动触发镜像分析。您可以使用 Docker Scout 仪表板或 `docker scout` CLI 命令查看镜像洞察。
工作原理
为了帮助您将 Docker Scout 与 ECR 集成,您可以使用 CloudFormation 堆栈模板来创建和配置必要的 AWS 资源,以便将 Docker Scout 与您的 ECR 注册表集成。有关 AWS 资源的更多详细信息,请参阅CloudFormation 堆栈模板。
下图显示了 Docker Scout ECR 集成的工作原理。

集成后,Docker Scout 会自动拉取并分析您推送到 ECR 注册表的镜像。您的镜像的元数据存储在 Docker Scout 平台上,但 Docker Scout 不存储容器镜像本身。有关 Docker Scout 如何处理镜像数据的更多信息,请参阅数据处理。
CloudFormation 堆栈模板
下表描述了配置资源。
注意创建这些资源会在 AWS 账户上产生少量经常性费用。表中“**成本**”列表示在集成每天推送 100 个镜像的 ECR 注册表时,这些资源的估计每月成本。
此外,当 Docker Scout 从 ECR 拉取镜像时,还会产生出口费用。出口费用约为每 GB 0.09 美元。
| 资源类型 | 资源名称 | 描述 | 费用 |
|---|---|---|---|
AWS::SNSTopic::Topic | SNSTopic | 用于在 AWS 资源创建后通知 Docker Scout 的 SNS 主题。 | 免费 |
AWS::SNS::TopicPolicy | TopicPolicy | 定义初始设置通知的主题。 | 免费 |
AWS::SecretsManager::Secret | ScoutAPICredentials | 存储 EventBridge 用于触发事件到 Scout 的凭证。 | $0.42 |
AWS::Events::ApiDestination | ApiDestination | 设置 EventBridge 到 Docker Scout 的连接,用于发送 ECR 推送和删除事件。 | $0.01 |
AWS::Events::Connection | Connection | EventBridge 连接到 Scout 的凭证。 | 免费 |
AWS::Events::Rule | DockerScoutEcrRule | 定义将 ECR 推送和删除事件发送到 Scout 的规则。 | 免费 |
AWS::Events::Rule | DockerScoutRepoDeletedRule | 定义将 ECR 仓库删除事件发送到 Scout 的规则。 | 免费 |
AWS::IAM::Role | InvokeApiRole | 授予事件访问 `ApiDestination` 的内部角色。 | 免费 |
AWS::IAM::Role | AssumeRoleEcrAccess | 此角色拥有访问 `ScoutAPICredentials` 的权限,用于设置 Docker Scout 集成。 | 免费 |
集成您的第一个注册表
在您的 AWS 账户中创建 CloudFormation 堆栈以启用 Docker Scout 集成。
先决条件
- 您必须拥有具有创建资源权限的 AWS 账户。
- 您必须是 Docker 组织的所有者。
创建堆栈
转到 Docker Scout 仪表板上的ECR 集成页面。
选择“**在 AWS 上创建**”按钮。
这将在新的浏览器选项卡中打开 AWS CloudFormation 控制台中的“**创建堆栈**”向导。如果您尚未登录 AWS,则会先重定向到登录页面。
如果按钮呈灰色,则表示您在 Docker 组织中缺少必要的权限。
按照“**创建堆栈**”向导中的步骤直到结束。选择要集成的 AWS 区域。通过创建资源来完成该过程。
向导中的字段已由 CloudFormation 模板预填充,因此您无需编辑任何字段。
当资源创建完成后(AWS 控制台中的 CloudFormation 状态显示 `CREATE_COMPLETE`),返回 Docker Scout 仪表板中的 ECR 集成页面。
“**已集成注册表**”列表显示了您刚刚集成的 ECR 注册表的账户 ID 和区域。如果成功,集成状态为“**已连接**”。
ECR 集成现已激活。要让 Docker Scout 开始分析注册表中的镜像,您需要为仓库设置中的每个仓库激活它。
激活仓库后,您推送的镜像将由 Docker Scout 分析。分析结果将显示在 Docker Scout 仪表板中。如果您的仓库已经包含镜像,Docker Scout 将自动拉取并分析最新的镜像版本。
集成额外的注册表
添加额外的注册表
转到 Docker Scout 仪表板上的ECR 集成页面。
选择列表顶部的“**添加**”按钮。
完成创建 AWS 资源的步骤。
资源创建完成后,返回 Docker Scout 仪表板中的 ECR 集成页面。
“**已集成注册表**”列表显示了您刚刚集成的 ECR 注册表的账户 ID 和区域。如果成功,集成状态为“**已连接**”。
接下来,在仓库设置中为要分析的仓库激活 Docker Scout。
移除集成
要移除已集成的 ECR 注册表,您必须是 Docker 组织的所有者。
转到 Docker Scout 仪表板上的ECR 集成页面。
在已集成注册表列表中找到要移除的注册表,然后选择“**操作**”列中的移除图标。
如果移除图标被禁用,则表示您在 Docker 组织中缺少必要的权限。
在打开的对话框中,通过选择“**移除**”进行确认。
重要从 Docker Scout 仪表板移除集成不会移除您账户中的 AWS 资源。
在 Docker Scout 中移除集成后,转到 AWS 控制台并删除您要移除的集成的 **DockerScoutECRIntegration** CloudFormation 堆栈。
故障排除
无法集成注册表
在 Docker Scout 仪表板上的ECR 集成页面上检查集成的**状态**。
如果状态长时间显示为**待处理**,则表明 AWS 端尚未完成集成。选择**待处理**链接以打开 CloudFormation 向导,并完成所有步骤。
**错误**状态表示后端出现问题。您可以尝试移除集成并重新创建。
ECR 镜像未在仪表板中显示
如果您的 ECR 镜像的镜像分析结果未显示在 Docker Scout 仪表板中
请确保您已为仓库激活了 Docker Scout。在仓库设置中查看和管理活动仓库。
确保您的注册表的 AWS 账户 ID 和区域已列在 ECR 集成页面上。
账户 ID 和区域包含在注册表主机名中:`<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>`