ダミーデバイスとして動作する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.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)
sudo pip install AWSIoTPythonSDK
(略)
Successfully installed AWSIoTPythonSDK-1.1.1
2.2. dummy デバイスのインストール (EC2)
作業はログインしたディレクトリ /home/ec2-user で実行して下さい。 (
変更する場合はsetup.jsonでのCERT_PATHの設定が必要)
pwd
/home/ec2-user
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]
unzip shadow.zip
creating: shadow/
creating: shadow/certs/
inflating: shadow/certs/rootca.pem
inflating: shadow/dummy_shadow.py
inflating: shadow/multi_shadow.py
cd ~/shadow \
&& ls
certs dummy_shadow.py multi_shadow.py
2.3. setup.jsonの作成 (EC2)
FILE_INPUT='/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
scp -i ${FILE_SSH_KEY} \
handson-20170220.cert ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/shadow/certs/cert.pem
scp -i ${FILE_SSH_KEY} \
handson-20170220.pem ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/shadow/certs/private.pem
- 事後作業
===========
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でプログラムを停止します。