將 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 整合的工作原理。

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::TopicSNSTopic用於在 AWS 資源建立後通知 Docker Scout 的 SNS 主題。免費
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>`