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 スタックテンプレートを使用して、ECR レジストリと Docker Scout の統合に必要な AWS リソースを作成および設定できます。AWS リソースの詳細については、CloudFormation スタックテンプレートをご参照ください。
次の図は、Docker Scout ECR 統合の仕組みを示しています。
統合後、Docker Scout は ECR レジストリにプッシュされたイメージを自動的に取得して分析します。イメージのメタデータは Docker Scout プラットフォームに保存されますが、Docker Scout はコンテナイメージ自体を保存しません。Docker Scout のデータ取り扱い方法の詳細については、データの取り扱いをご参照ください。
CloudFormation スタックテンプレート
以下の表は、設定リソースの説明を示しています。
これらのリソースを作成すると、AWS アカウントに小額の継続的なコストが発生します。表の コスト 列には、1 日あたり 100 個のイメージがプッシュされる ECR レジストリを統合する際の推定月額コストが表示されています。
また、Docker Scout が ECR からイメージを取得する際に発生する egress コストも適用されます。egress コストは約 $0.09/GB です。
リソースタイプ | リソース名 | 説明 | コスト |
---|---|---|---|
AWS::SNSTopic::Topic | SNSTopic | AWS リソース作成時に Docker Scout へ通知するための SNS トピック。 | 無料 |
AWS::SNS::TopicPolicy | TopicPolicy | 初期セットアップ通知のためのトピック定義。 | 無料 |
AWS::SecretsManager::Secret | ScoutAPICredentials | Docker Scout へのイベント発火に使用する EventBridge の認証情報を保存。 | $0.42 |
AWS::Events::ApiDestination | ApiDestination | ECR のプッシュおよび削除イベントを Docker Scout に送信する EventBridge 接続。 | $0.01 |
AWS::Events::Connection | Connection | Docker Scout への EventBridge 接続用の認証情報。 | 無料 |
AWS::Events::Rule | DockerScoutEcrRule | ECR のプッシュと削除を Docker Scout に送信するルールの定義。 | 無料 |
AWS::Events::Rule | DockerScoutRepoDeletedRule | ECR リポジトリの削除を Docker Scout に送信するルールの定義。 | 無料 |
AWS::IAM::Role | InvokeApiRole | ApiDestination へのイベントアクセスを許可する内部ロール。 | 無料 |
AWS::IAM::Role | AssumeRoleEcrAccess | Docker Scout 統合の設定に必要な ScoutAPICredentials へのアクセス権限を持つロール。 | 無料 |
最初のレジストリの統合
AWS アカウントで CloudFormation スタックを作成し、Docker Scout の統合を有効化します。
前提条件:
- AWS アカウントへのアクセス権があり、リソース作成権限があること。
- Docker Organization のオーナーであること。
スタックの作成方法:
-
Docker Scout ダッシュボードの ECR 統合ページに移動します。
-
Create on AWS ボタンを選択します。
これにより、新しいブラウザタブで AWS CloudFormation コンソールの Create stack ウィザードが開きます。AWS にサインインしていない場合は、最初にサインインページにリダイレクトされます。
ボタンがグレー表示されている場合は、Docker Organization に必要な権限がありません。
-
Create stack ウィザードの手順に従って操作を完了します。統合したい AWS リージョンを選択し、リソースの作成手続きを完了してください。
ウィザード内のフィールドは CloudFormation テンプレートによって事前に入力されているため、編集する必要はありません。
-
リソースが作成されると(AWS コンソールの CloudFormation ステータスが
CREATE_COMPLETE
となる)、Docker Scout ダッシュボードの ECR 統合ページに戻ります。Integrated registries リストに、統合した ECR レジストリのアカウント ID とリージョンが表示されます。統合が成功した場合、ステータスは Connected となります。
ECR 統合はこれで有効化されました。レジストリ内のリポジトリごとに Docker Scout を有効化するには、リポジトリ設定に移動してください。
リポジトリを有効化すると、プッシュされたイメージが Docker Scout によって分析されます。分析結果は Docker Scout ダッシュボードに表示されます。リポジトリにすでにイメージがある場合、Docker Scout は最新のイメージバージョンを自動的に取得して分析します。
追加のレジストリの統合
追加のレジストリを統合するには:
-
Docker Scout ダッシュボードのECR 統合ページに移動します。
-
リストの上部にある Add ボタンを選択します。
-
AWS リソースの作成手順を完了します。
-
リソースが作成されると、Docker Scout ダッシュボードの ECR 統合ページに戻ります。
Integrated registries リストに、統合した ECR レジストリのアカウント ID とリージョンが表示されます。統合が成功した場合、ステータスは Connected となります。
次に、分析したいリポジトリごとに Docker Scout を有効化するために、リポジトリ設定に移動してください。
統合の削除
統合された ECR レジストリを削除するには、Docker 組織のオーナーである必要があります。
-
Docker Scout ダッシュボードのECR 統合ページに移動します。
-
統合されたレジストリのリストから、削除したいレジストリを見つけ、Actions 列の削除アイコンを選択します。
削除アイコンが無効になっている場合は、Docker Organization に必要な権限がありません。
-
開いたダイアログで、Remove を選択して確認します。
Docker Scout ダッシュボードから統合を削除しても、AWS アカウント内のリソースは削除されません。
Docker Scout で統合を削除した後、AWS コンソールに移動し、削除したい統合の DockerScoutECRIntegration CloudFormation スタックを削除してください。
トラブルシューティング
レジストリを統合できない
Docker Scout ダッシュボードのECR 統合ページで、統合の Status を確認してください。
-
ステータスが長時間 Pending の場合は、AWS 側で統合がまだ完了していないことを示します。Pending リンクを選択して CloudFormation ウィザードを開き、すべての手順を完了してください。
-
Error ステータスはバックエンドで問題が発生したことを示します。統合の削除を試み、再度作成してみてください。
ECR イメージがダッシュボードに表示されない
ECR イメージの分析結果が Docker Scout ダッシュボードに表示されない場合:
-
Docker Scout がリポジトリで有効化されていることを確認してください。アクティブなリポジトリの表示と管理はリポジトリ設定で行えます。
-
レジストリの AWS アカウント ID とリージョンが ECR 統合ページにリストされていることを確認してください。
アカウント ID とリージョンは、レジストリのホスト名に含まれています:
<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<image>