はじめに
AWS IoTを使用するためにはモノの登録を行う必要があります。モノの登録方法はいくつかあり、マネジメントコンソールで登録する方法や、初回接続時に作成する方法(Fleet Provisioning, JITR, JITP)があります。今回はこの中で、マネジメントコンソールから複数のモノを一括で登録する方法について試してみます
モノの一括登録
複数のモノを一括で登録するにはマネジメントコンソールの管理>モノから多数のモノの作成を選択します。
すると、以下のような画面でテンプレートを入力せよと言われます。
複数のモノを作成するには、まずプロビジョニングテンプレートと呼ばれるテンプレートでモノにどのような属性をもたせるか(例えば証明書はこれで、モノの名前はこれで、Policyはこれでというようなフォーマット)を定義して、そのテンプレートにパラメータ(1つ目のモノの名前はXXXですよというような感じ)を入力してあげる必要があります。プロビジョニングテンプレートについてはこちら に解説があります。ParametersセクションとResourceセクションがあって、どのようなParameterを入力させたいかを定義します。このページにプロビジョニングテンプレートの雛形があるので、今回はこの雛形一つのをモディファイした以下のプロビジョニングテンプレートを使用します。
{
"Parameters" : {
"ThingName" : {
"Type" : "String"
},
"SerialNumber" : {
"Type" : "String"
},
"Location" : {
"Type" : "String",
"Default" : "WA"
},
"CertificateId" : {
"Type" : "String"
}
},
"Resources" : {
"thing" : {
"Type" : "AWS::IoT::Thing",
"Properties" : {
"ThingName" : {"Ref" : "ThingName"},
"AttributePayload" : { "version" : "v1", "serialNumber" : {"Ref" : "SerialNumber"}}
}
},
"certificate" : {
"Type" : "AWS::IoT::Certificate",
"Properties" : {
"CertificateId": {"Ref" : "CertificateId"}
}
},
"policy" : {
"Type" : "AWS::IoT::Policy",
"Properties" : {
"PolicyName" : "My_IoT_Policy"
}
}
}
}
次へをクリックして先に進むと、パラメータファイルとロールの入力を求められます。
パラメータファイルは先程のプロビジョニングテンプレートで定義したParameterをモノごとに各行に定義したファイルで、今回は以下のようなファイルをパラメータファイルとし、適当なS3のバケット上に置きました。
{ "ThingName" : "Hoge", "SerialNumber": "123", "Location":"Tokyo", "CertificateId":"2c0daf692c937080b3f90fd84e559e1a4f9c0ca653834c53ebad03346492170f"}
{ "ThingName" : "Fuga", "SerialNumber": "456", "Location":"Osaka", "CertificateId":"c71587c094819f9b8993e4da182736dcba2a3bdf9fe10b7b841a8174f8f74795"}
{ "ThingName" : "Boke", "SerialNumber": "789", "Location":"Nagoya", "CertificateId":"c71587c094819f9b8993e4da182736dcba2a3bdf9fe10b7b841a8174f8f74795"}
また、ロールについては、モノの登録ができる権限と、S3が読める権限を与えたロールを作成します。
一括登録を開始のボタンをクリックすると一括登録が始まります。ブラウザをリロードすると以下のようにものが作成されています。
中身を確認すると、Parameterとして指定した属性(SerialNumberやVersion)、証明書が反映されていることが確認できます。
まとめ
今回はAWS IoTにて複数のモノを一括で登録する方法について試してみました。次回は、Fleet ProvisioningやJITR, JITPについても試してみたいと思います