2日目の記事ですこんにちは。エンジニアの友村です。上でのシステムの構築・運用に積極的に取り組んでいます。各種リソースのプロビジョニングを行うことができるサービスです。Designer」を用いて視覚的にリソースを定義することが出来ます。リソースの構成管理を行うことができるようになり、手順書による環境構築コストの軽減、再利用性の向上など様々なメリットがあります。Tips」を紹介していきます。「CloudFormation」の使い方やテンプレートの基本的な作成方法は解説いたしませんので、ご了承下さい。ベストプラクティス公式ドキュメント内に「CloudFormation」を使用するうえでのベストプラクティスが紹介されています。なにはともあれ、公式に推奨さている事項なので必ず目を通しておきたいドキュメントです。テンプレートスニペット「CloudFormation」のドキュメントに様々なパターンのテンプレートスニペットが用意されています。困ったときや、パターン別サンプルとして活用していけばテンプレートを記述していく際の手助けになります。固有パラメータタイプパラメータのタイプを全て「String」にしていませんか?AWS固有パラメータを使用すれば少し幸せになれる時があるかもしれません。「AWS::EC2::KeyPair::KeyName」キーペア名の値をドロップダウンで入力をすることが出来ます。ドロップダウンで入力することが出来ます。固有パラメータにつきましてはまだまだ種類がありますのでこちらを参照してみて下さい。「AWS::EC2::Instance」のプロパティである「UserData」のような複数行に渡る記述は、「Fn::Join」を使用します。「Fn::Join」はパラメータで区切り記号を受け取ることができるので、「\n」を区切り文字を指定することにより実現できます。表現することが難しい改行を含む文字列を、少し分かりやすく表現することができました。文字列内に関数で取得した値を展開して、一つの文字列を作成したい。そんなときは「Fn::Sub」を使用します。ここでは2パターン紹介します。指定することができます。この場合は「Ref」関数を使用した場合の値に置換されます。明示的に置き換える値を指定します。]}「Fn::Sub」は比較的新しい関数で、それまでは「Fn::Join」を用いて文字の連結を行い実現していました。「AWS::EC2::Instance」のプロパティである「UserData」のような複数行に渡る記述は、可読性を考慮して「Fn::Join」と組み合わせて表現するといいでしょう。属性デフォルトでは、作成した「Stack」を削除すると設定されたリソースは全て削除されてしまいます。データなど、「Stack」削除後にも残しておきたいリソースは「DeletionPolicy」を利用してリソースを保持させます。バケットリソースを保持させるためには「Retain」を指定します。バケットは削除されません。その他にもスナップショットをサポートするサービスでは、スナップショットの作成を行うこともできるので是非活用してみて下さい。ベストプラクティスでも紹介されている、スタックのネストを用いてテンプレートを分割します。ネストされたスタックを作成するには「AWS::CloudFormation::Stack」リソースを使用します。これにより、ネストされたスタックごとに新たにスタックが作成され、テンプレート及びスタックを分割することが出来ます。テンプレートを適切に分割して管理することにより再利用性の高いテンプレートを作成することができるようになります。バケットに保存されている必要があります。最後に「CloudFormation」を使いこなせている方からすれば基本的なところだったのではないでしょうか。リソースをプロビジョニングすることが可能になるはずです。「CloudFormation」からプロビジョニング出来ないサービスもあるので公式ドキュメントとにらめっこしながら進めていくことが重要です。使用開始というウォークスルーから確認してみてはいかがでしょうか。アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。