clock2017.04.17 13:09
SERVICE
home

クラウドサーバー Amazon EC2 を起動するだけのリアルボタンを作ってみた ~仮想と現実の新たな接点~

AUTHOR :   ギックス

「ネットワークに繋がるボタン」という新たなデバイスの可能性

クラウドサービスはインターネット上に存在します。これらのサービスを利用するためには、通常、パソコンやスマホからブラウザや専用アプリからアクセスします。接続可能なネットワーク上であれば、どこからでも利用可能なのが便利ですが、パソコンのように電源ボタン1つでOSを起動できない不便さもあります。だったら「クラウドサーバーの起動が面倒ならリアルの電源ボタンを作ってしまおう!」という事で挑戦してみました。

通常のクラウドサーバーの起動方法

今回、起動するクラウドサーバーは、Amazon Web Services(以下、AWS)の Amazon EC2 です。この Amazon EC2 を起動するためには以下の手順を行う必要があり、ただOSを起動するだけなのに複数の手順を踏まないといけません。

  1. ブラウザからAWSマネジメントコンソールにログイン
  2. AWS上の様々なサービスから Amazon EC2 を選択
  3. 起動する Amazon EC2 のインスタンス(OSイメージ)を選択
  4. Amazon EC2 のインスタンスに対して起動命令を実行

そして、Amazon EC2 を起動するためには「AWSマネジメントコンソールにログインするためのユーザーID」を発行する必要があります。利用者が多ければ、その分だけユーザーIDを発行する必要があり、作成作業と管理が面倒です。

 Amazon EC2 のリアル起動ボタンを作る

AWS IoT Button と AWS IoT が使いたかった

AWSはクラウドサービスですが「AWS IoT Button」という物理的なボタンのサービスもあります。この AWS IoT Button は、AWSクラウド上の AWS IoT に対して信号を直接送信することができます。そして、AWS IoT から様々なAWS上のクラウドサービスと連携することが出来ます。

理想としては、AWS IoT Button + AWS IoT を使用して、Amazon EC2に起動命令まで実行できれば良かったのですが、現在(2017年4月時点)、AWS IoT Button の販売は米国のみの限定発売のため、日本では入手することが非常に困難です。そのため、今回は苦肉の暫定対応策として、AWS IoT Button の代用として Amazon Dash Button、制御として AWS IoT の代わりに Raspberry Pi 2 を使用しました。amazon_dash_button1

Amazon Dash Button による Amazon EC2 のリアル起動ボタン

本来の Amazon Dash Button の用途は、ボタンを押すことでAmazonサイト上の特定の商品を購入するための物です。今回は、Amazon Dash Button の通信をローカルネットワーク上で監視し、通信があった場合、特定のアクションを実行するようにしました。そして、この監視用のサーバーとして Raspberry Pi 2 を使用しました。

Raspberry Pi 2 には通常の Raspberry Pi 用のOSの中に Amazon Dash Button の監視ツールとAWS SDKをインストールし、簡単なプログラミングを行い、下記のようなシステムを構築しました。なお、Amazon Dash Button の監視ツールは様々あるようですが、今回は「dasher」を使いました。amazon_dash_button2

上記の Amazon Dash Button のボタンを押すと特定の Amazon EC2 インスタンスに対して起動命令を実行し、成功するとslackの特定のチャネルに対して起動メッセージが送信されます。あとは暫くしてからリモートデスクトップなどで Amazon EC2 のOSにログインして使用することができます。

1つのボタンが1つの行動に繋がる

今回は暫定対応として Amazon Dash Button と Raspberry Pi 2 を使いましたが、本来のやり方である AWS IoT Button と AWS IoT を使うことで、もっとスマートにシステム構築できると思います。また、ボタンの制御はクラウドサービス上の AWS IoT で行えるため、ボタンの追加や制御変更等が AWS IoT で一括管理でき、かつ、AWS IoT に接続できる環境であれば世界中のどこからでもアクセスできるため、管理が楽になります。

AWS IoT Button などの「ネットワークに繋がるボタン」はネットワーク上のサービスを起動するためのトリガーとなります。人が判断して制御を構成する類の処理は不向きですが、人が判断して決まった処理を実行する類の処理では導入する場面は多くあると思います。Amazon Dash Button は「特定の商品を購入する」という決まった処理を実現するだけのものですが、その処理をプログラムなどで設定できるようになれば、下記のような応用が可能だと思います。

  • クラウドサービスのバッチの起動
  • 防犯、緊急時などのアラートボタン

また、これらの「ボタンを押した」という行動はログにも残すことが出来るため、後からログ分析することも可能です。

連載記事一覧はコチラ:category / AWSを使い倒せ

SERVICE