はじめに
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でアラームを作成し、設定した金額を超過したら気づけるようにしておきましょう。











