こんにちは、AWS事業本部の荒平(@0Air)です。
Application Migration Service (AWS MGN)のステージングをサクッと準備したいけど、何度も作成したり削除するのは面倒だなーと思うことがあります。
CloudFormationで用意すれば楽に管理できます。同じ悩みを持つ方や未来の私に向けて作成してみました。
CloudFormationを初めて触る方は、以下もご参考ください。
実現したいこと
以下の記事のネットワークを一発で用意します。(詳細なルーティングなどを除く)
構成図は上記記事から拝借しました。
図の右側(Staging VPC)に加えて、Public Subnet, Private Subnetを一つずつ用意します。
成果物
以下のCloudFormationテンプレートによって、VPC, Internet Gateway, PublicSubnet, PrivateSubnet, VPC Endpoint 4つがデプロイされます。
セキュリティグループやルートテーブル、CIDRなどは環境に応じて設定変更してください。
また、DirectConnectを経由しない場合など、VPC Endpointの作成が不要な場合は、58行目以降を削除します。
Resources:
MyVPC:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: '172.16.0.0/16' # 環境に合わせて、CIDRブロックを変更してください
PublicSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId:
Ref: MyVPC
CidrBlock: '172.16.1.0/24' # 環境に合わせて、CIDRブロックを変更してください
MapPublicIpOnLaunch: true
InternetGateway:
Type: 'AWS::EC2::InternetGateway'
AttachGateway:
Type: 'AWS::EC2::VPCGatewayAttachment'
Properties:
VpcId:
Ref: MyVPC
InternetGatewayId:
Ref: InternetGateway
PublicRouteTable:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId:
Ref: MyVPC
PublicRoute:
Type: 'AWS::EC2::Route'
DependsOn: AttachGateway
Properties:
RouteTableId:
Ref: PublicRouteTable
DestinationCidrBlock: '0.0.0.0/0'
GatewayId:
Ref: InternetGateway
SubnetRouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
SubnetId:
Ref: PublicSubnet
RouteTableId:
Ref: PublicRouteTable
PrivateSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId:
Ref: MyVPC
CidrBlock: '172.16.2.0/24' # 環境に合わせて、CIDRブロックを変更してください
MapPublicIpOnLaunch: false
# ここから下はVPC Endpointの作成(不要な場合は削除してください)
EC2VPInterfaceCEndpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
VpcId:
Ref: MyVPC
ServiceName: !Sub "com.amazonaws.${AWS::Region}.ec2"
VpcEndpointType: Interface
MGNVPCInterfaceEndpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
VpcId:
Ref: MyVPC
ServiceName: !Sub "com.amazonaws.${AWS::Region}.mgn"
VpcEndpointType: Interface
S3VPCInterfaceEndpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
VpcId:
Ref: MyVPC
ServiceName: !Sub "com.amazonaws.${AWS::Region}.s3"
VpcEndpointType: Interface
S3VPCGatewayEndpoint:
Type: 'AWS::EC2::VPCEndpoint'
Properties:
VpcId:
Ref: MyVPC
ServiceName: !Sub "com.amazonaws.${AWS::Region}.s3"
VpcEndpointType: Gateway
RouteTableIds:
- !Ref PublicRouteTable
スタックをデプロイします。
スタック名の論理IDが「CREATE_COMPLETE」のステータスになれば、正常に作成されています。
おわりに
Application Migration Service (AWS MGN)のステージング環境を作成する必要があったため、一発で用意するためのテンプレートを準備しました。
よく利用する定形のネットワークに関しては、こうしてテンプレート化しておくと作業の手間が省けて便利です。
このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!