AWSのLocalZonesを試してみた

こんにちは。

VPCとサブネットとアベイラビリティゾーンにはいつもお世話になってます。
東京リージョンに関係ないと思っていたLocal Zonesが実は関係があったそうです。

最新情報フィード
デリーと台北での AWS Local Zones の一般提供の発表
投稿日: Oct 5, 2022
https://aws.amazon.com/jp/about-aws/whats-new/2022/10/general-availability-aws-local-zones-delhi-taipei/

はじめる前に
---
今回の調べものをする前は、国や地名がでたときにはリージョンやローカルリージョンであろうと漠然と捉えていました。
調べた後は、Local Zonesが必要となったときにどういう構成を採用することができるかわかるようになりました。
調べたことと試したことを紹介します。

調べたこと
---
### リージョンとLocal Zones
　東京リージョンのVPCに、アベイラビリティゾーン（ap-northeast-1a）のサブネットを作成するのと同じように、Local Zones（ap-northeast-1-tpe-1※）のサブネットを作成できます。
　※台北のLocal Zonesの名称です。

　以下のAWSドキュメントにネットワークの記載がありました。
>アカウントの Amazon Virtual Private Cloud (VPC) を、アベイラビリティーゾーンと AWS Local Zones にまたがってシームレスに拡張します。AWS リージョンのアベイラビリティーゾーンにサブネットを関連付けるように、リージョン VPC にサブネットを作成し Local Zone に関連付けて、セキュリティグループ、ネットワーク ACL、ルートテーブルを含むすべての VPC 機能を Local Zone に拡張できます。

https://aws.amazon.com/jp/about-aws/global-infrastructure/localzones/features/?nc=sn&loc=2

### Local Zonesで使用できるサービス
　以下のAWSドキュメントにLocal Zonesで使用できるサービスの表があります。
　https://aws.amazon.com/jp/about-aws/global-infrastructure/localzones/features/?nc=sn&loc=2

　制限事項が多い印象があります。以下は台北の抜粋です。
　・EC2インスタンスは、T3、C5、R5、G4d、および M5 インスタンスが使える。←実際はもう少し制限が強いです。
　・EBSは、汎用 SSD (gp2)が使える。
　・Shiledは、スタンダードのみ使える。
　・ELBは、使えない。
　・ECS,EKS,VPC,DirectConnectは、使える。


試したこと
---
①Local Zonesを有効にした。
②Local Zonesはどこで設定するのか確認した。
③Local Zonesと通信できるようにするにはどうすればよいか確認した。

### ①Local Zonesを有効にした。
　EC2のダッシュボードから「アカウントの属性」にあるゾーンを選択します。
　　![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/7adfd172-2ff1-c618-e9d2-a683cdc5a1f4.png)

　有効にしてゾーングループを更新します。
　　![2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/a4cffdf4-6364-2d19-7d24-ae43a96ca3c2.png)

　これだけでした。
  　![2-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/35437cea-816f-0b17-8407-a1d21e123fea.png)

　無効化するときには、サポートケースを起票する必要があるそうです。
　　![2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/7549c23f-398c-e973-5ed0-c5a1e1ffdd8a.png)

### ②Local Zonesはどこで設定するのか確認した。
　VPCのサブネット作成からアベイラビリティゾーンを選択する箇所で東京のアベイラビリティゾーンに加えて、Local Zonesも表示されるようになりました。
システム全体概要やLocal Zonesを知らない人（意識したことない人）は、「1a,1c,1d以外のazが選択できるようになったの？」と誤解することでしょう。
　　![2-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/b6deb9a7-557d-d918-2ccd-c7713ab892eb.png)

### ③Local Zonesと通信できるようにするにはどうすればよいか。
　ロケーションの違いがあるので色々と気になります。
　東京のAZと台北のLocal Zonesのサブネットはルートテーブルだけで通信できるのか？
　VPC間の通信は、PeeringとTransitGatewayで通信できるのか？
　特にTransitGatewayは、サポートしていないので特に気になったので検証します。
　DirectConnectも試したかったですが環境の用意が困難なので今回は見送ります。

　試した構成はこちらです。
　　![2-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/6c6b836a-9287-799a-bb61-5aefa71dc057.png)


　それでは検証を始めます。
　1.VPCを作ります。　割愛します。
　2.サブネットを作ります。
　　手順は省略しますが、サブネットを作成する操作でアベイラビリティゾーンの指定を台北にするだけでエラーなく作成できました。
　　![2-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/4a936604-46e5-0411-d52d-63783880c622.png)
　　![2-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/740cf446-f0d7-a82a-9a7b-69196e0255fa.png)
　　![2-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/2eaa97e9-9960-394a-ecce-c8f4af4c25f6.png)

　3.EC2インスタンスを作成します。
　　t3.mediumのAmazon Linux 2 Kernel 5.10 AMI 2.0.20230119.1 x86_64 HVM gp2を4台作ろうとしましたが、構成エラーにより起動できません。（ちょっとハマりました。もう少しメッセージが優しいと嬉しいですね。）
　　![2-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/f166130e-3d5d-851e-5866-90a1bc8cdede.png)

　　ドキュメントは隅々まで確認しましょう。台北のLocal Zonesでサポートされるインスタンスタイプは、以下の4件でした。
　　![2-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/293c7d5b-7ca7-48bc-7aa1-8f99a7df8b41.png)

　　m5.2xlargeのAmazon Linux 2 Kernel 5.10 AMI 2.0.20230119.1 x86_64 HVM gp2にすることで起動できました。
　　![2-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/cc42047e-3da3-52ed-de5f-db8f7d6e9ea5.png)
　　

　4.VPC Peeringを設定します。 割愛します。
　　

#### ③-1 subnet間
　特に何も問題なく無事に通りました。
　![2-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/9abf9635-a75d-702f-2049-9f19fc7c5fe5.png)


#### ③-2 VPC間(VPCPeering)
　特に何も問題なく無事に通りました。
　![2-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/f8a5428a-3f4c-c7c4-fe3b-a248689c710f.png)


#### ③-3 VPC間(TransitGateway)
　TransitGatewayAttachmentをLocalZonesのサブネットに作ろうしましたが、エラーが出ました。サポートされてませんので当たり前です。
　![2-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/8f62df32-c9dc-08d3-b816-7e7cc90b1406.png)
　![2-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/6263e58b-7a02-8a75-9b63-9a7e0deb4093.png)

　VPC内にLocal Zonesを持つ、アベイラビリティゾーンのサブネットにTransitGatewayAttachmentを作成しました。
　![2-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/a49a9113-ea22-72b6-4b90-dc8a206bdb72.png)
　![2-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/f611202d-f955-02cc-cd07-6a5e29cd3c34.png)

　pingは通らなかったので、Reachability Analyzerで確認しました。
　送信元（EC2インスタンス）が、トラフィック送信元のアベイラビリティゾーンにアタッチメントの登録がないので到達不可となります。
　TransitGatewayAttachmentをLocal Zonesには作成できないので、TransitGatewayは使用できないようです。
　![2-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/9b171849-834d-7f8d-3b64-546f1d382627.png)

　



余談
---
### NATゲートウェイをLocalZonesのサブネットに作ろうとした。
アベイラビリティゾーンではないとエラーがでました。
![2-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/958e3fc4-6e6a-3660-3039-4fea6fccab36.png)

### Elastic IPをLocal Zonesのインスタンスにアタッチする。
あまり意識してませんでしたが、Elastic IPを作成するときにはネットワークボーダーグループを指定します。Local Zones（台北）を有効化した場合、ネットワークボーダーグループのリストが増えています。
これに気づけないと、EC2インスタンスにアタッチする際にElastic IPが表示されず、アタッチできません。
![2-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2606412/c4e545db-989c-aae5-af35-3e3b1600caab.png)


まとめ
---
・LocalZonesは、希望に近い地域でインスタンスを動かすことができる。
・VPCやサブネットと同じ感覚で使用するとネットワーク構成が実現できない可能性もある。サポートしているサービス等をよく調べた方が良い。
・低レイテンシを目的に近い地域でインスタンスを起動しても、ネットワークがリージョン経由になってしまう等があり得ると考えている。使い方に合わせてネットワークも含めて事前に十分に確認した方が良い。
・ユースケースに合わせて使っていきます！