🕌

Cloud FormationとAWS CLI

2022/09/22に公開

準備

  • AWS CLIをインストールしておく
  • access key発行
    • AWSコンソール右上 > セキュリティ認証情報 > アクセスキーの作成
  • aws configureを設定
$ aws configure
AWS Access Key ID [None]: 発行したキー
AWS Secret Access Key [None]: 発行したシークレットアクセスキー
Default region name [None]: ap-northeast-1 ★東京
Default output format [None]: json

CloudFormationその1

動作確認用にとりあえずVPCだけ

スタック

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/stacks.html
テンプレートによってプロビジョニングされるリソースの集合
テンプレートでパラメータを指定して、例えばec2インスタンスタイプなどをスタック作成時に指定できる

プロビジョニング

サーバやデータベース等のリソースについて、利用者からの申請や要請に応じて必要な分だけ割り当てを行うサービス

テンプレート

AWSリソースの設定について記述するファイルのことをCloudFormationテンプレートという

AWSTemplateFormatVersion: 2010-09-09
Description: my test vpc description
Parameters:
Resources:
  MyTestVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.10.0.0/16
      Tags:
        - 
          Key: Name
          Value: my-test

とりあえず実行してみるその1

# 作成
$ aws cloudformation create-stack --stack-name my-vpc --template-body file://./example.yaml
{
    "StackId": "arn:aws:cloudformation:ap-northeast-1:516310581295:stack/my-vpc/6264d850-3a0f-11ed-b264-0eb548589c35"
}

# 確認
$ aws cloudformation describe-stacks
{
    "Stacks": [
        {
            "StackId": "arn:aws:cloudformation:ap-northeast-1:516310581295:stack/my-vpc/6264d850-3a0f-11ed-b264-0eb548589c35",
            "StackName": "my-vpc",
            "Description": "my test vpc description",
            "CreationTime": "2022-09-22T00:42:26.412000+00:00",
            "RollbackConfiguration": {},
            "StackStatus": "CREATE_COMPLETE",
            "DisableRollback": false,
            "NotificationARNs": [],
            "Tags": [],
            "DriftInformation": {
                "StackDriftStatus": "NOT_CHECKED"
            }
        }
    ]
}

# 削除
$ aws cloudformation delete-stack --stack-name my-vpc

# 削除確認 (DELETE_COMPLETE)
$ aws cloudformation list-stacks
{
    "StackSummaries": [
        {
            "StackId": "arn:aws:cloudformation:ap-northeast-1:516310581295:stack/my-vpc/6264d850-3a0f-11ed-b264-0eb548589c35",
            "StackName": "my-vpc",
            "TemplateDescription": "my test vpc description",
            "CreationTime": "2022-09-22T00:42:26.412000+00:00",
            "DeletionTime": "2022-09-22T00:47:35.999000+00:00",
            "StackStatus": "DELETE_COMPLETE",
            "DriftInformation": {
                "StackDriftStatus": "NOT_CHECKED"
            }
        }
    ]
}

CloudFormationその2

パブリックサブネットとルートテーブルを追加。
!Refを使って、リソース同士の紐付けを行う。

Resources:
  MyTestVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.10.0.0/16
      Tags:
        - 
          Key: Name
          Value: my-test
  myPublicRouteTable:
      Type: AWS::EC2::RouteTable
      Properties:
        VpcId: !Ref myTestVPC
        Tags:
        - Key: Name
          Value: my-test-Public

  MyTestPublicSubnet1A:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: 10.10.0.0/24
      MapPublicIpOnLaunch: true
      VpcId: !Ref myTestVPC
      AvailabilityZone: ap-northeast-1a
      Tags:
        - Key: Name
          Value: my-test-public-1a
  PubSubnet1ARouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref myTestPublicSubnet1A
      RouteTableId: !Ref myPublicRouteTable


  MyTestPublicSubnet1C:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref myTestVPC
      CidrBlock: 10.10.2.0/24
      AvailabilityZone: ap-northeast-1c
      Tags:
      - Key: Name
        Value: my-test-public-1c
  PubSubnet1CRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref myTestPublicSubnet1C
      RouteTableId: !Ref myPublicRouteTable

Discussion

ログインするとコメントできます