はじめに
ECRのリポジトリにあるイメージからwebページを公開する方法はいくつかありますが、ECS Fargateを使用したwebページ公開方法を試してみたいと思います。
いくつか記事を見たりしましたが、手順通りにしてもECSが起動しない、ページが開けないなどありました。
今回は、確実に誰でもECSを立てることができるように説明していきたいと思います。
全体の構造
ECRにあるイメージ使用して、ECSを立てます。
ECSのTaskがECRイメージのURL情報が載ったものです。
ECSのクラスターのServiceからTask情報を基に、コンテナを作成、起動します。
作成方法
1.ECRのリポジトリにイメージをpushする
2.VPCを作成する
3.ECRのイメージを基に、ECSのTaskを定義する
4.ECSのクラスターを作成する
5.ECSのサービスを作成する
6.webページを開く
1.ECRのリポジトリにイメージをpushする
ECRのリポジトリ作成方法等はこちらを参照ください。
ECRにpushするイメージのDockerfile
とindex.html
は以下です。
FROM httpd:2.4
COPY ./index.html /usr/local/apache2/htdocs/
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ECS</title>
</head>
<body>
<h1>ECSのテストページです</h1>
</body>
</html>
イメージがECRのリポジトリにpushされていれば完了です。
2.VPCを作成する
VPCを作成
VPCなどで設定は以下のように行います。
- 名前タグの自動生成→ecs-test
- IPv4 CIDR ブロック→10.0.0.0/16
- IPv6 CIDR ブロック→IPv6 CIDR ブロックなし
- アベイラビリティゾーン (AZ) の数→2
- パブリックサブネットの数→2
- プライベートサブネットの数→2
- NAT ゲートウェイ→なし
- VPC エンドポイント→なし
VPCを作成をクリック
ECS用のセキュリティグループを作成
基本的な詳細
- セキュリティグループ名→ecs-security-group
- 説明→ecs security group
インバウンドルール
インバウンドルールを設定し、自分のIPアドレスのみアクセスを許可します。
- タイプ→カスタムTCP
- ポート範囲→80
- ソース→マイIP
これでVPCの設定は完了です。
3.ECRのイメージを基に、ECSのTaskを定義する
インフラストラクチャの要件では以下のように設定します。
- 起動タイプ→AWS Fargate
- OS、アーキテクチャ、ネットワークモード→Linux/X86_64
- タスクサイズ→CPU:.5vCPU, メモリ:1GB
- タスク実行ロール→新しいタスクロールの作成
コンテナ1ではECRのイメージを指定します。
- コンテナの詳細
- 名前: ecs-container
- イメージURI: ECRのイメージURLを指定
他の設定はデフォルトで大丈夫です。
イメージURLは「URLのコピー」をクリックしてコピーし、貼り付けてください。
以上の設定を行い、作成をクリック
これでタスク定義は完了です。
4.ECSのクラスターを作成する
クラスター設定
インフラストラクチャ
以上の設定を行い、作成をクリック
これでクラスターの作成は完了です。
5.ECSのサービスを作成する
デプロイ設定
ネットワーキング
以上の設定を行い、作成をクリック
6.webページを開く
テストページに「ECSのテストページです」と表示されました。
作成したものを削除
webページの表示ができたら、不要な料金発生を防ぐため作成したものを必要に応じて削除してください。
終わりに
ECSでwebページを表示してみました。
VPCの設定関連を間違えるとECSが起動できないので、注意しながら設定を行うのが良いです。
参考になれば幸いです。