本ハンズオンでは以下の内容を作成します。
※ LINEで通知する版は こちら です。
このドキュメントを進めるにあたり以下のデバイスが必要となります。
このドキュメントを進めるにあたり以下のアカウントが必要となります。
このドキュメントを進めるにあたり以下の知識が必要となります。
AWSのアカウントをお持ちでないかたは こちら から作成してください。 LINEアカウントを保有していない方、IDを忘れた方はスタッフにお知らせください。
Enterprise Button をクリックした際に SORACOM Harvest に対して位置情報とクリックタイプを保存する方法を解説します。
SORACOM ユーザーコンソール(SAMユーザログイン) へアクセスします。SAMユーザのログイン画面が表示されますので、以下の通り入力し [ログイン] ボタンをクリックしてください。
項目 | 入力内容 |
---|---|
オペレータID | ボタンに付属しているカードに記載されているOPから始まる文字列 |
ユーザ名 | user |
パスワード | Sora20191102 |
以下のような「SIM 管理」画面が表示されたらログイン完了です。
ユーザーコンソール の “Menu” から “SIM グループ” を選択します。
“グループを作成する” (グループが存在しない場合) あるいは “追加” ボタンよりグループを作成します。任意の名前 (たとえば “handson-button”) をつけて “グループ作成” ボタンをクリックします。
“Menu” から “SIM 管理” を選択します。
Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “所属グループ変更” を選択します。
“新しい所属グループ” に作成したグループを選択し、”グループ変更” をクリックします。
所属させたグループの名前をクリックし、グループ設定の変更画面に遷移します。
”SORACOM Harvest 設定” を開き、”OFF” となっているスイッチをクリックして “ON” に変更します。”保存” をクリックすれば、Harvest が有効となります。ポップアップされる注意事項では “OK” をクリックします。“保存” をクリックしないと設定が変更されないのでご注意ください。
“SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” を “ON” に変更し、”保存” をクリックします。
“SORACOM Air for Cellular 設定” を開き、”バイナリパーサー設定” を “ON” に変更し、フォーマットに @button
と記載し、”保存” をクリックします。
いよいよ Enterprise Button を押します。ボタンをクリックし、 LED がオレンジ色となり、数秒後に緑色となればデータの送信は成功です。
Harvest 上のデータを以下の手順で確認します。
“Menu” から “SIM 管理” を選択します。
Enterprise Button の SIM の左端にある チェックボックスを選択し、”操作” => “データを確認” を選択します。
“データ” 列にて、”clickTypeName” が “SINGLE” であることを確認します。
マップピンアイコンを選択することで表示を地図に変更して、位置情報を確認します。左上の “+” や “-“ でズームを調整できます。”データ” にも $metadata.location
オブジェクトとしてで位置情報が入っています。
Enterprise Button は以下 3 種類のクリックに対応しています。それぞれぜひ試してみてください。連続してデータの送信をしたい場合は Harvest の画面にて「自動更新」を “ON” にしてみてください。
メールで
通知するEnterprise Button から SORACOM Funk と AWS Lambda を介して クリックされた位置の情報をメールで通知する方法を解説します。
Amazon SESからメールが発信できるよう、設定を行います。
Amazon SES管理コンソール を開きます。 ※東京リージョンでは提供されていないため、Oregonを指定しています。
メニューの Email Addresses
を開き、 Verify a New Email Address
をクリックします
Verify a New Email Addressのダイアログが開きます。ご自身のメールアドレス(通知先)を入力し、Verify This Email Address
をクリックします。
Verification Email Sent と表示されます。Close
をクリックします。
設定したメールアドレスに通知メールが届きます。メール本文中に記載のURLにアクセスすると認証が完了します。 Verification Statusが verified になったことを確認します。
※送信元と送信先のメールアドレスを別にする場合は両方の登録が必要です
Lambda関数からメールが送信できるロールを作成します。
IAM管理コンソール を開き、続けて ポリシーの作成
をクリックします。
サービスに ses
と入力し、アクションに SendEmail
とSendRawEmail
を選択します。
リソースには すべてのリソース
を選択し、ポリシーの確認
をクリックします。
ポリシー名に任意の名前を入力し、ポリシーの作成
ボタンをクリックします。
続けてロールの作成を行います。
ロール
メニューから ロールの作成
をクリックします。
”このロールを使用するサービスを選択” から Lambda
を選択し、次のステップに進みます。
“Attachアクセス権限ポリシー” から、上記で作成したポリシーを選択します。
タグが不要ですので、確認ボタンをクリックします。
最後にロール名を入力し ロールの作成
ボタンをクリックします。
位置情報をメールで通知を行うLambda関数を作成します。
AWS Lambda 管理コンソール を開きます。
下記の画面が表示された場合は 関数の作成
をクリックします。
作成方法は 1から作成
を選択します。
続けて任意の関数名をつけ、ランタイムに Python 3.7
を選択、実行ロールに 既存のロールを使用する
とし、ロール名に上記で作成したロールを指定します。
関数が作成されました。関数の編集画面が開きますので、下記のソースコードを貼り付けます。
環境変数 src_mail
dst_mail
に送信元メールアドレス、送信先メールアドレスを入力して、画面一番上の 保存
をクリックします。
Lambda の ARN をコピーしてメモ帳などに写しておきます。
以下のコードをコピー&ペーストで貼り付けてください。
import boto3
import os
import json
REGION = "us-west-2"
def lambda_handler(event, context):
# 環境変数取得
src_mail = os.environ['src_mail']
dst_mail = os.environ['dst_mail']
# 位置情報取得
try:
location_lat = context.client_context.custom["location"]["lat"]
location_lon = context.client_context.custom["location"]["lon"]
except:
return 400
# メッセージ生成
Subject = "ボタンが押されました"
Body = "おおよその位置:緯度:" + str(location_lat) + " 緯度:" + str(location_lon) + "\n https://www.google.com/maps/search/?api=1&query=" + str(location_lat) + "," + str(location_lon)
# メール送信
data = push_email(src_mail,dst_mail,Subject,Body)
result = data['ResponseMetadata']['HTTPStatusCode']
return result
def push_email(source,destination,subject,body):
client = boto3.client('ses',region_name=REGION)
response = client.send_email(
Source=source,
Destination={'ToAddresses':[destination]},
Message={'Subject':{'Data':subject},'Body':{'Text':{'Data':body}}}
)
return response
作成したLambda関数にSORACOM Funkからアクセスできるよう、IAMユーザを作成し権限を付与します。
IAM管理コンソール を開き、続けて ポリシーの作成
をクリックします。
ポリシーの作成画面でJSONを選択し、以下の内容を入力します。Resourceには先程コピーしたLambdaのARNを入力します。入力が終わったら ポリシーの確認
をクリックします。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAuroraToExampleFunction",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "先ほどコピーしたLambdaのARN"
}
]
}
続いてポリシー名を入力し、ポリシーの作成ボタンをクリックします。
作成したIAMポリシーをアタッチしたユーザを作成します。
左側メニューのユーザを選択し、ユーザを追加
ボタンをクリックします。
作成画面が開きますので、ユーザ名を入力、プログラムによるアクセス
を選択し次のステップに進みます。
アクセス許可の設定を行います。 既存のポリシーを直接アタッチ
を選択し、先程作成したポリシー名を選択し紐付けます。
タグは不要です。続けて 確認
をクリックします。
確認画面で ユーザの作成
をクリックします。
作成したユーザーの アクセスキーID およびシークレットアクセスキーをコピーします。
SORACOM ユーザーコンソールの右上のユーザー名をクリックし、セキュリティ
を選択します。
“認証情報ストア” => “認証情報を登録” を選択します。
“認証情報 ID” は任意に記載し、先ほどコピーした AWS ユーザーのアクセスキー ID およびシークレットアクセスキーを入力し、”登録” をクリックします。
ここまでで設定が完了しました。 ボタンを押すと、設定したメールアドレスに通知が来るはずです。 URLをクリックすると、Google Map上に位置が表示されます。 (基地局情報を基準としているため、誤差があります)
確認できない場合は、Lambda のメトリックにて「ログが出ているか」「エラーが出ていないか」を確認してください。
今回は貸出ボタンのため問題ありません。
簡易位置測位機能、Harvest、Funk を有効にしたグループ配下に SIM があると基本使用料金が発生します。詳細は下術の目安となる料金
の章をご確認さい。
これらを解約したい場合は、それぞれの機能についてグループで無効化します。
ユーザーコンソールの “SIM 管理” メニューより、作成した SIM のグループ名を選択します。
“SORACOM Funk 設定” を開き、”OFF” にし “保存” をクリックします。
“SORACOM Harvest 設定” を開き、OFF にし “保存” をクリックします。
“SORACOM Air for Cellular 設定” を開き、”簡易位置測位機能” および “バイナリパーサー設定” を “OFF” にし “保存” をクリックします。 5.ユーザーコンソール から 対象の SIM のチェックボックスを選択 => “操作” => “所属グループ変更” を選択します。
“グループ解除” を選択します。