AWSの知識を血肉にするための「AWS 100日チャレンジ」の61日目です。
今日は陶器市に行ってきました。
安くて魅力的な器やコップがたくさんあって、買うのにすごく迷いました。
いいビアグラス(陶器)が変えて満足です。
・100日連続アウトプット!
・継続が第一、クオリティは第二
・「社会人のリアル」を忘れない(持続可能な完走を目指す)
・コアな学習に全集中!
テーマとするサービス以外は、CloudFormationや構築済みの資産をフル活用。効率よく「核心」を突き詰めます。
課題
CloudFormationのヘルパースクリプトを試す(cfn-initとcfn-signal)
実施
まずヘルパースクリプトは以下種類があります。

今回は、cfn-initとcfn-signalを試してみます。
1.YAMLファイルを定義する
cfn-init を使用すると、
UserData にズラズラと yum install を書くよりも、
「CloudFormationらしい」構成になり、可読性が格段に上がります。
CloudFormationに読み込ませるYAML定義は以下です。
cfn-initの部分
Resources:
LinuxSvA:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
config:
packages:
yum:
httpd: []
files:
"/var/www/html/index.html":
content: "Hello from CloudFormation Helper Scripts!"
mode: "000644"
owner: "root"
group: "root"
services:
sysvinit:
httpd:
enabled: "true"
ensureRunning: "true"
cfn-signalの部分
Properties:
# ... その他のプロパティ ...
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
# 最新のヘルパースクリプトに更新
yum install -y aws-cfn-bootstrap
# cfn-init の実行
/opt/aws/bin/cfn-init -v \
--stack ${AWS::StackName} \
--resource LinuxSvA\
--region ${AWS::Region}# 完了をシグナルで送信 (WaitConditionHandleがある場合)
/opt/aws/bin/cfn-signal -e $? \
--stack ${AWS::StackName} \
--resource LinuxSvA\
--region ${AWS::Region}
スタックを上記YAMLを指定して作成する。

2.動作確認
Teratermdeリモートログイン。
以下コマンドにてHTTPDがインストールされているか確認。
systemctl status httpd

