今更ながらAWS ChatbotをSlackと連携する
概要
Slackを用いてEC2の起動やちょっとしたことをChatOpsという形で実現する際の実用的な情報を記載する。
背景
1年後くらい前に設定したけど、別の環境でまたChatopsを設定することになり、忘れそうなので今度こそまとめることにした。
対象読者
- lambdaとか作らないで簡易的にawsのcliレベルで実装したい人
- ただ、毎回cliは打ちたくない人
対象外
- ボタンポチーで一通りの業務フローを行いたい人(これはLambda作ってchatbotでLambdaを実行してくれ)
前提条件
AWSとSlackとの接続が終えている状態であること。
おすすめ記事 : SlackのワークフローでAWS Chatbotを動かして、EC2を開始&停止する仕組みを作ってみた
ここまで出来てればOK
対象のslackチャンネルで@aws help
と打って返信が来ること
アドバイス AWS Chatbot aliasを使用する
aliasはご存知の通り、別名である。
仮にSlackでEC2を起動する場合は以下のように長文を打たねばならない。
毎度これを打つのは面倒の場合、あらかじめコマンドをalias登録することにより、
@aws start_ec2
と打つことでこれらの手間を省くことができる。
@aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--count 1 \
--instance-type t2.micro \
--key-name MyKeyPair \
--security-group-ids sg-0123456789abcdef0 \
--subnet-id subnet-0123456789abcdef0 \
alias関係のドキュメント
ドキュメントはCreating and using command aliases in chat channelsを参照
実際にaliasを登録する
今回はinstance起動ではなく、ASGのオートスケーリングを登録したいと思う。
要件は以下
- 後々を考慮して対象のASG名は固定ではなく変数化すること
- 後々を考慮して対象のASGのカウントは固定ではなく変数化すること
alias登録の例
@aws alias create asg_mng autoscaling update-auto-scaling-group --auto-scaling-group-name $asg --min-size $cnt --desired-capacity $cnt
aliasの実行例
要点としてはaliasを実行する際にはrun
を使用してalias名を指定する。
併せて変数が必要であれば使用される順に変数の値を入力する
@aws run asg_mng autoscalingname 1
この実行内容はASG autoscalingname
の希望数を1
に設定してASGをスケールを変更している。(基本的に0から1に変えていることが多い)
アドバイス Slackのワークフローと併用する
前述のaliasを使用した起動でも結局はコマンドは打つ必要がある。
これではできる人間が限られる。主に開発者向けからは抜け出せない。
ここで使用するのがSlackのワークフローである。
ワークフローを用いることでASGを用いたサーバ起動等、デザインされた作業をボタン操作で実現する。
Discussion