エンジニアブログ

[AWS]CloudFormationテンプレート作成 その3

2018.10.31

こんにちは。
simplineのmiddleでございます。

Trick or Treat 🙂

 

★今回のお題

CloudFormationのテンプレート調達

その1 背景〜CloudFormationとは
その2 初心者がテンプレートを書いてみます①
その3 初心者がテンプレートを書いてみます② ←本日はこちら
その4 おまけ「Outputsでクロススタック参照」編

 

★テンプレートを作る

ここからは実際に私がやった方法です。

まず、サンプルのテンプレートの中から、作りたいリソースに似ているっぽいものを探します。

■参考:
Amazon サンプルテンプレート – AWS CloudFormation

サンプルはjson形式なので、これをyamlに変換します。
ここでいきなりデザイナーの出番なのですが、サンプルを貼り付けて「yaml」を選択すると、変換してくれます!

▲デフォルトがJSONになっているので、貼り付け後YAMLをクリックします。

 

続いて、変換できたテンプレートを、実際に作りたいリソースに合わせていじっていきます。
ここが肝なわけですが、これが意外と(?)どうにかなるというか、わかります。

例えばこれはEC2のテンプレートの一部なのですが……。

AWSTemplateFormatVersion: 2010-09-09
Resources:
EC2Instance1:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-xxx # AMIのID
InstanceType: t2.micro # インスタンスタイプ
SubnetId: subnet-xxx # サブネットのID
InstanceInitiatedShutdownBehavior: stop
Tenancy: default
# PrivateIpAddress: # プライベートIPアドレス指定したい時
# UserData:
BlockDeviceMappings:
– DeviceName: /dev/xvda
Ebs:
VolumeSize: 40
VolumeType: gp2
Tags:
– Key: Name
Value: xxx
SecurityGroupIds: [!ImportValue “xxx-SG1Id”]

結構わかりやすいのではないでしょうか?

例えば、赤字にした「InstanceType」部分だったら、インスタンスタイプを指定すればよいわけです。
そのままですね。

そして「わかりやすいだろうからyamlがいい」というご意見をいただいておりましたが、確かにわかりやすいです。
コメント書けるのよいですね!

 

ある程度いじれるようになったら、次はサンプルにないプロパティや、別のリソースを追加してみます。
私が超よく見ているのがこちらです。↓

■参考:
AWS リソースプロパティタイプのリファレンス – AWS CloudFormation

 

そしてまたデザイナーの出番なのですが、このデザイナーを「プレビュー機能」として利用しています。
いじったテンプレートを貼り付けることで、思っている通りのリソースができるかを確認します。
また、プレビューは記述がおかしいとちゃんと表示されないので、構文チェックとしてもそこそこ利用できます。

 

雑なまとめになりますが、あとはもうトライアンドエラーでなんとかします……。
CloudFormationは利用料金がかからないのでよいですね。
そのうちサンプルに頼らなくても、そこそこ書けるように(なったつもりに)なれます!!!

 

 

★モチベーションアップのために

テンプレートが書けたなと思ったら、実際にスタック作成をするのがよいです!

▲S3に置いたテンプレートを選択する方式をとっております。

 

上手くいくと大変モチベーションが上がります。

▲上がりすぎて作りすぎたの図

 

ちなみに失敗した時ロールバックするのも、無事(?)確認できました。

 

というわけで、急にテンプレートを書くことになった方は、よろしければ何かの参考にしてください。

以上です。
よろしくお願いいたします。

関連キーワード

この記事をシェアする

Facebook Twitter LINE はてなブックマーク

この記事を読んだ方に
おすすめの記事