【初心者の目線でわかりやすい】AWS CloudFormation1~概念を学ぼう

AWS

2023.6.20

Topics

初めまして。新入社員の「kisaragi」と申します。音楽・ゲーム・旅行が好きです。
この記事では、初心者の目線でCloudFormationの概念を学んでいきます。

▼ 今回の「初心者の目線でわかりやすいAWS CloudFormation」は2編で構成されています。 

1 編 :【初心者の目線でわかりやすい】AWS CloudFormation1~概念を学ぼう
2 編 :【初心者の目線でわかりやすい】AWS CloudFormation2~インフラを構築してみよう

環境

  • ap-northeast-1(東京)
  • VSCode

AWS CloudFormationってなに?

「AWS CloudFormation」とは?

  • AWSインフラ管理の簡素化を目的とした IaC (Infrastructure as code) サービスです。
    IaC : コードでインフラを構築・管理する手法です。
  • Json または Yaml形式でインフラを構築・管理することができます。
    Yamlではを用いたコメント機能など、Jsonにはない一部の機能が提供されています。
    💡 AWS CloudFormation テンプレート形式

:「で説明コメントの追加ができます。:「でコードをわかりやすくできます。

【メリット】

  • コードでインフラを構築・管理する為、運用しやすくなります。
  • インフラの手動管理と比べ、所要時間もミスも減らせます。
  • 作成したコードは共有したり、他のAWSアカウント・リージョンでもすぐ使えます。

【デメリット】

  • CloudFormationの学習には時間がかかります。
  • 簡単な構築・修正は手動の方が簡単な場合があります。
  • DBバージョンの変更などで再利用できない場合があります。

▼ AWS CloudFormationの概要に関しては以下をご覧ください。
💡 AWS CloudFormation の概要

「Template」と「Stack」

「Template」:

  • AWSリソースを定義したJson または Yaml形式のテキストファイルです。

「Stack」: 

  • TemplateでAWSリソースを管理するユニットです。
    * Stackを作成・更新・削除することで、AWSリソースを管理できます。

「Template」の「セクション」

TemplateセクションのResourcesは必須、その他は任意です。

  • AWSTemplateFormatVersion(任意):Templateのバージョンです。
  • Description(任意):Templateの説明です。
  • Parameters(任意):よく使う値を定義し、後で呼び出す形にできます。
  • Resources(必須):Amazon EC2など、AWSリソースを作成します。

他にもセクションはたくさんありますが、この記事ではこの4つのセクションのみ紹介していきます。
▼ 他のセクションが気になる!って方は以下をご覧ください。
💡 AWS CloudFormation – テンプレートの構造分析

a. Templateを作成する前に、この2つのセクションから整理しましょう!

  • AWSTemplateFormatVersion(任意):Templateのバージョンです。
  • Description(任意):Templateの説明です。
  • Parameters(任意):よく使う値を定義し、後で呼び出す形にできます。
  • Resources(必須):Amazon EC2など、AWSサービスを設定です。
AWSTemplateFormatVersion: 2010-09-09
Description: Hands-on for AWS CloudFormation Beginner

i. AWSTemplateFormatVersion(任意)

  • Templateの機能を識別します。コード作成の前、宣言しておく習慣をつけましょう。

ii. Description(任意)

  • Templateの説明です。今回は「Hands-on for AWS CloudFormation Beginner」にしました。

続いて、Parametersを整理しましょう!

  • AWSTemplateFormatVersion(任意):Templateのバージョンです。
  • Description(任意):Templateの説明です。
  • Parameters(任意):よく使う値を定義し、後で呼び出す形にできます。
  • Resources(必須):Amazon EC2など、AWSリソースを作成します。
Parameters: # Parameters Start
 AvailabilityZone1:
  Type: String
  Default: "ap-northeast-1a"
  Description: "az-1a"
 AvailabilityZone2:
  Type: String
  Default: "ap-northeast-1c"
  Description: "az-1c"
 ImageID:
  Type: String
  Default: "ami-08928044842b396f0"
  Description: "AMI"
 MyName:
  Type: String
  Default: "kisaragi"
  Description: "Please My Name"

iii. Parameters(任意)

  • よく使う値を事前に定義し、後で呼び出す形にできます。
    使用例としては、下記のようにより識別しやすくできます。

図1:Parametersで宣言したMyNameを呼び出しています。

 

図2MyName」- VPCという名前のVPCが作成されました。

最後に、Resourcesを整理しましょう!

  • AWSTemplateFormatVersion(任意):CloudFormation テンプレートのバージョンです。
  • Description(任意):テンプレートの説明です。
  • Parameters(任意):よく使う値を定義し、後で呼び出す形にできます。
  • Resources(必須):Amazon EC2など、AWSリソースを作成します。
Resources: # Resources Start
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Sub "${MyName}-vpc" # kisaragi-vpc

iiii. Resources(必須)

  • AWSリソースを宣言します。VPCやEC2など、AWS上のリソースを作成できます。

まとめ

今回はCloudFormationの概念を学びました。

続いて、2編ではAWS CloudFormationで実際AWSインフラを構築していきます。

2 編 :【初心者の目線でわかりやすい】AWS CloudFormation2~インフラを構築してみよう

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

kisaragi

- 2024 Japan AWS Jr. Champions

2023年度新卒入社。出身は韓国です。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら