AWS IoT Enterprise Button を使ってみた

# AWS IoT Enterprise Button とは
- ざっくり言うとカスタマイズ可能な Amazon Dash Button です。
- 任意のLambda関数を AWS IoT Enterprise Button をクリックすることで実行できます。

# 今回やること
- AWS IoT Enterprise Button のセットアップ
    - デバイスの登録
    - プロジェクトの作成
- AWS IoT Enterprise Button からLambda関数の実行

# 前提条件
- AWSアカウントは開設済み。
- AWS IoT Enterprise Button は購入済み。
- Wi-Fi環境有り。
- スマホに [AWS IoT 1-Clickアプリ（Android版）](https://play.google.com/store/apps/details?id=com.amazonaws.oneclick) をインストール済み。
- 東京リージョン（ap-northeast-1）を使用。
- 実行するLambda関数は作成済み。
    - 今回はEC2を停止する関数を作成しました。

```python:EC2Stop.py
import boto3

instanceIds = ['i-xxxxxxxxxxxxxxxxx']

def lambda_handler(event, context):
    print('EC2を停止します。')
    ec2 = boto3.client('ec2')
    ec2.stop_instances(InstanceIds=instanceIds)
    print('EC2を停止しました。')
```

# 手順

## AWS IoT Enterprise Button のセットアップ

AWS IoT 1-Click アプリを起動してAWSアカウントにログインします。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/e6cdd667-e399-672c-a69a-f1ac5e6da4ae.jpeg">

### デバイス（AWS IoT Enterprise Button）の登録

　[デバイスの登録]→[デバイスIDで登録]→デバイスIDのスキャン
　※デバイスIDは箱についているバーコードをスキャンします。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/14c53fd4-2e8e-9a8b-378f-0421d95de339.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/1aece302-cfbc-280e-2f3b-76382372a2ba.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/ffb76b02-09b2-7c15-9217-de70ec7f506b.jpeg">

　デバイスをスキャンできたら、画面の指示にしたがって青い光が点滅するまでボタンを押し続けます。
　※途中でWi-Fiの設定画面が出てきたら、設定してください。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/df25b1f9-90b2-94c8-e83e-3310f7ff95b7.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/ad81953e-0ee5-3f6d-ff14-e24efd7d1c32.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/5f33d4df-3669-6306-6e69-ea4a8f7fa959.jpeg">

　デバイスが認識されたら、最後に1回ボタンをクリックします。
　※処理が成功したら緑色の光が点灯します。
　 <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/5f630c8a-fdef-9967-111b-9561e7d06d5f.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/f277fdf9-0ec3-64a3-bb30-f9ae981e3220.jpeg"> <img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/addf3f96-4b32-ecca-16ad-e8f902a4bc81.jpeg">

### 実行するプロジェクトの作成

　AWS IoT 1-Click アプリの[プロジェクト]から追加します。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/8dc5e3e0-79c5-b03f-a4ae-ac1be85f7ad0.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/9e0e12c9-26c8-2117-5f5c-715c334e4a61.jpeg">

　デバイステンプレートを設定します。
　　[アクション]で『既存のLambda関数の選択』にすると、選択可能なLambda関数が表示されます。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/5d58d7c2-e8bd-21ab-ebed-115085d2a911.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/2f730dd4-9245-d21a-0adc-65d5e2d33f21.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/ab6a7504-7b7f-affe-51ee-60feec2ed475.jpeg">

　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/2140b9da-db03-1f55-d310-a2e562ff973d.jpeg">　

　デバイスプレイスメント（＝プロジェクトを実行するデバイス）を作成します。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/61a612b4-b756-1f80-b255-b46b3d61bafc.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/cd6d1a1b-ef4f-e0ed-0336-5f7e4f430b03.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/2fb7dcf2-b4eb-a472-c882-8362e94b91d7.jpeg">

　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/c2e1b5c9-bb6e-5d47-635f-ffe412b66719.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/6f3b4081-ce89-c380-b030-34a251d88a08.jpeg">　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/36c89517-8335-a035-7db4-ca18fbf1c1b6.jpeg">

　これでプロジェクトの登録が完了です。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/8b5d760b-adc2-f6aa-e150-2089b346827e.jpeg">

## 実行してみる（動画は貼れないのでログで結果を確認）

　23:00:02にシングルクリック。
　　<img width="240" src="https://qiita-image-store.s3.amazonaws.com/0/131204/a7b3cf97-2801-cd44-1127-54d08242f711.jpeg">

　23:00:03にLambda関数が実行され、EC2が停止。
　　<img width="1200" src="https://qiita-image-store.s3.amazonaws.com/0/131204/f0808f25-2f5b-900a-0829-05a25d2b5f69.png">

# 感想

- 思っていた以上に簡単に自前のLambda関数をAWS IoT Enterprise Buttonから実行することができました！
アイディア次第では結構面白いことができるのではないかなという気がしています。
- もう少し価格（2500円で約2,000回のクリックが可能）が下がってくれるとボタンを増やして遊べそうなのですが･･･。

# 参考
- [Amazon Web Services ブログ：
AWS IoT 1-Click – Lambda 関数のトリガーにシンプルなデバイスを使用する](https://aws.amazon.com/jp/blogs/news/aws-iot-1-click-use-simple-devices-to-trigger-lambda-functions/)