ECS クラスタのタスク定義の作成
ローカルで動作確認済みの Docker コンテナがある。
(springboot で作成し localhost:8080 で確認)
これを ECR に push 済みの状態。
- タスク定義名 : spring-task
- コンテナ名: hello-spring
- コンテナURL : {userId}.dkr.ecr.ap-northeast-1.amazonaws.com/hello-spring
これで spring-task というタスク定義を作成
まずはこれで実行タスクを作ってアクセスする。
ECS クラスタの作成
- name: spring-cluster
- subnets: klein-private-{a,c}
セキュリティグループの作成
EC2 の画面から作成する。
デフォルトでは http ポート80 しか許可していない。
ポート8080 で動かすアプリは ポート8080 も許可する必要がある。
nginx は ポート80 で動かすアプリなので必要なかったが。
- name: from-8080
- インバウンド: Custom TCP 8080
これで作成する。
なぜ HTTP ではなく TCP なのかは不明。
実行タスク作成
- 計算オプション: ローンチタイプ
- タスク族: spring-task
- コンテナ上書き → 自動で hello-spring に
- VPC サブネット -> クラスタと同じ
- セキュリティグループ: from-8080
これで作られるのを待つ
Public IP から実行タスクにアクセスする
実行タスクが Running になってからアクセスする
Spring アプリにアクセスできた!
Private IP から実行タスクにアクセスする
ssh -i ~/.ssh/elb-ec2-test-key.pem \
ec2-user@18.step.server.ip
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
VPC 内部の踏み台サーバーに入って
curl 10.springApp.private.ip:8080
Hello From Spring Resource!
Spring アプリの実行タスクのプライベート IP に curl する。
レスポンスが返ってきた。
実行タスクにログも入っている。
まとめ
Spring アプリを ECS で動かすためには
- ローカルで Spring アプリを Docker イメージにビルドする
- ローカルで Docker イメージを走らせる
- localhost:8080 を叩いて動作確認する
- ECR リポジトリを作る
- ECR リポジトリに Docker イメージを push する
- ECS クラスタを作る
- ECS クラスタのタスク定義を ECR リポジトリから作る
- セキュリティグループを作る
- インバウンドルールの許可: HTTP 8080 ポート
- 実行タスクを作る。前述で作ったこれらを使用。
- タスク定義
- セキュリティグループ
- 実行タスクにアクセスして動作確認
これらの手順でできる。以上。
Top comments (0)