【学習記録】マネジメントコンソールからECS操作してデプロイできた

昨日CDKからECSにデプロイが上手くいかなかったので、今日は一旦AWSのマネジメントコンソールから操作してみました。 ちょいちょいハマりつつ、なんとかデプロイできたので、少しメモ残します。

やろうとしたのは、ECSのタスク定義にVueとGoのコンテナを設定してECS上でフロントエンドとAPIが通信できることを確認すること。 今ブログを書きながら思ったのですが、後からブログに書くんだから操作中にスクリーンショットでも撮っておけば良かったな。 ちょっとした技術記事書こうとしたときに画像あったほうが書きやすいし、後から読み返したときに内容思い出しやすいですね。

ECSとかはまだまだ理解も浅いのでなおさら。明日からは手を動かしつつスクリーンショットも残すようにしようと思います。

さて、今日はまずこちらの動画を参考にマネジメントコンソールを操作しました。

https://www.youtube.com/watch?v=dwPOIr5fsWk&t=868s

動画の見よう見まねで手を動かして、Docker hubからコンテナを起動してブラウザでアクセスできることまでは確認できました。
問題はこの後の自分のアプリケーションのDockerイメージをECS上にデプロイすることでして、昨日はそこで詰まって断念したのです。

今日もとりあえずECRに自分のDockerイメージをプッシュして、ECSのタスク定義に設定してみるとブラウザで開けない。
ここからの問題の切り分け方が大事だなと思っていて、今日はとりあえずローカルでDockerコンテナ間の通信ができているかをまず確認しました。

すると、下記のようにポートマッピングを指定してコンテナを起動するとコンテナ間の通信ができていて

Docker run containername -p 8080:8080

下記のようにポートを指定しないとコンテナ間の通信が通りませんでした。

Docker run containername

ちょっとコンテナのポートマッピングもまだ理解できていないところあるのですが、少なくともローカルではポート指定すると通信が通るので、ECSでも同じような現象が起きているのかなと考えました。

そして、ECSのタスク定義でコンテナのポートマッピングにそれぞれのコンテナのEXPOSEしているポートを指定するとECS上でもコンテナ間の通信ができました。

一応やりたいことは達成できたので良かったですが、まだまだECSの概念以前にコンテナの理解も浅いなと実感しました。

アプリケーションのコーディング進めつつコンテナ周りもしっかり勉強していきます。