1
0

More than 1 year has passed since last update.

AWS Systems Manager Runbook(旧 Automation Document)の`aws:createStack`にパラメーターを渡すやり方を考える

Posted at

こんにちは。kosukeです。(すみませんがまだちゃんと書けてないです)

はじめに

突然ですがAWS Systems Manager Runbookは好きですか!!!
私は最近Solrの環境構築をRunbookで実装する機会がありました。
これの中でずっと頭を悩ませていたaws:createStackにパラメーターを渡すやり方について考えたことを忘れる前にまとめようと思います。

Runbookとは

オートメーションは、AWS のサービス (Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Relational Database Service (Amazon RDS)、Amazon Redshift、Amazon Simple Storage Service (Amazon S3) など) でのメンテナンス、デプロイ、および修復に関する一般的なタスクを簡素化するための、AWS Systems Manager の一機能です。
オートメーションは、AWS リソースを大規模にデプロイ、設定、管理のための、自動化されたソリューションを構築するのに役立ちます。オートメーションを使用すると、自動化の同時実行性をきめ細かく制御できます。同時実行のターゲットにするリソースの数や、オートメーションを停止する前に許容可能なエラーの発生数を指定することが可能です。

Runbookでスクリプト実行したり、スクリプトの実行、インスタンスに対してコマンドを実行したりできます。

本題

Runbook1つでSolrインスタンス、書き込みAPI、アラーム等全部を作ろうとしていてそれらはCloudFormationで構築しようと考えておりました。
そこで問題になったのが、RunbookでCloudformationのデプロイを行うCreateStackの機能にはパラメーターをファイルで渡す機能がないことです。
素直にやろうとすると、Automationのデプロイテンプレートに全てのCFnのテンプレートを渡す方法がありますけど、これはしんどすぎる。。。
そこで考えた方法を紹介します。

リファレンス
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-action-createstack.html

案1: CloudFormationのデプロイをexecuteScriptで実行する

CFnの実行をPythonもしくはPowerShellで実行する。
実装次第で色々なパラメーターの渡し方ができる
s3のbucketをパラメーターに渡して渡すことができる

案2: AWS::Includeを使ってパラメーターを渡す

CloudFormationのテンプレートをモジュール化して渡すようにする。
runbookの中にパラメーターを直書きするようになってしまうので、AWSアカウント上のrunbookのパラメーターを使ってどうこうするみたいなのをやりずらくなる
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html

うまくまとまっていないですが、少しずつまとめていきます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0