{VPC}クロスアカウントトランジットゲートウェイ


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 sts get-caller-identity

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での作業 ]

ping 10.0.1.226

 

-- 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