Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] CloudFormation:#4 テンプレートの検査

More than 3 years have passed since last update.

この手順の目的

CloudFormationのテンプレートを検査(バリデート)します。

作業対象

  • CloudFormationテンプレート

標準時間

8分

前提条件

作業権限

CloudFormationへの権限

CloudFormationに対してフル権限があること。

作業環境

AWS CLIのバージョン

以下のバージョンで動作確認済

  • AWS CLI 1.11.102
コマンド
aws --version

結果(例):

  aws-cli/1.11.102 Python/2.7.12 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.5.60

バージョンが古い場合は最新版に更新しましょう。

コマンド
sudo -H pip install -U awscli

開始条件

作業に必要なモノ・情報

作業開始には、以下が全て揃っていることが必要です。

  • 設定ファイル用ディレクトリ

    • 今回は"${HOME}/tmp/conf-cloudformation"を設定ファイルディレクトリとします。
ls ${HOME}/tmp/conf-cloudformation
  • 存在しない場合は作成します。
mkdir -p ${HOME}/tmp/conf-cloudformation
  • テンレートファイル

    • 検査の対象となるCloudFormationテンプレートファイルです。
    • 今回は"BasicWebServerInVPC.template"とします。

0. 準備

まず変数の確認をします。

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        DIR_CONF:            (0.3) ${DIR_CONF}
        FILE_INPUT:          (0.4) ${FILE_INPUT}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <CloudFormationのフル権限が許可されているプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  DIR_CONF:            (0.3) ${HOME}/tmp/conf-cloudformation
  FILE_INPUT:          (0.4) ${HOME}/tmp/conf-cloudformation/BasicWebServerInVPC.template

変数が入っていない、適切でない場合は、それぞれの手順番号について作業を行います。

0.1. プロファイルの指定

プロファイルの一覧を確認します。

コマンド
cat ~/.aws/credentials \
       | grep '\[' \
       | sed 's/\[//g' | sed 's/\]//g'

結果(例):

  iamFull-prjz-mbpr13
  <CloudFormationのフル権限が許可されているプロファイル>
変数の設定
export AWS_DEFAULT_PROFILE='<CloudFormationのフル権限が許可されているプロファイル>'

0.2. リージョンの決定

変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'

0.3. 設定ファイルディレクトリの指定

変数の設定
DIR_CONF="${HOME}/tmp/conf-cloudformation"

0.4. テンプレートファイル名の指定

変数の設定
FILE_INPUT="${DIR_CONF}/BasicWebServerInVPC.template"   && echo ${FILE_INPUT}

再確認

設定されている変数の内容を再確認します。

変数の確認
cat << ETX

        AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
        AWS_DEFAULT_REGION:  (0.2) ${AWS_DEFAULT_REGION}
        DIR_CONF:            (0.3) ${DIR_CONF}
        FILE_INPUT:          (0.4) ${FILE_INPUT}

ETX

結果(例):

  AWS_DEFAULT_PROFILE: (0.1) <CloudFormationのフル権限が許可されているプロファイル>
  AWS_DEFAULT_REGION:  (0.2) ap-northeast-1
  DIR_CONF:            (0.3) ${HOME}/tmp/conf-cloudformation
  FILE_INPUT:          (0.4) ${HOME}/tmp/conf-cloudformation/BasicWebServerInVPC.template

1. 事前作業

1.1. 作業対象の状態確認

設定ファイル用ディレクトリが存在することを確認します。

コマンド
ls -d ${DIR_CONF}

結果(例):

  <ディレクトリのフルパス名>

検査しようとしているcloudformationテンプレートファイル
"BasicWebServerInVPC.template"が存在することを確認します。

コマンド
ls -1 ${FILE_INPUT}

結果:

  ${HOME}/tmp/conf-cloudformation/BasicWebServerInVPC.template

2. 本作業

2.1. テンプレートのバリデーション

コマンド
aws cloudformation validate-template \
        --template-body file://${FILE_INPUT}

結果:

  (テンプレートの出力設定に応じた出力)

2.2. 結果の取得

変数の設定
RESULT_VALIDATION=$?

3. 事後作業

cloudformationテンプレート"BasicWebServerInVPC"が有効であることを確認します。

コマンド
echo ${RESULT_VALIDATION}

完了

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away