https://dev.classmethod.jp/articles/transit-gateway-vpc-account/
https://dev.classmethod.jp/articles/transitgateway-cross-account-diagram/
共有元アカウント(アカウントA): 999999999999
共有先アカウント(アカウントB): 888888888888
前提:
共有元と共有先で以下を設定済み
サブネット作成
アカウントA -> 172.31.48.0/24
アカウントB -> 10.0.1.0/24
作成したサブネットにEC2インスタンス作成
(セキュリティグループはping通信許可)
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. Transit Gateway作成 [ アカウントAでの作業 ]
aws ec2 describe-transit-gateways
aws ec2 create-transit-gateway \
--options '{
"AmazonSideAsn": 64512,
"AutoAcceptSharedAttachments": "enable",
"DefaultRouteTableAssociation": "enable",
"DefaultRouteTablePropagation": "enable",
"VpnEcmpSupport": "enable",
"DnsSupport": "enable",
"MulticastSupport": "disable"
}' \
--tag-specifications '[
{
"ResourceType": "transit-gateway",
"Tags": [ {"Key": "Name", "Value" : "tgw01" } ]
}
]'
-- 3. Transit Gatewayアタッチメントの作成 [ アカウントAでの作業 ]
aws ec2 describe-transit-gateway-attachments
aws ec2 describe-transit-gateway-vpc-attachments
aws ec2 describe-transit-gateway-route-tables
aws ec2 create-transit-gateway-vpc-attachment \
--transit-gateway-id tgw-00000000000000000 \
--vpc-id vpc-11111111111111111 \
--subnet-ids subnet-22222222222222222 \
--options '{
"DnsSupport": "enable",
"Ipv6Support": "disable",
"ApplianceModeSupport": "disable"
}' \
--tag-specifications '[
{
"ResourceType": "transit-gateway-attachment",
"Tags": [ {"Key": "Name", "Value" : "tgwa01" } ]
}
]'
-- 4. Transit Gateway共有 [ アカウントAでの作業 ]
aws ram list-resources --resource-owner SELF
aws ram create-resource-share \
--name rs01 \
--resource-arns arn:aws:ec2:ap-northeast-1:999999999999:transit-gateway/tgw-00000000000000000 \
--principals 888888888888 \
--no-allow-external-principals
-- 5. Transit Gatewayアタッチメントの作成 [ アカウントBでの作業 ]
aws ec2 describe-transit-gateway-attachments
aws ec2 describe-transit-gateway-vpc-attachments
aws ec2 describe-transit-gateway-route-tables
aws ec2 create-transit-gateway-vpc-attachment \
--transit-gateway-id tgw-00000000000000000 \
--vpc-id vpc-33333333333333333 \
--subnet-ids subnet-44444444444444444 \
--options '{
"DnsSupport": "enable",
"Ipv6Support": "disable",
"ApplianceModeSupport": "disable"
}' \
--tag-specifications '[
{
"ResourceType": "transit-gateway-attachment",
"Tags": [ {"Key": "Name", "Value" : "tgwa01" } ]
}
]'
-- 6. サブネットのルートテーブルに経路追加 [ アカウントA、アカウントBでの作業 ]
アカウントB:
172.31.48.0/24 -> TGW
アカウントA:
10.0.1.0/24 -> TGW
-- 7. 動作確認 [ アカウントAでの作業 ]
-- 8. クリーンアップ
-- Transit Gatewayアタッチメントの削除 [ アカウントBでの作業 ]
aws ec2 describe-transit-gateway-attachments
aws ec2 describe-transit-gateway-vpc-attachments
aws ec2 describe-transit-gateway-route-tables
aws ec2 delete-transit-gateway-vpc-attachment \
--transit-gateway-attachment-id tgw-attach-66666666666666666
-- Transit Gateway共有解除 [ アカウントAでの作業 ]
aws ram list-resources --resource-owner SELF
aws ram delete-resource-share \
--resource-share-arn arn:aws:ram:ap-northeast-1:999999999999:resource-share11111111-2222-3333-4444-555555555555
-- Transit Gatewayアタッチメントの削除 [ アカウントAでの作業 ]
aws ec2 describe-transit-gateway-attachments
aws ec2 describe-transit-gateway-vpc-attachments
aws ec2 describe-transit-gateway-route-tables
aws ec2 delete-transit-gateway-vpc-attachment \
--transit-gateway-attachment-id tgw-attach-77777777777777777
-- Transit Gatewayの削除 [ アカウントAでの作業 ]
aws ec2 describe-transit-gateways
aws ec2 delete-transit-gateway \
--transit-gateway-id tgw-00000000000000000