先月の2月22日、待ちにまったInter-Region VPC Peeringが東京リージョンにもやってきました
Inter-Region VPC Peeringは世界中の(対応している)リージョンとVPC Peerを張れる機能です。
これで、今まで東京リージョンに来ていなかったAWSサービスを使う事が可能となります。
EC2 C5シリーズとか、ECS Fargateとか、Amazon EFSとか!
それでは、早速導入していきましょう。
Webコンソールからはボタン3つぐらいで出来るのですが
今回はAnsibleを使って構築していきます。
概要
Ansible2.5のec2_vpc_peerモジュールでpeer先のリージョンが指定できるようになります。
https://github.com/ansible/ansible/blob/stable-2.5/lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py#L30-L34
Ansible2.5を待てない人や、何かしらの理由でアップデート出来ない人は
ライブラリに追加する事で利用ができます。
手順
Ansible2.5のモジュールをコピー
Ansible2.5にアップデート出来る人はこの対応が不要です。
ライブラリパスの通る場所に
上記ec2_vpc_peer.pyファイルを置いてしまいましょう。
ライブラリとAnsible本体に同盟のモジュールがある場合は
ライブラリのモジュールが優先されます。
一部機能だけ先に使いたい場合はダウンロードする事で
古いバージョンのまま新しいモジュールを使うことができます。
もちろん、依存関係があるモジュールなどは依存を気にする必要はありますが。
私の場合は以下のようなファイル構成にして利用しました。
user@my-serv:~/ansible-setup-repository/aws-vpc$ tree -a
.
├── library
│ ├── ec2_vpc_peer.py
│ ├── .gitignore
│ └── README.md
└── tasks
└── main.yml
私はgitignoreで除外設定をしてREADME.mdに説明を書いていましたが
git submoduleなどで管理してもいいですね。
2つのリージョンのVPCを用意
VPC Peerを貼るVPCを用意します。
VPCを作る手順は省略します。
Qiitaにもいくつか記事がありますので、参考までにリンクを記載します。
https://qiita.com/search?q=VPC+ansible
この時、Peerを張る先のリージョンをきちんと確認しておきましょう。
(当然ですが…)。
東京リージョンに来ていないFargateやC5インスタンスはus-east-1リージョンで利用可能ですが
過去の障害実績や利用サービス、料金などを見てリージョンを選びましょう。
リージョンごとに利用できるサービス一覧は以下のページが参考になります。
https://aws.amazon.com/jp/about-aws/global-infrastructure/regional-product-services/
過去のリージョンごとの障害は以下の記事を見ておくと安心できます。
https://qiita.com/saitotak/items/07931343bcb703b101f8
Ansibleでピア設定
Ansible TaskでPeerの設定をします。
以下は参考までに私が記載したTaskです。
- name: Create Connection vpc-a_vpc-b
ec2_vpc_peer:
profile: "{{ vpc-a_profile }}"
vpc_id: "{{ vpc-a_vpc_id }}"
region: "{{ vpc-a_region }}"
peer_owner_id: "{{ vpc-b_account_id }}"
peer_vpc_id: "{{ vpc-b_vpc_id }}"
peer_region: "{{ vpc-b_region }}"
tags:
Name: "{{ peer_name }}"
state: present
register: _vpc_peer
明確に変更があったのはpeer_regionパラメータだけですね。
その他には、ap-northeast-1固定だったリージョンを変数化していたります。
その後、Route Tableの設定なども必要ですが
これは普通のVPC Peer設定と変わらないですね。
最後に
これで東京リージョンに来ていないAWSサービスが利用しやすくなりました!
リージョン間の通信費など、考えないといけない事は残っていますが
別リージョンのサービスをVPC内で完結して利用できるので
導入のハードルがだいぶ下がったのではないでしょうか。