ダミーデバイスとして動作するEC2上で作業します。
前提条件
IoTへの権限
AWS IoTに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.2
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.1. SDKのインストール
sudo pip install AWSIoTPythonSDK
(略)
Successfully installed AWSIoTPythonSDK-1.1.1
1.2. dummy デバイスのインストール
作業はログインしたディレクトリ /home/ec2-user で実行して下さい。 (
変更する場合はsetup.jsonでのCERT_PATHの設定が必要)
pwd
/home/ec2-user
wget http://bit.ly/2eP3uEl > dummy.zip
(略)
2016-11-17 03:24:57 (125 MB/s) - `2eP3uEl' へ保存完了 [4208/4208]
mv 2eP3uEl dummy.zip \
&& unzip dummy.zip
Archive: dummy.zip
creating: dummy_python/
inflating: dummy_python/.DS_Store
creating: dummy_python/certs/
inflating: dummy_python/certs/root.pem
inflating: dummy_python/dummy.py
inflating: dummy_python/setup.json
cd dummy_python \
&& ls
certs dummy.py setup.json
1.3. setup.jsonの編集
cp setup.json setup.json.origin
/home/ec2-user/dummy_python/setup.json:
{
"AWSIoT": {
"ENDPOINT":"YOUR_DOMAIN.amazonaws.com",
"CERT_PATH":"/home/ec2-user/Dummy_device/fake_device/certs/",
"KEYS":["cert.pem", "private.pem", "root.pem"]
},
"DEVICE":{
"NAME":"tmp01",
"TOPIC":"/device/room01/tmp01"
}
}
-
YOUR_DOMAINをAWS IoTのエンドポイントURLに書き替えます。
-
CERT_PATHを下記の通り書き替えます。
-
(変更前): /home/ec2-user/Dummy_device/fake_device/certs/
-
(変更後): /home/ec2-user/dummy_python/certs/
-
'https://'の部分は不要です。
1.4. 証明書の設定
IoT環境構築時に取得した証明書と秘密鍵を
/home/ec2-user/dummy_python/certs/下に下記のファイル名で置きます。
-
証明書(作成時の名称:handson-20161117.cert): cert.pem
-
秘密鍵(作成時の名称:handson-20161117.pem): private.pem
scp -i ${FILE_SSH_KEY} handson-20161117.cert ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/dummy_python/certs/cert.pem
scp -i ${FILE_SSH_KEY} handson-20161117.pem ec2-user@${EC2_PUBLIC_IP}:/home/ec2-user/dummy_python/certs/private.pem
- ダミーデバイスの実行
=======================
cd /home/ec2-user/dummy_python/
python dummy.py &
start readConfig func
Start MQTT init
start Init MQTT func
-------start connect--------
Success:Connect to MsgBroker
{"Tmp": 13, "TimeStamp": 1479360340720, "Name": "tmp01"}
S3のバケットにログファイルが書き込まれていることを確認します。
aws s3 ls s3://${S3_BUCKET_NAME}/
2016-11-17 19:26:15 56 handson-1479360373778
- 事後作業
===========
3.1. ダミーデバイスの停止
kill -9 $( ps -ef | grep dumm[y] | awk '{print $2}' )
[1]+ 強制終了 python dummy.py
ps -ef | grep dumm[y]
(戻り値なし)
3.2. ログアウト
exit