やりたいこと
「service connect」を使ってecsのfargateで立ち上げたサービスA(nginxのコンテナ)とサービスB(nginx+php(laravel)のコンテナ)とで通信を行いたい
図にするとこんな感じ↓
結論の通信の流れ
初めはnginxのサービスとlaravelのサービスとで通信を試していたが思うよういなかったので最終的に
- サービスA: nginx
- サービスB: nginx + laravel
となった。
サービスAから通信が始まりサービスBのnginxに行き、サービスBのlaravelに行く。
service connectとは
簡単に言うとサービス間通信が簡単にできるで!というやつだと理解してる。
最近でたあたらしいawsのサービスなので参考記事が3、4個ぐらいしかないのでめちゃくちゃ苦労した。現時点でまだ2か月もたってないぐらい。
実現方法
cloud mapの登録
API呼び出しでできた。
nginxのサービスインスタンスをつくる
nginxのcofファイルはこんな感じ↓下記の方で説明しているservice connectの設定時のDNSの所に書いたものが名前として通信で使える。使う場合はserver_nameに名前を書く。書かない場合はproxy_passのところに直接IPアドレスを入力すれば通信できる。IPアドレスはservice connectを設定したサービスタスクの中のetc/hostsの中に書いてある。←ecs execとかでコンテナの中に入れば確認することができる。ecs execの導入方法
下記画像のサービス作成画面のここにチェックを入れる
nginxの場合はクライアント側
名前空間を選択すると先ほどcloud mapで作成した項目が出てくる
laravelのサービスインスタンスをつくる
nginxと同じようにservice connectにチェックをいれて今度はクラン案ととサーバーを選択する
同じ名前空間を選択したらポートを選択
どこで受けたいかを選択する
↑で説明しているnginx(サービスA)の設定は下記を通るように設定する
コメント