AWS IoT Device Shadowを使ってみた!(Part2)
本記事は、最終目標である遠隔からDevice Shadow機能を使ってIoT Device制御をまとめたものです。 なお、4つの記事の中で今回は 下記の「 Part2 」です
主な全体記事の流れです。
■ Part1 : API Gatewayから起動するLambda関数の作成
■ Part3 : AWS IoT Deviceとshadow作成
■ Part4 : iPhoneアプリ作成 と 遠隔Camera起動確認
AWS構成図
赤点線で囲んだ箇所を今回作成します。
API の作成
「 APIを作成 」ボタンをクリックします。
APIタイプを「 REST API」の「 構築 」ボタンをクリックします。
「 API名 」入力、「 エンドポイントタイプ」を選択します。ここではAPI名は「cameraAPITest」、「リージョン」を指定し、「 APIの作成 」ボタンをクリックします。
エンドポイントにリージョンを選択すると、外部から指定するURLに「リージョン名」を付与しているアドレスになるイメージです。
下記のリージョン名は、「ap-northeast-1」です。尚、リージョン名は「メソッド作成」箇所で選択します。 (https:xxxxxxxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/xxxxxxxxxxxxxx)
リソースの作成
「 アクション 」ボタンをクリックし「 リソースの作成 」を選択します。
「 リソース名 」を入力し、「 リソースの作成 」をクリックし、リソースを作成します。
「リソース名」は「リソースパス」欄に自動挿入されます。
「リソースパス」とは、外部から指定するURL(https:................/test )のアドレスとして扱われます。ここでは「リソース名」を「test」としているため、パスにtestが入ります。
メソッドの作成
「 アクションボタン 」をクリックし、「 メソッドの作成 」を選択します。
「メソッド」とは、HTTPメソッドのことです。 HTTPメソッドとは、リソースに対して実行したいアクションを示すもので、メソッドには「GET」、「POST」、「PUT」などがあり、HTTPサーバー(今回はAWSがサーバー)へ指定する時に使用します。
AWS API Gatewayは、一つのメソッドに一つのLambda functionを登録できますので、メソッド毎にLambda functionを登録し、別の処理を行うことができます。
プルダウンリストからHTTPリクエストメソッド「 POST 」を選択します。選択完了後は、「 チェックマーク 」をクリックします。
Lambda関数の登録
左側のツリー表示から「POST」を選択し、POSTのセットアップをします。 統合タイプは「 Lambda関数 」のラジオボタンで選択、「 Lambdaリージョン 」を選択します。最後に「 Lambda関数 」に関数名を入力&選択し、「 保存 」ボタンをクリックします。
Lambda関数名は、「Part1」で作成した「」です。キーボードで登録したい関数名を入力すると、作成済みのLambda関数が表示されますので、対象の関数があったらそれを選択しましょう。
「 Lambda関数に権限を追加する 」のダイアログが表示されます。「 OK 」ボタンをクリックします。
APIキーの作成
ここからが「 外部からアクセスするためにURLを公開」する登録です。
ただし、APIをデプロイした時点で外部に公開され、誰でもアクセスできてしまいます。 Webブラウザからアクセスするブログなどのサイトではないので、誰からもアクセスできないようAPIキーを使用して認証を行うようにします。
先にAPIキーを作成し、APIリクエスト時に認証を行うようにします。
左メニューから「 APIキー 」を選択。「 アクションボタン 」をクリックし、「 APIキーの作成 」を選択します。
「 名前 」を入力し、「 APIキー 」は自動生成とし、「 保存ボタン 」をクリックします。
作成が完了すると、APIキーが生成されます。このAPIキーは、外部からアクセスするときに使用します。「 表示 」をクリックでキー情報を確認できます。
APIキーをメソッドと関連付けさせます。左ツリー表示の「 POST 」を選択し、右画面の「 メソッドリクエスト 」をクリックします。
「 APIキーの必要性 」が「 false 」になっていますので、プルダウンで「 true 」を選択し、「 チェックボタン 」をクリックします。
マッピングプレートの作成
URLでパラメータ取得のための「 マッピングプレート 」の登録をします。
POSTメソッドの「 統合リクエスト 」をクリックします。
「 マッピングプレート 」をクリックします。
「 テンプレートが定義されていない場合(推奨)」を選択し、Content-Typeに「 application/json 」を入力し、チェックボタンをクリックします。
チェックボタンクリック後、画面下に「 設定欄 」が表示されますのでイメージのように入力し「 保存」ボタンをクリックし保存します。
設定欄の入力イメージです。
{ "camera": "$input.params('camera')" }
これでURLでパラメータ取得の設定が終わりました。
APIのデプロイ
「 アクションボタン 」をクリックし、「 APIのデプロイ 」を選択します。
デプロイ後に各種設定変更した場合は、同様に再デプロイすることで設定が反映されます。
APIのステージを登録します。
このステージは、実際の使用する時エンドポイントを分けて使用することができます。例えば開発用、評価が終わって正式公開用などのようにもできます。
今回はお試しなので「 デプロイされるステージ 」を「新しいステージ」、「 ステージ名 」を「development」とし、「 デプロイ 」ボタンをクリックし、デプロイします。
このステージ名がURL(https:xxxxxxxxxxxxx/development/test)に割り当てられます。
「 デプロイ 」が完了するとステージまでのURLアドレスが表示されます。これに「 リソース名」(今回はtest)が追加されたアドレスがアクセスアドレスになります。
使用量プランの作成
使用量プランを設定します。作成したAPIの使用量を測定することに使用されます。 左メニュー画面から「 使用プラン 」を選択し、「 作成 」ボタンをクリックします。
プラン「 名前 」を入力し、「 スロットリングの有効化 」「 クォータを有効する 」のチェックボックスのチェックを外して、「 次へ 」のボタンをクリックします。
APIステージと使用プランを関連付けます。下記画像の「 APIステージの追加 」ボタンが非Active化(グレー表示)なっていますが、実際はボタンはActive化状態となっていますので、ご了承ください。
「 APIステージの追加 」ボタンをクリックし、「 API 」、「 ステージ 」を選択し、「 チェックマーク 」をクリックします。
完了すると、「 次へ 」ボタンがActive化されますので、ボタンをクリックします。
APIキーと使用プランを関連付けします。下記画像の「 APIキーを使用プランに追加 」ボタンが非Active化(グレー表示)なっていますが、実際はボタンはActive化状態となっていますので、ご了承ください。
「 名前のテキストボッククス 」に、APIキー名を入力すると選択表示が出ますので選択します。
「 チェックマーク 」をクリックします。
完了すると、「 完了 」ボタンがActive化されますので、ボタンをクリックします。
これで外部からAPIキーを使用したURLアクセスができるようになりました。
次はPart3のAWS IoT Deviceとshadow作成です。