AWS IoT GreenglassをRaspberry Pi 3にインストールする
AWS IoTの醍醐味(?) Greenglassを使うためにRaspberry Pi 3にインストールしていきます。
Greenglassを使うとGreenglassに関連付けたAWS IoTデバイスとGreenglassの間でLambdaスクリプトを実行することができ、データを整形したりした上でAWSのDynamoDBなどのサービスに投入することができます。また、GreenglassとAWS間の通信が途絶した場合でも、途絶した情報をGreenglassが保存していて通信が回復した時点で保存しているデータをAWSに送信する機能も付いています。
で、早速インストールします。基本はAWSのドキュメントに従っていれば構築できま………せん!
この通りにセットアップしてデプロイするとこんなメッセージが出ます
[2018-01-08T23:36:54.857+09:00][ERROR]-Runtime execution error: unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"process_linux.go:286: setting cgroup config for ready process caused \\\"no such directory for memory.limit_in_bytes\\\"\""
ふぁーーー!?もしかしたら先駆者がいるかもしれないので落ち着いてググり……いらっしゃいました。
$ sudo nano /boot/cmdline.txt
として末尾に cgroup_memory=1 を追記して再起動すると解決します。
これでAWS ConsoleでGreenglass用のHello Worldをデプロイすると上手く行きます。
[Unit] Description=greengrass daemon After=network.target [Service] ExecStart=/greengrass/ggc/core/greengrassd start Type=simple RestartSec=2 Restart=always User=root PIDFile=/var/run/greengrassd.pid [Install] WantedBy=multi-user.target
Mongoose OSでJavaScript IoTプログラミング
Mongoose OSを使うと簡単にAWS IoT(w/Greenglass)が使えるんだって!
ってことで前回はFlash方法を書きましたが……
ざっとプログラムの書き方でも。Mongoose OSのJavaScriptではNode.JSっぽい感じに書けるようで、GPIOピンの割り込みイベントを作るには以下のように書くようです。
let button = 4; let message = "MQTT Pub";
let topic = "hello/world"; GPIO.set_button_handler(button, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 200, function() { let ok = MQTT.pub(topic, message, 1); print('Published:', ok, topic, '->', message); }, null);
これはGPIOピン4をbutton変数として定義し、GPIOがGNDに落ちた時の立ち下がりエッジを割り込みトリガーとするイベントの定義になっています。
200と定数がありますが、ここはチャタリングが発生しないようイベントの最低発火頻度をmsecで指定するようです。
イベントを定義している匿名関数では事前に指定したMQTTのBrokerのTopicにPubしてシリアルコンソールにメッセージを投げるようになっています。
その他については今後記述していきますが、とりあえず公式ドキュメントを見るとよいでしょう。
ESP8266でMongoose OSを触る
みんな大好きなESP8266で簡単にAWS IoT(Greenglass対応)に参加するべくMongoose OSをインストールしてAWS IoTにThing Deviceとして登録してみましょう。
Mongoose OSのサイト からmosを落としてきます。Windowsも対応してます。
Windows版のmosでは起動するとブラウザが立ち上がってくるので、ESP8266が接続されているCOMポートを選択してください。
ESP8266をUART Download Mode(IO0 => GND, IO2 => 3V3, IO15 => GND)に設定したらRSTをGNDに落として書き込みモードに入れます。mos側でESP8266のdemo-jsをFlashしてあげて、Flash Boot Mode(IO0 => 3V3以外は同じ)にして起動させてみます。無事起動するとTick Tockとコンソールに出るので、WiFiの設定を行います。
続いてAWSはMongooseのIDE側で使うAPI KeyをIAM側で作成します。
最低限以下のポリシーがあれば大丈夫です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iot:DescribeEndpoint", "iot:CreateThing", "iot:AttachThingPrincipal", "iot:AttachPrincipalPolicy", "iot:CreatePolicy", "iot:ListPolicies", "iot:CreateCertificateFromCsr" ], "Resource": "*" } ] }
ゲットしたAPI KeyとSecretをMongoose OSのDevice Configから突っ込みます。
Provision with AWS IoTを押すと自動でThing Deviceとして登録されます。
Windows Hello for Business (WHFB) をやる。
前提
- Windows Server 2012 R2以上のサーバが一つ以上
(AD CS / スキーマアップグレード後のAD DS) - Windows Server 2016 のサーバが一つ
(AD FS / AD DS(アップグレード用))
(ラボ環境であれば2016のサーバが一つあればOK.) - Azure ADのテナントをつくる
(Azure AD Premiumのライセンスが必要か不明)
というのを満たせばWindows Hello for Business(以下WHFB)のハイブリッド証明書構成を構築することが出来ます。
WHFBのキー信頼構成を行うとAD CSの構築は不要ですが、ドメインコントローラのどれか1台にWindows Server 2016 が必ず必要になります。
工程
工程は次のようになります
- AD DSのインストール
(Windows Server 2012の場合には2016スキーマへアップグレード) - AD DSの設定
- AD CSのインストール
- AD CSの設定
- AD FSのインストール
- AD FSの設定
- AAD Connectorのインストール
- AAD Connectorの設定
- GPOの設定
- Device Registrationの確認
- ユーザごとのPIN設定
(そのうち続く)
Azure ADからオンプレミスADのドメインを消す
AD FSの再構築の時にAAD Syncのケアを忘れていて再構築の憂き目にあったのでメモ
PowerShellで以下の手順で行う
1 Connect-MsolService
AADのアカウント(onmicrosoft)でログイン
2 Get-MsolDomain
AAD Syncで同期しているドメインを確認
3 Get-MsolUser
現在のユーザ一覧を取得
4 Get-MsolUser | Where {$_.UserPrincipalName -like "*example.local" } | Select UserPrincipalName | Remove-MsolUser
example.localドメインに属しているユーザを一括で削除
5 Get-MsolUser | Select UserPrincipalName
削除を確認する
6 Get-MsolGroup | Remove-MsolGroup
グループを削除する
7 Get-MsolServicePrincipal | Select DisplayName
連動サービスを確認する
8 Get-MsolServicePrincipal | Remove-MsolServicePrincipal
連動サービスを削除する
9 Remove-MsolDomain -DomainName example.local
ドメインを削除する
10 Get-MsolDomain
ドメインが削除されているか確認する
6,8についてはAADのサービスもまとめて削除していますが、削除するとExceptionが出て削除されないので問題無いです。
めちゃめちゃ参考にしたリンク