見出し画像

はじめてのCloudFormation

大丈夫や、俺もterraformしか使った事ない。chatgptと学ぶCloudFormation


AWS CloudFormation

chatgptによる解説

AWS CloudFormation(クラウドフォーメーション)は、AWSが提供するインフラストラクチャ自動化ツールです。インフラをコード(Infrastructure as Code, IaC)として定義し、テンプレートを用いてAWSリソース(例:EC2、S3、RDSなど)のプロビジョニング、管理、更新を一括で行うことができます。

主な特徴

  1. テンプレート駆動:

    • JSONまたはYAML形式のテンプレートを使用して、リソースの構成を記述します。

    • テンプレートには、リソースの依存関係や設定を記述できます。

  2. スタック:

    • CloudFormationではテンプレートで定義されたリソースの集合を「スタック」として管理します。

    • スタック単位で作成、更新、削除を行うため、一括操作が可能です。

  3. 自動化:

    • 手動でリソースを設定する必要がなく、テンプレートを実行するだけでリソースが作成されます。

    • 一貫性のある環境を構築できるため、運用負荷を軽減します。

  4. リソースの依存関係管理:

    • リソース間の依存関係を自動で解析し、正しい順序で作成・削除を行います。

  5. 更新の安全性:

    • 更新時には「変更セット」を作成し、リソースへの影響を確認してから適用できます。

主な用途

  • インフラの一括プロビジョニング: 開発環境や本番環境の構築を効率化します。

  • 環境の複製: 一つのテンプレートを使い、同じ構成を他の環境に適用できます。

  • 変更管理: 更新履歴をテンプレートで管理でき、構成ミスを防ぎます。

メリット

  • 可読性: YAML/JSONテンプレートでインフラ構成を視覚化。

  • 再利用性: テンプレートを共有・再利用可能。

  • コスト効率: 不要になったスタックを簡単に削除可能。

制限事項

  • 学習コスト: テンプレート作成には慣れが必要。

  • 複雑さ: 大規模環境ではテンプレートが煩雑になりがち。

AWSの公式ドキュメントやサンプルテンプレートを活用すれば、スムーズに導入を進められます。

例としてVPCを作成してみる

VPCとは

VPC (Virtual Private Cloud) は、AWS上で仮想的に分離されたネットワーク環境を提供するサービス。まあ分離されたネットワーク空間ということで1つのプロジェクトに1つVPCがあるのが普通

作ってみる(YAML)

chatgptが出力してきたyaml

AWSTemplateFormatVersion: "2010-09-09"
Description: Simple VPC Creation Example

Resources:
  MyVPC:
    Type: "AWS::EC2::VPC"
    Properties:
      CidrBlock: "10.0.0.0/16"
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: "Name"
          Value: "MySimpleVPC"

これをCloudShellで編集あるいはCloudShellにuploadしてみる。CloudShellの使い方は解説省略していいよね?

simple-vpc.yamlと命名する。

続いて

aws cloudformation create-stack  --stack-name SimpleVPCStack  --region ap-northeast-1 --template-body file://simple-vpc.yaml

とすると

[cloudshell-user@ip-10-134-19-71 ~]$ aws cloudformation create-stack  --stack-name SimpleVPCStack  --region ap-northeast-1 --template-body file://simple-vpc.yaml
{
    "StackId": "arn:aws:cloudformation:ap-northeast-1:****:stack/SimpleVPCStack/dd8aef40-a710-11ef-b761-066f8bb1d58f"
}

となった

作成されたstackの確認

https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks

とかで確認できる。

SimpleVPCStackが見える

作成されたvpcをみると

このようにMySimpleVPC が作成されている事が確認できる。

ここまでのまとめ

  • VPCのyamlを作成し

  • スタック作成コマンドを実行し

  • 状態を確認した

以上をCloudShellを通じて行った

作業の問題点

  • CloudShellで作業しつづけるのは辛い

  • 別サーバーでawsコマンドで入力するのはさすがにベタな気がする

って考えるとCodePipelineを使うという手法が考えられすぎるので次回以降セットアップしてみよう。

おまけ: aws cloudformationのサブコマンド

使用頻度が高いコマンド

  • スタック操作: create-stack, update-stack, delete-stack

  • 情報確認: describe-stacks, get-template

  • テンプレート確認: validate-template

  • 変更セット: create-change-set, execute-change-set

だそうです


#aws #aws学習 #aws初心者


いいなと思ったら応援しよう!