Share

Xでシェア
LINEでシェア

Serverlessフレームワークを使って「さくらのクラウド」上のインスタンスをSlackから操作

少し前の記事で紹介しましたが、先日CoderDojo向けにGitHub+Travis CIを使ってPaaSを作りました。 さくらのクラウドとGitHub+Travis CIを使ってCoderDojo向けのプルリクドリブンのPaaSサービスを3日で作った! その後、いろいろ運用中に気づいたこともあり、Slack でさくらのクラウド上のインスタンスの操作もできるようにしました。 ソースはGitHubにあげておきました。 https://github.com/miya0001/slack-sacloud

Slackでインスタンスの操作

これを導入すると、Slackで以下のようにスラッシュコマンドを実行することでインスタンスの操作ができるようになります。
/sacloud list # インスタンスのリストを取得
/sacloud up <id> # インスタンスの起動
/sacloud halt <id> # インスタンスの停止
/sacloud destroy <id> # インスタンスの削除
実際のスクリーンショットは以下のような感じです。このスクショではサーバーを一度停止して、そのあと起動するという操作をしています。 インスタンスの削除ができてしまうので、このスラッシュコマンドが実行できるチャンネルは、管理者たちだけがいる秘密のチャンネルのみで実行することが可能なようになっており、他のチャンネルで実行すると以下のようにエラーが出ます。
また適切なチャンネルでコマンドを実行した後のメッセージが、そこにいるみんなに表示されるようになっています。もしスパム行為があった場合はその人をそのチャンネルから追い出せばいいやという想定なんですが、まあ実際にはそういうことはないんじゃないかなと思っています。 わりと強気な運用といえますが、コントロールパネルでの操作を残してしまうと、特定の誰かに負担を集中させるか、コントロールパネルのアカウントを共有するという、とても厳しい二者択一の選択を迫られます。 それよりはマシかなと考えているのと、全部オープンソースにしていますので何かあれば逐一改善すればいいやという感じです。

仕組み

この仕組の開発には Serverless フレームを使用しています。
Serverlessフレームワーク便利ですね。さらに以下のボイラープレートを使用したので、さくらのクラウドを操作する簡単なモジュールを作った以外に自分でやることはほとんどありませんでした。 https://github.com/johnagan/serverless-slack-app 作業手順も上のプロジェクトとほぼ同じです。 システムの実際の構成は、AWS の API Gateway + Lambda + DynamoDB という典型的なサーバーレスの構成です。それほど頻繁に使われるものではないのでコストもほぼ無料で使えますし、サーバーのメンテナンスが不要なのはありがたいですね。 あとユニットテストには、Mocha + Chai というフレームワークを使用しております。 細かい導入方法は、リポジトリの README に書いてありますのでぜひそちらをみてください。 https://github.com/miya0001/slack-sacloud では!  

私たちのサービス

100万人の顧客一人ひとりと向き合えるAIマーケティング。

WordPressを、もっと快適に。もっと安全に。

採用の痛みからの解放。採用戦略から運用まで伴走します。

困ってることの正体、一緒に探します。

30分無料相談

オンライン

お気軽にオンラインでご相談ください。Webサイトやマーケティングのお悩みに対応します。

吉川 敦文

吉川 敦文

代表

高橋 文樹

高橋 文樹

CTO

ギブス

ギブス

Wizard 責任者

池田 秀貴

池田 秀貴

Webディレクター

お問い合わせ

ご質問やお見積もりのご依頼など、お気軽にお問い合わせください。