ダミーデバイスとして動作するEC2上で作業します。
前提条件
IoTへの権限
AWS IoTに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.47
コマンド
aws --version
結果(例)
aws-cli/1.11.14 Python/2.7.10 Darwin/15.6.0 botocore/1.4.71
バージョンが古い場合は最新版に更新しましょう。
コマンド
sudo -H pip install -U awscli
0. 準備
0.1. リージョンの決定
構築するリージョンを決めます。 (カレントユーザが利用するカレントリージ
ョンも切り変わります。)
コマンド(東京リージョンの場合)
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。
コマンド
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile administrator-prjz-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
AssumeRoleを利用している場合はprofileが ''と表示されます。 そ
れ以外のときにprofileが '' と表示される場合は、以下を実行して
ください。
変数の設定:
export AWS_DEFAULT_PROFILE=<IAMユーザ名>
1. 事前作業
2. EC2での構築作業
ダミーデバイス用のEC2インスタンスにログインして構築作業をします。
2.1. SDKのインストール (EC2)
コマンド(EC2)
sudo pip install AWSIoTPythonSDK
結果(例)
(略)
Successfully installed AWSIoTPythonSDK-1.1.1
2.2. dummy デバイスのインストール (EC2)
作業はログインしたディレクトリ /home/ec2-user で実行して下さい。 (
変更する場合はsetup.jsonでのCERT_PATHの設定が必要)
コマンド(EC2)
pwd
結果
/home/ec2-user
コマンド(EC2)
wget https://s3-ap-northeast-1.amazonaws.com/document-for-customer/AWSIoT_Basic/JAWS-shadow/shadow.zip
結果
(略)
2016-11-17 03:24:57 (125 MB/s) - `shadow.zip' へ保存完了 [4208/4208]
コマンド(EC2)
unzip shadow.zip
結果
creating: shadow/
creating: shadow/certs/
inflating: shadow/certs/rootca.pem
inflating: shadow/dummy_shadow.py
inflating: shadow/multi_shadow.py
コマンド(EC2)
cd ~/shadow \
&& ls
結果
certs dummy_shadow.py multi_shadow.py
2.3. setup.jsonの作成 (EC2)
変数の宣言
FILE_INPUT='/home/ec2-user/shadow/setup.json'
/home/ec2-user/shadow/setup.json
{
"AWSIoT": {
"ENDPOINT":"YOUR_DOMAIN.amazonaws.com",
"CERT_PATH":"/home/ec2-user/shadow/certs/",
"KEYS":["cert.pem", "private.pem", "root.pem"]
},
"DEVICE":{
"NAME":"handson20170220",
"TOPIC":"/device/room01/tmp01"
}
}
-
YOUR_DOMAINをAWS IoTのエンドポイントURLに書き替えます。
- 'https://'の部分は不要です。
コマンド
mv /home/ec2-user/shadow/certs/rootca.pem /home/ec2-user/shadow/certs/root.pem
2.4. 証明書の転送 (Local)
IoT環境構築時に取得した証明書と秘密鍵を
/home/ec2-user/shadow/certs/下に下記のファイル名で置きます。
証明書(作成時の名称:handson-20170220.cert): cert.pem
秘密鍵(作成時の名称:handson-20170220.pem): private.pem
コマンド(Local)
scp -i ${FILE_SSH_KEY} \
handson-20170220.cert ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/shadow/certs/cert.pem
コマンド(Local)
scp -i ${FILE_SSH_KEY} \
handson-20170220.pem ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/shadow/certs/private.pem
3. 事後作業
3.1. 証明書の確認
コマンド
ls /home/ec2-user/shadow/certs/
結果
cert.pem, private.pem, root.pem
3.2. プログラムの動作確認
コマンド
cd ~/shadow/ \
&& python dummy_shadow.py
結果
start readConfig func
start connct shadow
shadow connect
satrt subscribe shadow
send currnet status to cloud-shadow
{"state":{"reported":{"wait_time":10, "signal":"green"}}}
Ctrl+Cでプログラムを停止します。