LoginSignup
2
3

More than 5 years have passed since last update.

VPCサブネットのRouteTableを切り替える

Posted at

マネジメントコンソールでのRouteTable切り替え

VPCサブネットに紐付いているRouteTableを切り替える必要がある場合、
マネジメントコンソールからだとVPC=>Subnets=>サブネットを選択=>RouteTableタブのEditボタンを押すことでサブネットに紐付けるRouteTableを選択できます。

routetableの切り替え.png

簡単です。

AWSCLIでのRouteTable切り替え

しかし、特定のトリガーをきっかけにRouteTableを自動的に切り替えたい場合にはAWSCLIを使ったスクリプトを書く必要があるのですが、ひとクセありました。

まず、一番最初にサブネットとルートテーブルの紐付けを行う場合は「associate-route-table」コマンドで【route-table-id】と【subnet-id】を紐付けます。(デフォルトで作成されるVPCでは紐付け済み)

この【route-table-id】と【subnet-id】の紐付けに対して、【association-id】が割り振られます。【association-id】は「describe-subnets」コマンドで確認できます。
(現状ではマネジメントコンソールからは【association-id】を確認できませんでした。)

aws ec2 describe-route-tables
-----------
{
    "RouteTables": [
        {
            "Associations": [
                {
                    "SubnetId": "subnet-xxxxxxxx",
                    "RouteTableAssociationId": "rtbassoc-xxxxxxxx",
                    "Main": false,
                    "RouteTableId": "rtb-xxxxxxx"
                }
            ],
:
:
}
--------        

上記のように、サブネット:subnet-xxxxxxxxとルートテーブル:rtb-xxxxxxxの紐付けが、rtbassoc-xxxxxxxxというAssociationIdで管理されています。

そして本題のすでにルートテーブルが紐付けられたサブネットのCLIでのRouteTable切り替えには「replace-route-table-association」コマンドを使うのですが、前述の「associate-route-table」のように【route-table-id】と【subnet-id】を紐付けるのではなく、【route-table-id】と【association-id】を紐付ける必要があります。さらに【association-id】は紐付けのたびに毎回値が変化するので、注意が必要です。

aws ec2 replace-route-table-association --association-id rtbassoc-xxxxxxxx  --route-table-id rtb-xxxxxxxx
-----------
{
    "NewAssociationId": "rtbassoc-xxxxxxxxx"
}
-----------

このような形で新しいAssociationIdが結果として戻って来れば、切り替えが成功です。

ちなみに、紐付け済みの【subnet-id】と【route-table-id】を「associate-route-table」コマンドを使用するとこんな感じで怒られます。

aws ec2 associate-route-table --subnet-id subnet-xxxxxxxxx  --route-table-id rtb-xxxxxxxx
-----------
A client error (Resource.AlreadyAssociated) occurred when calling the AssociateRouteTable operation: the specified association for route table rtb-xxxxxxx conflicts with an existing association
-----------
2
3
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
2
3