AWSのITコストを削減 Simpline

選ばれ続けること

 

エンジニアブログ

ホーム - エンジニアブログ - [AWS]CloudFormationテンプレート作成 その3

[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に置いたテンプレートを選択する方式をとっております。


 


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



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


 


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



 


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


以上です。

よろしくお願いいたします。

1 Star 0 いいねしてね!
Loading...