はじめに
Windows11Pro+WSL2+Ubuntu+Docker環境を構築し、
VS CodeからUbuntuに接続しプログラム作成、コンテナイメージ作成、
AWSのECRへプッシュ、ECSへのデプロイ・接続確認までを行います。
- WSL2のインストール
- Visual Studio CodeのインストールとUbuntu on WSL2への接続
- Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正
- AWS CLIインストール、IAMユーザー作成、アクセスキー作成、AWSリソースへのアクセス
- AWS ECRリポジトリ作成、Ubuntu on WSL2からECRへのプッシュ
- AWS ECSのタスク定義、クラスタ作成、サービス作成 (今回の記事)
要約
最小限の設定でECRのコンテナイメージをECS Fargateにデプロイし、
ブラウザから疎通確認できるところまでを目指します。
タスク定義の作成
AWS -> Elastic Container Service -> タスク定義 へ遷移します。
「新しいタスク定義の作成」をクリックします。
タスク定義ファミリー:test-task-def
とします。
コンテナ詳細 -> 名前:mayapp
とします。
コンテナ詳細 -> イメージURI:111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v2
とします。
「111111111111」部分は、ご自身のAWSアカウントIDに読み替えてください。
myapp:v2
は
AWS ECRリポジトリ作成、Ubuntu on WSL2からECRへのプッシュ
でECRにプッシュしたコンテナイメージです。
ポートマッピング等、その他の設定は不要です。
「次へ」をクリックします。
アプリケーション環境:AWS Fargate(サーバーレス)
オペレーティングシステム/アーキテクチャ:Linux/X86_64
タスクサイズ -> CPU:.25 vCPU
タスクサイズ -> メモリ:.5 GB
タスク実行ロール:ecsTskExecutionRole
(デフォルト)
ログ収集は今回不要なのでチェックを外します。「次へ」をクリックします。
クラスターの作成
クラスター名:test-cluster
とします。
VPC、サブネットを選択します。ここではVCP、サブネットの作成方法は省略します。
今回は簡単にブラウザからコンテナへ直接接続ができるように、パブリックサブネットを選択してください。
サービスの作成
アプリケーションタイプ:サービス
ファミリー:test-task-def
サービス名:test-service
必要なタスク:1
と設定します。
パブリックIPがオンになっている状態で、「作成」をクリックします。
疎通確認
サービスの作成が完了しました。
「test-service」をクリックします。
http://xx.xx.xx.xx/
という形でブラウザが開きますが、
今回のコンテナは5000番ポート
でリッスンしているため、
http://xx.xx.xx.xx:5000/
という形にURLを変更します。
Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正
でローカル環境で表示された画面と同じ画面が表示されました。
接続できない場合は、セキュリティグループの設定を確認してください。
サービスに紐づいているセキュリティグループは下記画面で確認できます。
サービス、クラスターの削除
検証で作ったAWSのリソースはこのままにしておくと料金が発生し続けるため、削除しましょう。
「serviceを強制削除」にチェックを入れ、テキスト入力フィールドに「削除」と入力し、「削除」をクリックします。
「delete test-cluster」を入力し、「削除」をクリックします。
ECRに保管されたコンテナイメージの削除
ECR -> リポジトリ画面で、
「myapp」にチェックをいれ、「削除」をクリックします。
リポジトリが削除されることで、リポジトリ内のコンテナイメージも削除されます。
さいごに
ECSを設定し、ブラウザからコンテナのコンテンツにアクセスできました。
AWSリソースの削除漏れが原因で想定外の金額を請求される場合があります。
AWS Budgetsでアラームを作成し、設定した金額を超過したら気づけるようにしておきましょう。