【AWS】AWS CloudFormation ~ 入門編 ~

■ はじめに

AWS CloudFormation (CFn)  を触ったのでメモ。

目次

【1】CloudFormation
【2】料金
【3】動画
【4】関連用語
 1)スタック (Stacks)
 2)ドリフト検出(Drift Detection)
【5】サンプル
 例1:S3バケット作成
 例2:1 VPC 1 Subnet作成

【1】CloudFormation

* AWSシステム構成をJSON/YAMLで記述してテンプレート化し、
 AWSリソースを自動で構築するサービス
 => 環境のコード化(IaC; Infrastructure as Code)の実現

【2】料金

* 無料
* ただし、構成したリソース(EC2、S3など)の料金は必要

【3】動画

* イメージが付きやすいように、
 一度、以下の動画をみてみるのもいいかも。

https://www.youtube.com/watch?v=Na9Wl4Flr8M&t=8s
https://www.youtube.com/watch?v=8uvWfCs6orE
AWS 公式

* 1時間位あるが、大体理解できたら
 流石、AWSの方が説明しているので、
 聞いておいた方がいいと思う

https://www.youtube.com/watch?v=HU47ZAM3mtw
https://www.youtube.com/watch?v=Viyqh9fNBjw
https://www.youtube.com/watch?v=XOuhtEIdf0k

【4】関連用語

1)スタック (Stacks)

* テンプレートによって作成されたリソース群

2)ドリフト検出(Drift Detection)

* テンプレートと現状のリソースとの差分(ドリフト)を検出

動画解説
https://youtu.be/HU47ZAM3mtw?t=1892

【5】サンプル

例1:S3バケット作成

Resources:
  HelloBucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: PublicRead
      WebsiteConfiguration:
        IndexDocument: index.html
        ErrorDocument: error.html

例2:1 VPC 1 Subnet作成

AWSTemplateFormatVersion: '2010-09-09'

Description: "Create 1 VPC and 1 Subnet"

Resources:
  # ------------------------------------------------------------#
  #  VPC
  # ------------------------------------------------------------#
  DemoVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      InstanceTenancy: default
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
      - Key: Name
        Value: DemoVPC
  # ------------------------------------------------------------#
  #  Sunbet
  # ------------------------------------------------------------#
  DemoSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: "us-west-2a"
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: 'true'
      VpcId: !Ref VPC
      Tags:
      - Key: Name
        Value: DemoSubnet

参考文献

公式サイト
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html
一般サイト
https://atmarkit.itmedia.co.jp/ait/articles/1408/25/news014.html
https://dev.classmethod.jp/articles/cloudformation-beginner01/
https://zenn.dev/soshimiyamoto/articles/3c624728438902

関連記事

AWS CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326
AWS CloudFormation ~ 組み込み関数 ~
https://dk521123.hatenablog.com/entry/2021/12/04/202519
AWS CloudFormation ~ 疑似パラメータ ~
https://dk521123.hatenablog.com/entry/2021/12/05/134313
CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
CodePipeline ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/23/231827
CodeDeploy ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/30/122803
Amazon ECR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/22/165711
AWS Lake Formation ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/10/13/094041
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
機密データの管理 ~ パラメータストア / Secrets Manager ~
https://dk521123.hatenablog.com/entry/2020/01/31/231636
YAML (YAML Ain't Markup Language)
https://dk521123.hatenablog.com/entry/2019/10/13/000000