カテゴリー
2020年 AWS PaaS クラウド コンピューター サーバレス 技術一般 自動化

AWS を学ぶ(23)CloudFormation を使ってみる

AWS を学んでみようということで、今回は、AWS の CloudFormation を実際に使ってみました。

PVアクセスランキング にほんブログ村 にほんブログ村 IT技術ブログへ
にほんブログ村

前回の記事で、CloudFormation がどのようなものなのかを調べてみました。

今回は、実際に使ってみたいと思います。

  1. テンプレートでVPC を作成する
  2. Ref 関数でサブネットを作成する
  3. その他のネットワーク関連を作成する
  4. EC2 のひな形を作成する
  5. Parameters セクションを使って、実行時にEC2 のインスタンスタイプを選択できるようにする
  6. Parameters + AWS 固有のパラメーターを使用して、アカウントにあるキーペアを、EC2 実行時に埋め込む
  7. スタックの削除する

CloudFormation を使ってみる

テンプレートから基本環境の作成

まず最初に、VPCの状況を確認しておきます。

私の環境では、東京リージョンに、現在3つのVPCがあります。

AWS の管理コンソールの検索テキストボックスから、「CloudFormation」を検索してクリックします。

CloudFormation の管理コンソールが表示されます。

「スタックの作成」をクリックします。

スタックの作成画面が表示されます。

前回のサンプルテンプレートを使用します。サンプルスクリプトを保存し、拡張子を「.yml」にしておきます。

「ファイルの選択」をクリックし、YAMLのサンプルファイルを読み込ませます。

「デザイナーで確認」をクリックすると、YAMLファイルを読み込んで作成するスタックの状況がみられます。

VPCを作成する部分だと、こんな感じですね。

画面を戻を戻ると、作成のし直しになっちゃいますね。これって、見ない方がいいのかな?

進めると、スタックの名前の画面が表示されます。

スタックの名前を入力します。

「次へ」をクリックして進みます。

スタックのオプションの画面が表示されます。

今回は特に設定しません。

「次へ」をクリックして進みます。

レビューの画面が表示されますので、内容を確認します。

「スタックの作成」をクリックして、スタックを作成します。

スタックの作成が始まりました。

画面左側のメニューで、「CREATE_COMPLETE」の緑色の文字が表示されれば、スタックの作成は完了です。

「リソース」タブをクリックすると、リソースの一覧が表示されます。

VPCとサブネットが作成されていますね。それぞれの名前を見てみると、YAMLファイルの中で指定したものになっていますね。

VPC の画面を見ていますと、先ほど3つしかなかったVPC が4つになってますね。「cfn-vpc」が、今回作成されたものです。

サブネットの画面を見てみると、サブネットも追加されてますね。「cfn-subnet」が、今回作成されたものです。

インターネットゲートウェイも見てみます。新規で作成されてますね。「cfn-igw」が今回作成されたものです。

ルートテーブルも見てみます。ルートテーブルも新規で作成されてますね。「cfn-rt」が今回作成されたものです。

設定内容を追加する

最初に作ったテンプレートに、項目を追加するということはよくあることでしょう。今度は、それを想定して、別の項目を追加して反映させてみます。

今回試してみたいのは、前回作成したサブネット上に、新規でEC2 インスタンスを起動させることです。その際に、イメージサイズを選択して起動できるようにします。

前回のテンプレートに、以下の2つを追記してみます。

起動時に、インスタンスタイプを、「t2.micro」「t2.small」「t2.medium」の3つから選べるようにします。

Parameters:
  InstanceType:
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - t2.small
      - t2.medium
    Description: Select EC2 instance type.
  KeyPair:
    Description: Select KeyPair Name.
    Type: AWS::EC2::KeyPair::KeyName

さらに、起動するインスタンスに、Keypairも指定できるようにします。

セキュリティーグループも作成し、SSHでのアクセスのみを許可します。

cfnEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", hvm ]
      InstanceType: !Ref InstanceType
      SubnetId: !Ref cfnSubnet
      BlockDeviceMappings:
        - DeviceName: '/dev/xvda'
          Ebs:
            VolumeType: 'gp2'
            VolumeSize: 8
      Tags:
        - Key: 'Name'
          Value: 'cfn-ec2-instance'
      SecurityGroupIds:
        - !Ref cfnSecurityGroup
      KeyName: !Ref KeyPair
  cfnSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "cfnSecurityGroup"
      VpcId: !Ref cfnVpc
      Tags:
        - Key: 'Name'
          Value: 'cfn-ssh-sg'
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: 0.0.0.0/0

変更するスタック名を選択し、「変更する」をクリックします。

今回は既存のテンプレートを変更しますので、「既存テンプレートを書き換える」を選択します。

「テンプレートファイルのアップロード」を選択します。

「ファイルの選択」から、追記したテンプレートファイルをアップロードします。

「次へ」をクリックして進みます。

インスタンスを起動させる際に、インスタンスタイプとキーペアを選択できるようにしたので、選択画面が表示されました。

今回は、インスタンスタイプ「t2.micro」とキーペア「amazon-linux-test」を選択します。

キーペアで表示される内容ですが、ご使用の環境で異なります。表示荒れるのは、自分の使用しているAWSのリージョンで使用できるキーペアです。

「次へ」をクリックして進みます。

スタックのオプション画面が表示されます。

今回は、オプションは何も設定しません。

「次へ」をクリックして進みます。

レビューの画面が表示されます。

設定内容を確認します。

「スタックの変更」をクリックします。

EC2 インスタンスの作成が始まりました。

スタックの変更が完了しました。

EC2 の管理コンソールを見てみると、指定した名前でインスタンスが起動していますね。

スタックの削除

対象のスタック名を選択し、「削除」をクリックします。

確認のポップアップウィンドウが表示されます。

「スタックの削除」をクリックします。

スタックの削除が開始されました。

数分待つと、スタックが完全に削除されます。

EC2 を見てみると、先ほど起動させたインスタンスが削除されています。

VPC の方も、この動作確認向けに作成したものは消えてますね。

CloudFormationは、テンプレートを作成して必要なリソースを作成することができるので便利です。

削除も、テンプレートに記載されたリソースを個別ではなく、全てを一気に削除してくれるので便利ですね。

注意点は、CloudFormationでリソースを作成した後に、マニュアルでリソースの変更をしないことです。テンプレートの内容と不一致になりますし、後からテンプレートを編集するのも大変になります。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWSに関連する記事:

関連する記事:

最近の記事:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です