Transit Gateway Network Managerを AWS CLIから操作してみる #reinvent

2019.12.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

re:Invent2019のネットワーク周りのアップデートの 1つに AWS Transit Gateway Network Manager があります。

Transit Gateway、それとVPN接続されているオンプレミス環境の ネットワーク全体を管理するためのサービスです。

ネットワークの可視化や、ネットワーク周りのメトリクス監視などの機能があります。 さらに このサービス自体は無料です

さっそくコンソール上でやってみたブログも上がっていますね。

Transit Gateway Network Managerを使ってTransit GatewayとVPN接続の可視化をしてみた #reinvent

本ブログでは AWS Transit Gateway Network Manager 周りの操作を AWS CLIから実行 してみます。

目次

  1. はじめに
  2. create-global-network: グローバルネットワークの作成
  3. register-transit-gateway: TGWの登録
  4. create-site: サイトの作成
  5. create-link: リンクの作成
  6. create-device: デバイスの登録
  7. associate-link: リンクの関連付け
  8. associate-customer-gateway: カスタマーゲートウェイの関連付け
  9. おわりに

はじめに

AWS Transit Gateway Network Manager (以下 Network Manager) はグローバルサービスです。

Network Manager では以下の 要素が登場します。

  • グローバルネットワーク: 1つのプライベートネットワーク全体を表します。 ここにあなたのネットワークオブジェクトを登録していきます。
  • Transit Gateway(TGW): (言わずもがな) AWS のネットワークサービスです。 グローバルネットワークに登録します。
  • サイト: 1つのオンプレミスの場所を表します。 グローバルネットワーク上に作成します。
  • リンク: 1つの回線情報(プロバイダー、上り下り回線速度など) を表します。 サイトに登録します。
  • デバイス: AWSをVPN接続を行っているオンプレミス側の機器(ルーターなど) にあたります。 サイトに関連付けます。 使用している回線のリンクに関連付けできます。 また、AWSのカスタマーゲートウェイリソースに関連付けることで VPNステータスの情報などを付加できます。

AWS CLIのリファレンスは こちら 。 新規オブジェクトの作成周りの CLIを以降で触っていきます。

create-global-network: グローバルネットワークの作成

  create-global-network
[--description <value>]
[--tags <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用:create-global-network > Synopsis

新しい 空の グローバルネットワークを作成します。

Network Manager はグローバルサービスです。 CLI実行するときはリージョン指定 us-west-2 しましょう。

▼ 実行例

aws networkmanager create-global-network \
  --description "global network generated by cli" \
  --region us-west-2\
  --tags Key=Name,Value=my-global-network

▼ 実行後のマネジメントコンソール確認

register-transit-gateway: TGWの登録

  register-transit-gateway
--global-network-id <value>
--transit-gateway-arn <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用:register-transit-gateway > Synopsis

グローバルネットワークに Transit Gatewayを登録します。 以下 2つの情報が必須です。

  • global-network-id: 作成したグローバルネットワークの ID
  • transit-gateway-arn: 登録するTransit Gatewayの ARN

▼ 実行例

aws networkmanager register-transit-gateway \
  --global-network-id global-network-0d31xxxxxxxxxxxxxx\
  --transit-gateway-arn arn:aws:ec2:ap-northeast-1:7xxxxxxxxxxx:transit-gateway/tgw-031fxxxxxxxxxxxxx\
  --region us-west-2

▼ 実行後のマネジメントコンソール確認

create-site: サイトの作成

  create-site
--global-network-id <value>
[--description <value>]
[--location <value>]
[--tags <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用:create-site > Synopsis

オンプレミスの場所を表す サイトを作成します。

--location にサイトの場所の情報を入力します。 以下の 3要素を任意に登録できます。

  • Address: サイトの住所
  • Latitude: サイトの緯度
  • Longitude: サイトの経度

▼ 実行例

aws networkmanager create-site \
  --global-network-id global-network-0d31xxxxxxxxxxxxx \
  --description  'Osaka Data Center' \
  --location Address='Osaka Japan' \
  --tags Key=Name,Value=osaka-datacenter\
  --region us-west-2

▼ 実行後のマネジメントコンソール確認

後ほど地図で確認しましたが Address='Osaka Japan' と詳細を省いた形で記述しても、 ちゃんと大阪の場所の緯度・経度が登録されていました。 アドレスの情報から緯度・経度を検索してくれるみたいです。

もちろん 〒XXX-YYYY 大阪府大阪市... といった形でもOKなので、持っている情報に合わせて アドレス(もしくは 緯度・経度) を登録しましょう。

  create-link
--global-network-id <value>
[--description <value>]
[--type <value>]
--bandwidth <value>
[--provider <value>]
--site-id <value>
[--tags <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用:create-link > Synopsis

リンクを作成します。 リンクはサイトから出ている 1つのインターネットコネクションです。

▼ 実行例

aws networkmanager create-link \
  --global-network-id global-network-0d31xxxxxxxxxxxxx \
  --description "VPN Link" \
  --type "broadband" \
  --bandwidth UploadSpeed=10,DownloadSpeed=20 \
  --provider "AnyCompany" \
  --site-id site-075xxxxxxxxxxxxxx \
  --tags Key=Name,Value=osaka-datacenter-link1\
  --region us-west-2

▼ 実行後のマネジメントコンソール確認

create-device: デバイスの登録

  create-device
--global-network-id <value>
[--description <value>]
[--type <value>]
[--vendor <value>]
[--model <value>]
[--serial-number <value>]
[--location <value>]
[--site-id <value>]
[--tags <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用: create-device > Synopsis

オンプレミス側の機器に当たる デバイスを作成します。

▼ 実行例

aws networkmanager create-device\
  --global-network-id global-network-0d31xxxxxxxxxxxxx\
  --site-id site-075xxxxxxxxxxxxxx\
  --description "Osaka Data Center Router" \
  --type "Router" \
  --vendor "Cisco" \
  --model "CISCO1812-J/K9" \
  --serial-number "ABCD1234" \
  --tags Key=Name,Value=osaka-datacenter-router\
  --region us-west-2

▼ 実行後のマネジメントコンソール確認

  associate-link
--global-network-id <value>
--device-id <value>
--link-id <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用: associate-link > Synopsis

リンクをデバイスに関連付けます。 複数のデバイスに複数のリンクを関連付けできます。

▼ 実行例

aws networkmanager associate-link \
    --global-network-id global-network-0d31xxxxxxxxxxxxx \
    --device-id device-0153xxxxxxxxxxxxx \
    --link-id link-0e1465xxxxxxxxxxx \
    --region us-west-2

▼ 実行後のマネジメントコンソール確認

associate-customer-gateway: カスタマーゲートウェイの関連付け

  associate-customer-gateway
--customer-gateway-arn <value>
--global-network-id <value>
--device-id <value>
[--link-id <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

– 引用: associate-customer-gateway > Synopsis

カスタマーゲートウェイをデバイスに関連付けます。

▼ 実行例

aws networkmanager associate-customer-gateway \
  --global-network-id global-network-0d31xxxxxxxxxxxxx \
  --customer-gateway-arn  arn:aws:ec2:ap-northeast-1:7xxxxxxxxxxx:customer-gateway/cgw-0b84xxxxxxxxxxxxx \
  --device-id device-0153xxxxxxxxxxxxx \
  --region us-west-2

▼ 実行後のマネジメントコンソール確認

関連付けを行うことで Location(地域) タブなどでAWSとオンプレ間の VPNステータスが確認できるようになります。

おわりに

ざっと 作成周りの CLIを触ってみました。

グローバルネットワークの作成などは基本的に 1回のみの実行ですが、 デバイスの登録・関連付け周りのCLIは、オンプレミス環境を多く持つ方には有用かもしれませんね。

実際のところ、サイトやリンクなどは必須ではなく、 デバイスに住所・緯度経度の情報を登録して、カスタマーゲートウェイを関連付けさせるだけで、 可視化した情報を見ることができたりします。

どこまで細かく情報を登録するかは Network Managerの運用次第でしょう。

Network Manager自体は無料で使用できます。 大規模なハイブリッドネットワークを構築・運用されている方はぜひとも使ってみてください。