Private subnetとは
awsではinternet gatewayがアタッチされていないsubnetのことをprivate subnetと呼んでいます。
ここでは通常internetから直接アクセスされたくないDatabaseなどを配置し、public subnetに存在するインスタンスからのみの通信を許可するというのが一番ポピュラーなユースケースです。
Private subnetから通信したい
そんなPrivate subnet内にサーバを配置し、そこから外部へ通信したい場合があります。
主にはprivate subnet内のDBへ何らかしらの処理を定期的に実行したいなどでしょうか。そんな時にECSからsubnet外への通信を行いたい場合があります。
例えばECSをprivate subnet内で実行しながら、
・ssm/secret managerからパラメータを取得したい
・ECRからイメージを取得したい
・cloudwatchlogに書き込みをしたい
・s3とのデータやり取りをしたい
やり方は2つ
・NAT gatway
・(おすすめ)Amazon PrivateLink
NAT gateway
subnetに対して設定することでインターネットに接続することができるものです。
subnetにアタッチし、デフォルトルート(0.0.0.0/0)をNAT gatewayに向けることでインターネットへの接続を可能にできます。
Amazon PrivateLink
VPCにVPCエンドポイントというものを設置し、そこからawsの各種サービスと通信を行えるようになります。
例えば、secret managerにECSから接続したい場合はVPCにcom.amazonaws.ap-northeast-1.secretsmanagerというVPCエンドポイントを配置します。
【メリット】
・NAT gatewayより安い
・インターネットを経由せず、aws内のネットワークで通信が完結するためセキュリティ面で安心
【デメリット】
・awsが提供しているサービスや提携パートナーと通信するためのエンドポイントしか作成できないので完全に外部からデータを取りたい場合はNATを使うしかない
→S3に必要パッケージを置いたりECRにイメージに含めることである程度は回避できる
設定方法
2.「エンドポイントを作成」から各種情報を入力
名前:(不要)わかりやすい名前を
サービスカテゴリ:awsのサービスとの接続であれば「AWSのサービス」
サービス:(例)com.amazonaws.ap-northeast-1.secretsmanager(通信したいサービスごとに設定)
※ECSは必ず設定しないといけないものもあるので下記参照
https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs-2022/
VPC:配置するVPCを選択
これだけOK!