このドキュメントを進めるにあたって、以下のデバイスが必要となります。
このドキュメントを進めるにあたって、以下のアカウントが必要となります。
このドキュメントを進めるにあたって、以下の知識が必要となります。
AWSのアカウントをお持ちでない方は https://aws.amazon.com/jp/register-flow/ から作成してください。
SORACOMユーザーコンソールへのログイン手順を解説します。
SORACOM ユーザーコンソール(SAMユーザログイン) (https://console.soracom.io/#/sam_login?coverage_type=jp) へアクセスします。SAMユーザのログイン画面が表示されますので、以下の通り入力し [ログイン] ボタンをクリックしてください。
以下のような「SIM 管理」画面が表示されたらログイン完了です。
ガジェット設定を行い、動作確認として、Enterprise Button(または仮想ボタン) をクリックした際に SORACOM Harvest に対してクリックタイプを保存する方法を解説します。
いよいよ Enterprise Button を押します。ボタンをクリックし、 LED がオレンジ色となり、数秒後に緑色となればデータの送信は成功です。
Harvest 上のデータを以下の手順で確認します。
$metadata.location
オブジェクトとしてで位置情報が入っています。AWS LamdaとSORACOM Funkを設定し、ボタンクリックで、デバイスが動作させるところまでを解説します。
まず、利用するサービスについて解説します。
今回のハンズオンでは、「クラウドファンクションアダプタ SORACOM Funk」を用いてAWS LambdaのFunctionを呼び出します。
SORACOM Funkについて詳しくは以下の公式ページを参照ください。
https://soracom.jp/services/funk/
SORACOM Funk の課金体系は、リクエスト数に応じた従量課金です。初期費用、基本料金はかかりません。
今回のハンズオンでは、ほとんどの方は無料枠の中でご利用いただけます。
今回のハンズオンでは、AWS Lambda(以下Lambda)を使ってデバイスにメッセージを送信します。
AWS Lambdaについては以下の公式ページを参照してください。
https://aws.amazon.com/jp/lambda/
Lambdaにコードをデプロイする方法はいくつかありますが、今回は運営が準備したコードをAWSコンソールから貼り付けてデプロイします。
Lambdaの利用料金は以下の公式ページをご覧ください。
https://aws.amazon.com/jp/lambda/pricing/
今回のハンズオンの内容は無料枠の中でご利用いただけます。翌月以降も費用が発生することはまずありませんが、不安な方はハンズオン終了後にリソースを削除してください。
AWS Lambdaにデバイスへメッセージを送信するプログラムをデプロイします。
まず、AWSコンソールにアクセスします。右上のリージョンが「バージニア北部」になっていない場合は、プルダウンから変更してください。
検索窓に「Lambda」と入れてLambdaのコンソールにアクセスします。
「関数の作成」を押し、新しい関数を作成します。
関数のタイプで「一から作成」を選び、適当な関数名(例: soracom-techon-handson-20220408-role) を入力、ランタイムは「Python3.9」を選びます。それ以外の部分はデフォルトのままで「関数の作成」を押します。
コードソースに入っているデフォルトのコードを削除し、「keiganmotor_operator.py」の内容をそのまま貼り付けます。
コード内の24行目の
「WHAT_YOUR_NAME = "" 」
の"" 内に、運営より指定された文字列を入力してください。
そして、「Deploy」ボタンを押してコードをデプロイします。
「設定」→「環境変数」→「編集」を押し、このLambda関数の環境変数を設定します。
「環境変数の追加」を4回押し、キーと値を入力する枠を4個作ります。そこに以下のキーと値を入れて、「保存」を押します。
・ DEST_REGION_NAME → 当日運営にお問い合わせください
・ DEST_ENDPOINT_URL → 当日運営にお問い合わせください
・ DEST_AWS_ACCESS_KEY_ID → 当日運営にお問い合わせください
・ DEST_AWS_SECRET_ACCESS_KEY → 当日運営にお問い合わせください
次にLambdaの実行時間(タイムアウト)を変更します。「一般設定」から「編集」を押します。
デフォルトではタイムアウトが3秒になっているので、これを30秒に変更して「保存」を押します。
保存できたら、動作テストを行います。
「テスト」を押し、テストイベントの名前に「test」と入力し、JSONが記載されている部分に以下のJSONを貼り付け、「変更を保存」を押します。
{
"clickType":2,
"clickTypeName":"SINGLE",
"batteryLevel":1,
"binaryParserEnabled":true
}
保存したら、「テスト」ボタンを押します。下図のように、「実行結果:成功」と出ていれば成功です。
Lambdaのコンソールにて、「関数のARN」をコピーしておきます。
設定がうまく進まないときにご覧ください。ここまでの作業が出来ている場合は次に進んでください。
・コードのコピペが崩れてる、全角スペースが入ってるなどコードの問題: ファイルは文字コード UTF-8になっていますので、ファイルを開いたエディタによってはShiftJISになってしまいますと、文字化けします。エディタの設定で、UTF-8で開き直してください。
・成功したけど、想定通りの動作じゃない。: keiganmotor_operator.pyの内容を貼り付けたあと、「Deploy」ボタンを押し忘れてますと、コードの変更が反映されず以下のような実行結果が表示されます。エディタ画面で「Deploy」ボタンを押してください。
・タイムアウトエラーが出る。: タイムアウト時間が初期設定の3秒のままだと、初回起動時にタイムアウトエラーになることがあります。タイムアウト時間の変更を行ってください。
SORACOM FunkからAWS Lambdaを呼び出すための権限であるIAM Roleを作成します。
AWSのコンソールにて、検索窓に「IAM」と入力し、IAMのコンソールにアクセスします。
ロールを選択します。
ロールの作成をクリックします。
以下の項目を入力して、次へをクリックします。
信頼されたエンティティタイプ | AWSアカウント |
AWSアカウント | 別のAWSアカウント |
アカウントID | 762707677580 |
オプション | 外部IDを要求する |
外部ID | 任意(例: soracom-funk-roleid) |
「AWSLambdaRole」を検索してチェックを入れ、次へをクリックします。
適当なロール名(例: soracom-techon-handson-20220408-role)を入力し、ロールを作成します。
作成したロールを表示します。
ロールのARNをコピーします。
AWS Lambdaを呼び出すための認証情報の登録をします。
SORACOM ユーザーコンソールにログインします。
ユーザーコンソール右上のユーザー名をクリックし、「セキュリティ」を選択します。
認証情報ストアを開き、「認証情報を登録」をクリックします。
以下の情報を入力し、「登録」をクリックします。
認証情報ID | 任意(例: button-function) |
種別 | AWS IAM ロール認証情報 |
ロールARN | 作成したIAM RoleのARN |
外部ID | 作成したIAM Roleの外部ID(例: soracom-funk-roleid) |
AWS Lambdaを呼び出すSORACOM Funkの設定をします。
所属させたグループ名をクリックし、SIMグループの設定画面に移動します。
SORACOM Funkの設定を開き、以下の設定を入力して「保存」をクリックします。
設定 | ON |
サービス | AWS Lambda |
関数のARN | AWS Lambdaの関数のARN |
認証情報 | 作成した認証情報(例: button-function) |
ボタンを押してみましょう。LEDが緑点灯すれば正常にリクエストできています。
デバイスが動作していると思うので、確認しましょう。
後片付けの手順を解説します。
AWS上のリソースは、残っていても、課金されることはありませんが、不要な場合は、以下を行ってください。
放置しておいても、課金が発生することはありませんが、後片付けを行います。
すでに今回のハンズオン以外で、Harvestなどのサービスをお使いの場合は、料金が発生しますので、不要の場合は削除を行ってください。
バーチャルSIMについても、アカウントに1つだけは無料で保持できますので、そのままでも問題ありません。1つ以上お持ちの方のみ、不要の場合は削除を行ってください。
OS標準のアンインストール方法で削除します。
こちらもOS標準のアンインストール方法で削除します。
SIMグループを削除するには、紐づいているSIMグループを削除してから削除する必要があります。
なお、SIMの紐付けがあると、エラーになりますので、必ずSIMの紐付けを全部解除してから行ってください。
このままでも、課金が発生することはありませんが、後片付けを行います。
後片付け(IoTボタンシュミレータ)の手順にある、以下の手順のみ行ってください
貸し出しの場合、SORACOMのコンソールからログアウトして、ボタンを運営メンバーにお返しください。