はじめに
ECS作成後にサービスのネットワーク構成を変更しようとしても、コンソール上から変更できないことに最近気がつきました。(2024/09/28現在)
調べていくうちに、AWS CLI であるコマンドを実行するとサービスのネットワーク構成を変更できることを知ったのでその方法を記事にします。
この記事はAWS CLI コマンドリファレンスを基に作成しています。
サービスのネットワーク構成を変更する方法
手順1. CloudShellを起動する
コンソールの画面右上の、赤枠の部分からCloudShellを起動できます。
手順2. コマンド実行
$ aws ecs update-service \
--cluster 【ECS クラスター名】 \
--service 【ECS サービス名】 \
--network-configuration "awsvpcConfiguration={subnets=[【サブネット ID】],securityGroups=[【セキュリティグループ ID】],assignPublicIp=【DISABLED/ENABLED】}"
上記コマンドに以下の項目を入れて実行します
項目 | デフォルト値 | 補足 |
---|---|---|
ECS クラスター名 | - | - |
ECS サービス名 | - | - |
サブネットID | 指定なし | カンマ区切りで複数選択可 |
セキュリティグループID | VPCのデフォルトのセキュリティグループ | カンマ区切りで複数選択可 |
パブリックIPの自動割り当て | 割り当てない | DISABLED:割り当てない, ENABLE:割り当てる のどちらかを選択する。 |
以下注意事項
- 指定したサブネットとセキュリティグループは全て同一VPC内のものでなければならない
- サブネットは16個までしか指定できない
- セキュリティグループは5個までしか指定できない
以下が実際に値を入れたコマンドです。
$ aws ecs update-service \
--cluster dummy-cluster \
--service dummy-service \
--network-configuration "awsvpcConfiguration={subnets=[subnet-1, subnet-2],securityGroups=[security-group-1],assignPublicIp=ENABLE}"
注意点
先ほど紹介したコマンドを利用して、サービスのサブネットだけを変更したいという場合に以下のようなコマンドを流すと、サブネット以外にはデフォルト値が入ってしまいます。
$ aws ecs update-service \
--cluster dummy-cluster \
--service dummy-service \
--network-configuration "awsvpcConfiguration={subnets=[subnet-1, subnet-2]}"
この場合だと以下のような構成になってしまいます。
- サブネット:subnet-1, subnet-2
- セキュリティグループ:VPCのデフォルトのセキュリティグループ
- パブリックIPの自動割り当て:割り当てない
これを避けるためには各項目に適切な値を入れてコマンドを実行する必要があります。
以上を踏まえて注意しなければならないことは2つです。
- 既存の設定を塗り替えてしまう点に注意してコマンドを実行する
- 想定外の設定になっていないかを確認するために、コマンド実行後にサービスのネットワーク構成を再確認する