将 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 堆栈模板,该模板创建并配置将 Docker Scout 与您的 ECR 注册表集成的必要 AWS 资源。有关 AWS 资源的更多详细信息,请参阅CloudFormation 堆栈模板

下图显示了 Docker Scout ECR 集成的工作原理。

How the ECR integration works

集成后,Docker Scout 会自动提取和分析您推送到 ECR 注册表的镜像。有关您镜像的元数据存储在 Docker Scout 平台上,但 Docker Scout 本身不存储容器镜像。有关 Docker Scout 如何处理镜像数据的更多信息,请参阅数据处理

CloudFormation 堆栈模板

下表描述了配置资源。

注意

创建这些资源会在 AWS 账户上产生少量经常性费用。“成本”列中的表格代表在集成每天推送 100 个镜像的 ECR 注册表时的资源估计每月成本。

此外,当 Docker Scout 从 ECR 提取镜像时,还会产生出口费用。出口费用约为每 GB 0.09 美元。

资源类型资源名称说明成本
AWS::SNSTopic::TopicSNSTopicSNS 主题,用于在创建 AWS 资源时通知 Docker Scout。免费
AWS::SNS::TopicPolicyTopicPolicy定义初始设置通知的主题。免费
AWS::SecretsManager::SecretScoutAPICredentials存储 EventBridge 用于向 Scout 触发事件的凭据。$0.42
AWS::Events::ApiDestinationApiDestination设置 EventBridge 与 Docker Scout 的连接,用于发送 ECR 推送和删除事件。$0.01
AWS::Events::ConnectionConnectionEventBridge 连接到 Scout 的凭据。免费
AWS::Events::RuleDockerScoutEcrRule定义将 ECR 推送和删除发送到 Scout 的规则。免费
AWS::Events::RuleDockerScoutRepoDeletedRule定义将 ECR 存储库删除发送到 Scout 的规则。免费
AWS::IAM::RoleInvokeApiRole内部角色,用于授予事件对 ApiDestination 的访问权限。免费
AWS::IAM::RoleAssumeRoleEcrAccess此角色有权访问 ScoutAPICredentials,用于设置 Docker Scout 集成。免费

集成您的第一个注册表

在您的 AWS 账户中创建 CloudFormation 堆栈以启用 Docker Scout 集成。

先决条件

  • 您必须有权访问具有创建资源权限的 AWS 账户。
  • 您必须是 Docker 组织的所有者。

创建堆栈

  1. 转到 Docker Scout 仪表盘上的ECR 集成页面

  2. 选择“在 AWS 上创建”按钮。

    这会在新的浏览器选项卡中打开 AWS CloudFormation 控制台中的“创建堆栈”向导。如果您尚未登录 AWS,则会先重定向到登录页面。

    如果按钮显示为灰色,则表示您在 Docker 组织中缺少必要的权限。

  3. 按照创建堆栈向导中的步骤操作,直到结束。选择您想要集成的 AWS 区域。通过创建资源来完成此过程。

    向导中的字段已由 CloudFormation 模板预先填充,因此您无需编辑任何字段。

  4. 资源创建完成后(AWS 控制台中 CloudFormation 状态显示CREATE_COMPLETE),返回 Docker Scout 仪表板中的 ECR 集成页面。

    已集成注册表列表显示您刚刚集成的 ECR 注册表的帐户 ID 和区域。如果成功,集成状态为已连接

ECR 集成现已激活。要使 Docker Scout 开始分析注册表中的镜像,您需要在资源库设置中为每个资源库激活它。

激活资源库后,您推送的镜像将由 Docker Scout 进行分析。分析结果将显示在 Docker Scout 仪表板中。如果您的资源库已包含镜像,Docker Scout 会自动提取并分析最新的镜像版本。

集成其他注册表

添加其他注册表

  1. 转到 Docker Scout 仪表盘上的ECR 集成页面

  2. 选择列表顶部的添加按钮。

  3. 完成创建 AWS 资源的步骤。

  4. 资源创建完成后,返回 Docker Scout 仪表板中的 ECR 集成页面。

    已集成注册表列表显示您刚刚集成的 ECR 注册表的帐户 ID 和区域。如果成功,集成状态为已连接

接下来,在资源库设置中为要分析的资源库激活 Docker Scout。

移除集成

要移除已集成的 ECR 注册表,您必须是 Docker 组织的所有者。

  1. 转到 Docker Scout 仪表盘上的ECR 集成页面

  2. 在已集成注册表列表中找到要移除的注册表,然后选择操作列中的移除图标。

    如果移除图标被禁用,则表示您在 Docker 组织中缺少必要的权限。

  3. 在打开的对话框中,通过选择移除进行确认。

重要

从 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>