かれ4

かれこれ4個目のブログ

Cloud AutomatorでCloudFormationのStackを定期的に立ち上げる

サーバーワークス社がこないだリリースしたCloud Automatorが気になったので触ってみました。

EC2を立ち上げたり、EBSのスナップショットとったりと色々出来そうですが、
CloudFormationのStackが立ち上がったりしたら、なんでもありになるなと思いました。

というわけで、スクリプトを一つ書いてみました。
下記のスクリプトをrc.localに書いておけば、EC2の起動時に実行され、CloudFormationのStackが作られるようになります。





OLD_IFS=$IFS
IFS='
'
TEMPLATEURL=""
PARAMETERS=""
REGION=$(ec2-metadata -z | cut -d' ' -f2|perl -pe 's/[a-z]$//')
for tag in $(aws --region "$REGION"  ec2 describe-instances --instance-ids i-db1c24dd  --output text |grep TAGS|cut -f2-3)
do
  echo $tag
echo $tag |grep -e "^Template\s" |wc -l

  if [ $(echo $tag |grep -e "^CfnTemplate\s" |wc -l) -ne 0 ];
  then
    echo "template url"
    TEMPLATEURL="$(echo $tag |perl -pe "s/\w+\s//")"
    continue
  fi 


  if [ $(echo $tag |grep -e "^CfnParameters\s" |wc -l) -ne 0 ];
  then
    echo "parameter hit"
    PARAMETERS="$(echo $tag |perl -pe "s/\w+\s//")"
    continue
  fi 
done
IFS=$OLD_IFS

echo TEMPLATE=$TEMPLATEURL
echo PARAMETERS=$PARAMETERS


aws cloudformation --region "$REGION"  create-stack --template-url "$TEMPLATEURL" --parameters "$PARAMETERS"


EC2のタグによって、CloudFormationの制御をします。

Tag name Tag value
CfnTemplate テンプレートのURL(S3)
CfnParameters CloudFormationに渡すパラメータ

タグを変更することで、起動するStackのtemplateを制御する事にしました。


ただ、Stackの削除はしていないので、Stackの削除をするInstanceも作って置くのも良いかもしれません。もしくはここで起動したStackのIDをどこかに保存しておいて、rc6.dにStackを削除するスクリプトでも入れておけば、このEC2が立ち上がってる間だけ、Stackも存在するなんてことも可能そうです。


とはいえ、Stackの作成に失敗しても、何の制御も入っていないので、まだまだ試作段階を抜けていません。が、ブラッシュアップしていけば、複雑な動きもCloud Automatorから制御出来るようになりそうです。

CfnというPrefixを付けたモノをそのままコマンドラインに渡すのもありかなと思っています(TagInjectionの予感は気にしません。)