presents by IT Consulting 109

AWS – CloudFormationで環境構築 VPC編

概要

今回から複数回に分けて CloudFormation を利用した環境構築について連載していきます。

 
まず、CloudFormation で環境を作成する際は依存関係に留意しないといけません。

たとえば、VPC が存在しないとサブネットも作れませんし、サブネットがなければEC2インスタンスも起動できません。また、IAMでユーザーやロールがなければ、S3のバケットにポリシーを割り当てたり、Lambdaに実行権限を与えることもできないということです。
 
しかし、VPC がなくても IAM でユーザーは作成できますし、IAM にユーザーがいなくても VPC は作成できます。
例外として CloudFormation を実行する為にロールを割り当てる等、必要に応じて先に IAM でロールを作る事もありますが、そういった制約がないならある程度依存関係も絞り込まれます。

 
本章「VPC」編では以下の環境について構築を行います。
・VPC の作成
・インターネットゲートウェイの作成
・VPC に作成したインターネットゲートウェイをアタッチ

簡単にまとめると、新規に VPC とインターネットゲートウェイを作成して、新規 VPC にインターネットゲートウェイをアタッチするまでの構成です。

 
イメージ図

 
それでは実際にコードを確認しながら説明していきます。

 

コード

AWSTemplateFormatVersion: 2010-09-09
Description: Creation of VPC and Internet gateway.


Parameters:
  ProjectCode:
    Type: String
    Default: itc109
    Description: Project Code

  IPv4CIDRblock:
    Type: String
    Default: 10.0.0.0/16
    Description: VPC CIDR Block

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock:
            Fn::Ref IPv4CIDRblock
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default
      Tags:
        - Key: Name
          Value: 
            Fn::Sub: vpc-${ProjectCode}

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: 
            Fn::Sub: igw-${ProjectCode}

  AttachGateway:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway


Outputs:
  VPCId:
    Value: !Ref VPC
    Export:
      Name: vpc

  InternetGatewayId:
    Value: !Ref InternetGateway
    Export:
      Name: igw

実行後に出力される値。

キー 値エクスポート名
VPCId vpc-***************** vpc
InternetGatewayId igw-***************** igw

 
スタックを実行することでインターネットゲートウェイがアタッチされた VPC が作成されたと思います。
出力で求められる「VPCId」は今後いろんなスタックからVPCIDの値として参照されます。
「InternetGatewayId」はルートテーブル等からの参照に使用されます。

AWS::EC2::VPC

新規にVPCを作成しています。

AWS::EC2::InternetGateway

新規にVPCを作成しています。

AWS::EC2::VPCGatewayAttachment

新規に作成したInternetGatewayをVPCにアタッチしています。

次回は、サブネット作成用に別スタックを作成して、今回のスタックを参照して構築する方法を紹介します。

 

補足

Fn::Ref IPv4CIDRblock
!Ref VPC

「Fn:Ref」「!Ref」は共に指定したリソースを参照して値を取得しています。
どちらで記述しても問題ありません。

AWS CloudFormationテンプレートリファレンス
AWS::EC2::VPC
AWS::EC2::InternetGateway
AWS::EC2::VPCGatewayAttachment

この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です