AWS Mobile HubでAmimotoマネージドホスティングの管理をサーバレスにした話

概要

こんにちは!WordPressのアプリケーションサポート用心棒を担当している堀家と言います。

今回は社内システムの紹介ということで、AWS Mobile Hubを使って社内にあるAmimotoマネージドホスティングのサーバをiPhoneアプリで一元管理するようにしたのでその紹介をします。

構成図

Untitled (2)

モバイルアプリからの指令でインスタンスの起動と停止とインスタンスサイズの変更が可能になってます。それらはすべてLambdaファンクションで処理させます。

CloudWatchのアラートが上がったらSNS経由でアプリにpush通知を送ります。

Cloud Logic

スクリーンショット 2015-11-27 0.17.05

Mobile Hub上で動くLambdaファンクションを管理してくれます。これチェックが付いているLambdaファンクションのみがアプリからのリクエストを受け取れるようになってます。

実際のLambdaファンクションは以下のような感じ

Push Notifications

スクリーンショット 2015-11-27 0.33.01

Push通知の設定もmobile Hubの設定画面上から出来ます。
iPhoneアプリの場合はデベロッパー登録をAppleに申請して証明書をMobile Hub(SNS)にアップロードして上げる必要があります。AWS側の設定は特にコード等書く必要はなくこれで完了します。

アプリのビルド

スクリーンショット 2015-11-27 0.41.59

AWS側で必要な設定が終われば、Mobile Hubのbuildメニューからアプリのソースコードを生成します。ローカルにダウンロードして後はアプリの開発です。

アプリ開発

後はゴリゴリとアプリ開発です。アプリ開発と言ってもビジネスロジックはLambdaで構成しているため、画面の開発とどのタイミングでLambdaに命令をおくるかというAction部分の開発になります。

Mobile Hubからダウンロードしたデフォルトの状態ではAWS Mobile Hubで作ったスマホアプリでAmimotoを起動させるにて紹介しているようなサンプルのアプリがダウンロードされた状態になります。これを好きなUIになるようにフォークして開発するイメージです。

以下はインスタンススタートを実施するアプリのコードの例。
ボタンをタップしたら指紋認証を挟んで、通過後にLambdaのインスタンスをスタートさせるLambdaファンクションにリクエストを送ります。

完成品

クライアント名がわかるものは伏せ字にしてますが以下の様な感じです。

まとめ

とこんな感じで社内のマネージドホスティングのサーバを管理できるようにしました。
開発者としての率直な印象として、Mobile Hubが認証周りやIAM権限周りを一通り面倒見てくれるところが素晴らしいなと思いました。

また、Lambdaでビジネスロジックを作れたので、アプリはUIとActionを作るだけで完結するというのもアプリ開発初心者の僕からすればすごくとっつきやすいです。

やりたいことだけをシンプルにやるっていうサーバレスアーキテクチャの本質から言えばすごく理にかなっていて効率的だと思いました。

それではみなさん、よいサーバレスライフを!