aws

【B-28】ECS Fargate + ECR

今回は、ECRを利用して自作のdockerイメージをFargate上で起動してみましょう。

[学習フェーズ]

ECR

Amazon ECR(Elastic Container Registry) は、AWSが提供するDockerコンテナイメージの保存・管理サービスです。

特徴説明
マネージドインフラの運用不要。高可用かつスケーラブル
セキュアIAMと統合され、アクセス制御が細かく可能
AWS連携ECS / EKS / CodePipeline / CodeBuildと接続
プライベート/パブリック非公開利用だけでなく、公開リポジトリの作成も可能

ECRを利用する際の流れ

Step 1 Dockerfile作成 & イメージビルド @ローカルPC
Step 2 ECRリポジトリを作成 @マネジメントコンソール
Step 3 ECRにログイン(認証) @ローカルPC(AWS CLI )
Step 4 Dockerイメージにタグを付ける @ローカルPC
Step 5 ECRにpush @ローカルPC
Step 6 ECSにてECR内のイメージを指定、起動 @マネジメントコンソール

パブリックリポジトリとプライベートリポジトリ

プライベートECRリポジトリとは?

  • アクセスできるのは同じAWSアカウント(または明示的に許可したIAMユーザー・ロール)のみ
  • 外部の誰かがpullすることはできない
  • セキュアなコンテナ管理が可能
  • Fargate や ECS も「IAM認証された状態」で pull するので問題なく利用可能

パブリックECRリポジトリとは?

  • 公開後は誰でもpullできるため、機密情報を含めてはいけない
  • 誰でもpull可能(認証不要)な公開用Dockerイメージの保管場所
  • 世界中のユーザーがアクセス可能で、オープンソースの配布に適している
  • プライベートと異なり、IAM認証やVPCエンドポイントは不要

[実践フェーズ]

今回は以下のアプリケーションをFargate上で作成しましょう。
[手順]
1. 自作の index.html を含んだnginxイメージをECRにpush
2. AWS Fargate(ECS)でコンテナを起動
3. Webブラウザから「Hello from Fargate!」を確認!

事前準備

Dockerfile

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

index.html

<!DOCTYPE html>
<html>
<head>
<title>My ECS Site</title>
</head>
<body>
<h1>Hello from Fargate!</h1>
<p>このページは自作のDockerイメージから提供されています。</p>
</body>
</html>

上記内容でビルドしておく

ECR作成・push

プライベートリポジトリを作成、ローカル環境で作成したイメージをECRへpush

pushコマンドは、ECR上の右上「プッシュコマンドを表示」に記載

Fargaetにて起動確認

  • コンテナイメージを上記でPUSHしたECR URIに設定
  • ポートは80番
  • http://[パブリックIP]/ にてWebページを確認で完了