LoginSignup
0
1

Private subnetに存在するECS taskから外部ネットワークに通信する

Last updated at Posted at 2023-09-22

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にイメージに含めることである程度は回避できる

設定方法

1.エンドポイントを選択
image.png

2.「エンドポイントを作成」から各種情報を入力
名前:(不要)わかりやすい名前を
サービスカテゴリ:awsのサービスとの接続であれば「AWSのサービス」
サービス:(例)com.amazonaws.ap-northeast-1.secretsmanager(通信したいサービスごとに設定)
※ECSは必ず設定しないといけないものもあるので下記参照
https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs-2022/
VPC:配置するVPCを選択

image.png

これだけOK!

※注意
下記の通り、「DNS名を有効化」を設定しないと名前解決してくれないので通信ができません。
確実にやりましょう。
image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1