将 Docker Scout 与 Amazon ECR 集成
通过将 Docker Scout 与 Amazon Elastic Container Registry (ECR) 集成,您可以查看 ECR 存储库中托管的映像的映像洞察。将 Docker Scout 与 ECR 集成并为存储库激活 Docker Scout 后,将镜像推送到存储库会自动触发镜像分析。您可以使用 Docker Scout Dashboard 或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 | 设置与 Docker Scout 的 EventBridge 连接以发送 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 模板预先填充,因此您无需编辑任何字段。
创建资源后(CloudFormation 状态显示
CREATE_COMPLETE
在 AWS 控制台中),返回到 Docker Scout 仪表板中的 ECR 集成页面。集成注册表列表显示您刚刚集成的 ECR 注册表的帐户 ID 和区域。如果成功,集成状态为Connected。
ECR 集成现已激活。为了让 Docker Scout 开始分析注册表中的镜像,您需要在 存储库设置中为每个存储库激活它。
激活存储库后,您推送的镜像将由 Docker Scout 进行分析。分析结果显示在 Docker Scout Dashboard 中。如果您的存储库已包含映像,Docker Scout 会自动提取并分析最新的映像版本。
集成额外的注册表
要添加其他注册表:
转到 Docker Scout 仪表板上的ECR 集成页面。
选择列表顶部的“添加”按钮。
完成创建 AWS 资源的步骤。
创建资源后,返回 Docker Scout 仪表板中的 ECR 集成页面。
集成注册表列表显示您刚刚集成的 ECR 注册表的帐户 ID 和区域。如果成功,集成状态为Connected。
接下来,在存储库设置中为要分析的存储库激活 Docker Scout 。
删除集成
要删除集成的 ECR 注册表,您必须是 Docker 组织的所有者。
转到 Docker Scout 仪表板上的ECR 集成页面。
在集成注册表列表中找到要删除的注册表,然后选择操作列中的删除图标。
如果删除图标被禁用,则意味着您在 Docker 组织中缺乏必要的权限。
在打开的对话框中,选择“删除”进行确认。
重要的
从 Docker Scout 仪表板删除集成不会删除您账户中的 AWS 资源。
删除 Docker Scout 中的集成后,转到 AWS 控制台并删除要删除的集成的DockerScoutECRIntegration CloudFormation 堆栈。
故障排除
无法集成注册表
在 Docker Scout 仪表板的ECR 集成页面上检查集成 状态。
如果状态长时间为Pending ,则表明 AWS 端尚未完成集成。选择“待处理”链接以打开 CloudFormation 向导,并完成所有步骤。
错误状态表明后端出现问题。您可以尝试 删除集成并再次重新创建。
ECR 图像未显示在仪表板中
如果 ECR 映像的映像分析结果未显示在 Docker Scout 仪表板中:
确保您已为存储库激活 Docker Scout。在存储库设置中查看和管理活动存储库 。
确保您的注册表的 AWS 账户 ID 和区域列在 ECR 集成页面上。
帐户 ID 和区域包含在注册表主机名中:
<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>