AWS CloudFormationを触ってみる #1
もくじ
はじめに
こんにちは 中村です!
業務でCloudFormation扱う機会が少ないので、自分で触ってみることにしました!
CloudFormationとは
公式によると以下の通り
AWS CloudFormation は、インフラストラクチャをコードとして扱うことで、AWS およびサードパーティーの> リソースをモデル化、プロビジョニング、管理することができます。
動画で見るとイメージしやすいですね
同じようなリソースを何度も作成する必要がある場合に迅速でミスなく作れちゃうのがメリットかと思います!
テンプレートファイルを書くのは大変ではありますが!
手順
テンプレート作成
以下のテンプレートを保存します
とりあえずCloudFormationを触ってみるだけなので、簡単そうなSNSを作ってみます
Parameters:
Email:
Type: String
AWSTemplateFormatVersion: 2010-09-09
Resources:
CarSalesTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: test-sns
TopicName: test-sns
Subscription:
- Endpoint: !Ref Email
Protocol: email
CloudFormation スタックを作成
AWSマネジメントコンソールにてCloudFormationの画面を開き、
「スタックの作成」をクリックする

「テンプレートファイル」のアップロードを選択する
「ファイルの選択」をクリックする

先ほど保存したテンプレートファイルを選択する

「次へ」すすむ

お好みの「スタックの名前」を入力する
パラメータを入力する ※今回のテンプレートではSNSの宛先になるメールアドレスを入力します
「次へ」すすむ

「パラメータ」は、テンプレートファイルにて自由に定義する事ができます
定義したパラメータを使ってリソース名や設定内容をスタックごとに変更する事ができますね!
今回はSNSから送る宛先のメールアドレスを変えられるように設定しました!

次の画面は特に入力不要
画面下部へスクロールし、「次へ」すすむ

設定内容のプレビュー画面が表示されます。
内容が問題なければ画面下部の「スタックの作成」をクリックする

「CREATE_IN_PROGRESS」なので、今作成中です。しばしお待ちを。

「CREATE_COMPLETE」と表示されれば完了です

ちゃんと作成されたか確認
- リソースタブをクリックすると、作成されたリソースが確認できます
- ARNをクリックすると作成されたリソースの画面へ飛ぶことができます

SNSが作成されていますね

動作確認
SNSではサブスクリプション作成時に宛先のメールアドレスが「承認」しないとメールが送れません

設定したメールアドレスに届いているメールを確認し、
「Confirm subscription」をクリックてサブスクリプションを承認します。

「保留流の確認」から「確認済み」に変わりました。これでメールを送る事ができます

メールを送ってみましょう。「メッセージの発行」をクリックします

適当に文字を入力します

「メッセージの発行」をクリックします

ちゃんとメールが届きました

テンプレートファイルの書き方について
最初に紹介したテンプレートファイルですが、CloudFormationユーザーガイドと睨めっこしながら書きました。
左メニューから
「Template reference」 → 「Resource and property reference」と進みます

するとAWSサービスの一覧がズラーっと出てくるので…

作成したいサービスを探します

今回はSNSトピックを作成しようとしているので「AWS::SNS::Topic」をクリックする

あとは出てきたページとひたすら睨めっこします (; ・ Д ・ )
全部英語ですが、気合いでどうにかします (; ・ Д ・ )
所感
所感
1つのリソースだけだとymlファイルは短くて済みますが、本来の業務で使うようなツールはもっと色々なリソースを作成するので、もっと長くなるかと思います。なので、もっと公式のリファレンスと仲良くなってymlの書き方にも慣れていく必要があると感じました。頑張るぞっ
ベンジャミンのサーバレス開発サービス
ベンジャミンではAWS Lambdaを使ったサーバーレス開発サービスを提供しております。詳細は以下リンクをご確認ください