コンテンツにスキップ

ECR@AWSリソース

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. ECR

ECRとは

コンテナイメージやhelmチャートを管理できる。


02. セットアップ

コンソール画面の場合

▼ 設定項目と説明

設定項目 説明 補足
可視性 イメージリポジトリをパブリックあるいはプライベートにするかを設定する。 様々なベンダーがパブリックリポジトリでECRイメージを提供している。
https://gallery.ecr.aws/
タグのイミュータビリティ 同じタグ名でイメージがプッシュされた場合、バージョンタグを上書きできる/できないかを設定できる。 -
プッシュ時にスキャン イメージがプッシュされた時に、コンテナイメージにインストールされているパッケージの脆弱性を検証し、一覧表示する。 https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html
暗号化設定 - -


イメージのプッシュ

▼ コンテナイメージの場合

(1)

ECRにログインする。

$ aws ecr get-login-password --region ap-northeast-1 | \
    docker login --username AWS --password-stdin <イメージリポジトリURL>

Login Succeeded
(2)

イメージにタグを付与する。

# docker tag foo:latest <AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/foo-repository:latest
$ docker tag <イメージID> <イメージリポジトリURL>:<バージョンタグ>
(3)

ECRにコンテナイメージをプッシュする。

# docker push <AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/foo-repository:latest
$ docker push <イメージリポジトリURL>:<バージョンタグ>

▼ helmチャートの場合

調査中...


ライフサイクル

▼ ライフサイクルポリシー

ECRのコンテナイメージの有効期間を定義できる。

設定項目 説明 補足
ルールの優先順位 数字で、ルールの優先度を設定できる。 数字が小さいほど、優先度は高くなる。数字は連続している必要はなく、例えば、102090、のように設定しても良い。
イメージのステータス ルールを適用するイメージの条件として、タグの有無や文字列を設定できる。
一致条件 イメージの有効期間として、同条件に当てはまるイメージが削除される閾値を設定できる。 個数、プッシュされてからの期間、などを閾値として設定できる。


バージョンタグ

▼ タグ名のベストプラクティス

Dockerのベストプラクティスに則り、タグ名にlatestを使用しないようにする。

代わりとして、コンテナイメージのバージョンごとに異なるタグ名になるようハッシュ値 (例:GitHubのコミットID) を使用する。


プルスルーキャッシュリポジトリ

特に、DockerHubはレートリミットがあるため、DockerHub上のリポジトリをプライベートリポジトリで管理しておく方が良い。

この時、プルスルーキャッシュリポジトリは複製をプライベートリポジトリに自動的にプルしてくれる。