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