今回は、先日書籍(Amazon Web Servicesクラウドデザインパターン設計ガイド)の発売も発表された
Cloud Design Pattern(CDP)の記事になります。
対象は「Stack Deployment パターン」です。
このパターンの「その他」にVPCのCloudFormationでVPCも構築ができることが記載されています。
またこのパターンは、単にシステムをコピーするだけでなく、
クラシックなEC2環境からユーザー企業と専用ネットワークでつながる
仮想プライベートクラウド「VPC(Virtual Private Cloud)」環境への 移行時にも適用できる。
そこで、実際にVPCの構築からVPN Connectionの作成までを試してみました。
作業内容としては、下記のテンプレートでスタックを作成するのみになります。
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "VPNConnection", "Mappings" : { "RegionMap" : { "ap-southeast-1" : { "AMI" : "ami-72621c20" } } }, "Resources" : { "EC2VPC" : { "Type" : "AWS::EC2::VPC", "Properties" : { "CidrBlock" : "10.0.0.0/16" } }, "EC2VPNGateway" : { "Type" : "AWS::EC2::VPNGateway", "Properties" : { "Type" : "ipsec.1" } }, "EC2VPCGatewayAttachment" : { "Type" : "AWS::EC2::VPCGatewayAttachment", "Properties" : { "VpcId" : {"Ref" : "EC2VPC"}, "VpnGatewayId" : {"Ref" : "EC2VPNGateway"} } }, "EC2CustomerGateway" : { "Type" : "AWS::EC2::CustomerGateway", "Properties" : { "Type" : "ipsec.1", "BgpAsn" : "65000", "IpAddress" : "xxx.xxx.xxx.xxx" } }, "EC2VPNConnection" : { "Type" : "AWS::EC2::VPNConnection", "Properties" : { "Type" : "ipsec.1", "CustomerGatewayId" : {"Ref" : "EC2CustomerGateway"}, "VpnGatewayId" : {"Ref" : "EC2VPNGateway"} } } }, "Outputs" : { } }
注意点は下記となります。
- Mappingsには一つ以上のマッピングテーブルが必要(関係ないAMIのマッピングテーブルを定義)
- VPCGatewayAttachmentのプロパティであるIpAddressがドキュメントにはIPAddressと記載されている
- CustomerGatewayのプロパティであるVpnGatewayIdがドキュメントにはVPNGatewayIDと記載されている
- VPNConnectionのプロパティであるCustomerGatewayIdとVpnGatewayIdがドキュメントにはCustomerGatewayIDとVPNGatewayIdと記載されている
(ドキュメントは後日訂正されると思います)
そして、AWSマネジメントコンソールにて上記のテンプレートでスタックを作成します。
スタックを作成すると下記のように、AWSリソースの作成が開始されます。
下記のようになれば、作成完了です。
作成ログは、Eventタブから確認することができます。
今回はVPN Connenction作成までの最低限のリソースで試しましたが、サブネットやルーティングテーブルの
設定も可能です。
テンプレートを作るのは、少し大変です。