AWSIaC

AWSのCloudFormationでIaCを実践してみる(1) – VPC

AWS

1. はじめに

AWSアカウントを取得した後、EC2インスタンスを作成して利用したいといった場合には、まずはEC2を配置するためのネットワークであるVPCやサブネット、ルーティングテーブルなどを作成する必要があります。

マネージメントコンソール経由で手動でVPCを作成する事ももちろん可能ですが、AWSではCloud Formationというコードでインフラを管理するInfrastructure as Code(IaC)を行うことができるサービスが提供されています。

※IaCのためのツールはTerraformやAWS CDKなどありますが今回は基本となる「CloudFormation」を利用します

※IaCのメリットなどについての説明は省略します。他サイトを参照してください。

Cloud FormationはVPCなどのネットワーク関連はもちろんの事、EC2などのインスタンスやIAMなどの権限周りなども含めてコード化することができるサービスです。

全てのAWSリソースを管理できるわけではない(一部のサービスは対応していなかったりするため)のですが、可能な限りCloud Formationで管理することで、IaCのメリットを最大限に受けることができます。

この記事ではVPCやEC2が何も構築されていない状態から、基本的なインフラ環境を全て「CloudFormation」を利用することでInfrastructure as Code(IaC)で構築していきたいと思います。

目標としてはAWSアカウントを取得したゼロの状態から、IaCでVPCやRole、SecurotyGroupなどの最低限のリソースを作成して、EC2インスタンスを作成する、というところまで行う事です。

※今回実施することは基本的には無料ですが、利用料金が発生する可能性が少なからずありますので、あくまで自己責任でお願いします。

AWSのCloudFormationでIaCを実践してみる(すべての記事一覧)
第1回 – VPC  https://syachiku.net/awscloudformationiac1-vpc/
第2回 – Role  https://syachiku.net/awscloudformationiac2-iam-role/
第3回 – SecurityGroup  https://syachiku.net/awscloudformationiac3-sg/
第4回 – EC2  https://syachiku.net/awscloudformationiac4-ec2/
第5回 – VPC FlowLogs https://syachiku.net/awscloudformationiac5-flowlogs/
第6回 – CloudTrail https://syachiku.net/awscloudformationiac6-trail/
第7回 – R53 HostedZone https://syachiku.net/awscloudformationiac7-r53-hosted/

2. 前提条件

  • AWSアカウントが取得できていること
  • 適切な権限(=Admin相当)をもったIAMユーザーを作成していること
  • ルーティングなどの最低限のネットワークの知識があること
  • YAMLの書きかたを知っていること(CloudFormationはjsonもしくはyamlで書けますが、今回はyamlで書いていきます。)
AWSではじめるインフラ構築入門 安全で堅牢な本番環境のつくり方

AWSではじめるインフラ構築入門 安全で堅牢な本番環境のつくり方

中垣健志
2,970円(09/18 15:40時点)
発売日: 2021/02/10
Amazonの情報を掲載しています

3. 今回作成するAWS環境

何もない状態から最初に必要となるVPCとサブネット、インターネットゲートウェイ(IGW)などの以下のリソースを1つのコード(Cloud Formationではスタック(Stack)という単位で管理されます)で作成していきます。

今回は新しくできた大阪リージョンで試してみたいと思います。

  • VPC … 大阪リージョン(ap-northeast-3)に作成
  • Subnet … 構成図のようにPublicとPrivateでAZを分けて構築(PublicSubnetにはPublicIPを付与)
  • RoutingTable … 共通で一つ作成
  • IGW … PublicのSubnetと紐づけ

4. 構成図

5. CloudFormation Template

以下のgithub上に保管していますので参照ください。
https://github.com/gogoloon/aws-cfn-setup/tree/aws-infra-01

基本的にはこちらのサイトを参考にしながらテンプレートを作成しました。 大阪リージョン(ap-northeast-3)関連やPublicIPの付与、ルートテーブル部分を少し修正しています。

6. スタックの作成

それでは先ほど作成したコードを使って、リソースを作成していきます。いよいよIaCの第一歩です。

※AWS CLIでも作成できるのですが、今回はマネージメントコンソール経由で作成します。

マネージメントコンソールにログオンして、リージョンを大阪に切り替えた、CloudFormationを開きます。

「スタックの作成」→「新しいリソースを使用」を選択します。

「テンプレートファイルをアップロード」からコードのファイルを選択します(今回はaws-infra-vpc.template.yamlというファイル名で保存しています)

スタックの名称やネットワーク設定値を入力(デフォルトから変更したい場合には変更してください)してスタックの作成まで進めます。

スタック作成が開始されると「CREATE_IN_PROGRESS」というステータスとなり、スタック内のリソースであるVPCやSubnetなどが作成されていきます。

たったこれだけでAWSリソースを作成することができます。

7. 作成されたリソースの確認

しばらくするとステータスが「CREATE_COMPLETE」となりスタック作成が完了します。

それでは作成されたリソースを確認してみます。

7.1. VPC

7.2. サブネット

7.3. ルートテーブル

7.4. インターネットゲートウェイ(IGW)

8. まとめ

想定した通りのネットワーク関連のリソースが作成できました。

次回からはEC2のDeploy時に必要となるIAM Roleを作成します。

AWSを効率的に学習する方法

私がAWSを学習するために使った学習材料は「Udemy」だけです。

まずは座学を行ってAWSプラクティショナー もしくは ソリューションアーキテクト試験を取得することを目標にしました。

具体的にはUdemyで以下の2つの商材を購入して学習しました。AWS公式が提供している模擬試験も受けていません。

Udemyは世界最大級のオンライン学習プラットフォームで、世界中の学びたい人と教えたい人をオンラインでつなぐサービスです。 Udemyは米国Udemy,Inc.が運営するプラットフォームで日本ではベネッセが事業パートナーとして協業をしています。 C2C(consumer to consumer)により生まれる豊富で多彩な講座により個人の学習ニーズに応じた学びをみつけることができます。

これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)

今回は以上となります。

コメント

タイトルとURLをコピーしました