1. はじめに
AWSアカウントを取得した後、EC2インスタンスを作成して利用したいといった場合には、まずはEC2を配置するためのネットワークであるVPCやサブネット、ルーティングテーブルなどを作成する必要があります。
マネージメントコンソール経由で手動でVPCを作成する事ももちろん可能ですが、AWSではCloud Formation
というコードでインフラを管理するInfrastructure as Code(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で書いていきます。)
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の第一歩です。
マネージメントコンソールにログオンして、リージョンを大阪に切り替えたら、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を学習するために実施した方法は以下の通りです。
①最初に書籍(ハンズオンができる)を購入、座学でAWSの基礎を学習
②AWS資格試験を取得ための学習
※私の場合は①と②を合わせて2か月でソリューションアーキテクトを取得できました。
①AWS基礎学習
最初に購入した書籍は「Amazon Web Services 基礎からのネットワーク&サーバー構築」です。
Amazon Web Services 基礎からのネットワーク&サーバー構築
この本では、AWSの基本サービスを利用したハンズオンを通じて、AWSの基礎を学習することができます。
また、タイトル通りAWSのネットワークやインフラに関しても網羅しているため、もともとインフラ系の技術者ではない人たちにとっても分かりやすい内容だと思います。
とりあえずAWS上にサーバーを設定して開発を行うための準備までするには最良の一冊です。
Amazon Web Services 基礎からのネットワーク&サーバー構築
②AWS資格取得
AWSの基礎をある程度学習することができたら、次はAWS資格を取得しましょう。まずはAWSソリューションアーキテクトを目指しましょう。
資格勉強のための問題集をひたすら解きながら、AWSの知識を積み重ねて習得していきましょう!
苦行ではありますが、この問題集を3周ほどすればAWS用語や構成に関しても習得できているはずです。
今回は以上となります。
コメント