
以下の構成で、awsの環境構築をしています(aws初心者なので表現がおかしいかもですがご容赦ください)。
①1つのVPC内に、プライベートサブネットとパブリックサブネットを置く。 ②パブリックサブネット内について ・ルートテーブルとインターネットゲートウェイ、ルートテーブルとパブリックサブネットを紐付けて、パブリックサブネットがインターネットと通信できるようにした。 ・セキュリティグループのインバウンドは、SSH、HTTPS、HTTPを全て0.0.0.0/0で設定。 ・パブリックサブネットはフロントエンド用(Next.js)とするため、パブリックサブネット内でEC2をインスタンス起動して、ターミナルからEC2にアクセスして、Nginxを使用して、webサーバーを構築。 ・自作のソースコードを持ってきて、npm startし、ブラウザからhttp:// IPアドレスで、接続&ブラウザ表示を確認済。 ③プライベートサブネット内について ・プライベートサブネットはバックエンド用(nestJSでAPI、DBはPostgreSQL)とするため、EC2とRDSを構築。 ・セキュリティグループのインバウンドは、 SSH、HTTPS、HTTPをそれぞれ、フロントエンド側のセキュリティグループとバックエンド側のセキュリティグループを許可& PostgreSQLをバックエンド側のセキュリティグループのみ許可 ・こちらも、パブリックサブネット内のEC2からプライベートサブネット内のEC2にアクセスして、自作のソースコードを持ってきて、npm startが無事でき&DBにテーブルなどが作成できたことをコンソール上で確認。
と、ここまではできました。
が、フロントエンド・バックエンド共にnpm startで起動させているのですが、ブラウザ上でAPIが呼び出せませんでした。
ただ、ブラウザ上でAPIエラーも発生していなかったので、パブリックサブネット上のEC2からAPIを以下のコマンドで叩いてみたのですが、こちらも以下のエラーが返ってきました。
叩いたコマンド: curl -I "http://【プライベート IPv4 アドレス】/api/post/userId/null エラー: curl: (7) Failed to connect to 【プライベート IPv4 アドレス】 port 80 after 1 ms: Connection refused
上記エラーを検索したところ、awsの以下のサイトに本エラーに関する記述があり、
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-linux-resolve-ssh-connection-errors/
確認したのですが、「ホストはインスタンスに到達したが、SSH ポートでリッスンしているサービスがなかった。」という原因があるのではという記載からバックエンドのnestJSの方がAPIを叩ける状態になっていないのでは?と思いました。
ここで伺いたいのですが、
A)パブリックサブネット内のEC2からプライベートサブネット内のnestJSのソースコードが動いているか確認する手段があれば教えていただきたいです。(現状、コンソール上でnpm startが成功したというステータスしかわからないため)
B)APIコールできない他の理由があるようであれば、こちらもご教授お願いしたいです。
よろしくお願いします。



回答1件
あなたの回答
tips
プレビュー