Pgpool-II on EC2 でルートテーブルの書換えでフェイルオーバーする際に必要な IAM 権限は ec2:CreateRoute と ec2:ReplaceRoute。
IAMポリシーサンプル
IAM権限 ec2:CreateRoute と ec2:ReplaceRoute を付与した IAM ポリシーを作成、EC2 用の IAM ロールを作成して、作成した IAM ポリシーをアタッチし、EC2 から AWS CLI でルートテーブルを変更する例。
- IAMポリシー: ModifyRouteTablePolicy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": "arn:aws:ec2:ap-northeast-1:123456789012:route-table/rtb-31b8125f" } ] }
- IAMロール: ModifyRouteTableRole
- アクセス権限: ModifyRouteTablePolicy*1
- 信頼関係
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- EC2 インスタンスに IAMロール: ModifyRouteTableRole をアタッチする。
ルートテーブルを変更してみる
$ aws ec2 create-route --route-table-id rtb-31b8125f --destination-cidr-block 192.168.1.1/32 --network-interface-id eni-03abbff1e8bd862bc $ aws ec2 replace-route --route-table-id rtb-31b8125f --destination-cidr-block 192.168.1.1/32 --network-interface-id eni-0e1a621a65cd6e5a2
参考
Synopsis
create-route [--destination-cidr-block <value>] [--destination-ipv6-cidr-block <value>] [--destination-prefix-list-id <value>] [--dry-run | --no-dry-run] [--egress-only-internet-gateway-id <value>] [--gateway-id <value>] [--instance-id <value>] [--nat-gateway-id <value>] [--transit-gateway-id <value>] [--local-gateway-id <value>] [--carrier-gateway-id <value>] [--network-interface-id <value>] --route-table-id <value> [--vpc-peering-connection-id <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]create-route — AWS CLI 1.18.143 Command Reference
CreateRoute
Creates a route in a route table within a VPC.
You must specify one of the following targets: internet gateway or virtual private gateway, NAT instance, NAT gateway, VPC peering connection, network interface, egress-only internet gateway, or transit gateway.
When determining how to route traffic, we use the route with the most specific match. For example, traffic is destined for the IPv4 address 192.0.2.3, and the route table includes the following two IPv4 routes:
- 192.0.2.0/24 (goes to some target A)
- 192.0.2.0/28 (goes to some target B)
Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.
CreateRoute - Amazon Elastic Compute Cloud
IAMのEC2権限をまとめてみた - サーバーワークスエンジニアブログEC2のIAM権限
アクション アクションの内容 (中略) (中略) ec2:CreateRoute RouteTable内のルートを作成する (中略) (中略) ec2:ReplaceRoute RouteTableの既存のルートを置き換える
送信先のCIDRがVPCに収まっていない場合のエラー
ゲートウェイルートテーブルのターゲットにEC2インスタンス以外のENIを指定してみる | Developers.IO
Route table contains unsupported route destination. The unsupported route destination is less specific or non-overlapping than VPC local CIDR.
*1:ユーザー管理の IAM ポリシーをアタッチ