このページでは、AWSにデバイスや証明書を登録、また認証情報プロバイダを使用するために必要な設定について記載します。
以下の工程で実施します。
- 1. SE050 からデバイス証明書とリファレンスキーを取得する
- 2. AWS 設定
- 2.1 AWSアカウント、IAMユーザー作成
- 2.2 AWS CLI インストール
- 2.3 パラメータの設定
- 2.4 AWS IoT Core に Thing(デバイス)を登録
- 2.5 IoT Core 認証情報プロバイダ関連設定
1. SE050からデバイス証明書とリファレンスキーを取得する
本作業は、Armadillo-IoT G4上で実施します。
Armadillo-IoT G4 の起動や接続方法についてはマニュアルをご確認ください。
Armadillo-IoT G4 をネットワークに接続、以下のコマンドを実行しスクリプトを取得・実行してください。
SE050 から デバイス証明書とリファレンスキーの取得に成功すると、以下のログが出力されます。
[armadillo ~]# curl -O https://download.atmark-techno.com/sample/armadillo_iot_g4-detect-object-and-aws-services-howto/get_keycert_from_se050.sh [armadillo ~]# chmod +x get_keycert_from_se050.sh [armadillo ~]# ./get_keycert_from_se050.sh Get device cert / key from SE050 ...Done SerialNo(ThingName)=0000001234567890
key ディレクトリ配下にSE050から取得した証明書 device_cert.pem とリファレンスキー key.pem が保存されます。
[armadillo ~]# ls key/* key/device_cert.pem key/key.pem
本 HowTo では以下の証明書とリファレンスキーを取得しています。
key name | ID |
---|---|
Cloud connection key 0, RSA2048, Die Indivisual |
0xF0000110 (refkey) 0xF0000111 (cert) |
スクリプト実行結果で表示されたシリアル番号について、2.3 パラメータ設定 の工程で必要となるのでメモしておいてください。
SerialNo(ThingName)=0000001234567890
2. AWS設定
この先の作業はPC上で実施します。
2.1 AWSアカウント、IAMユーザー作成
以下を参考に AWSアカウント、IAMユーザーを作成してください。
2.2 AWS CLI インストール
この先の作業は AWS CLI(AWS Command Line Interface) を用います。
こちらのページからインストーラをダウンロードし、AWS CLIをインストールします。
なお、本HowToではLinuxでの使用を想定して以降の手順を記述します。
AWS CLIのコンフィグレーション
インストールが完了したら、aws configure コマンドを使用し、 AWS CLI のコンフィグレーションを行います。
ここでは、以下のパラメータを設定します。
項目 | 設定内容 | 例 |
---|---|---|
AWS Access Key ID [None] | new_user_credentials.csv の Access key ID 列に記載されている文字列 | AWS123 |
AWS Secret Access Key [None] | new_user_credentials.csv の Secret access key 列に記載されている文字列 | AWS-access |
Default region name [None] | ご利用のregion | ap-northeast-1 |
Default output format [None] | 出力フォーマット | json |
上表の例では以下の通りの入力となります。
# aws configure AWS Access Key ID [None]: AWS123 AWS Secret Access Key [None]: AWS-access Default region name [None]: ap-northeast-1 Default output format [None]: json
2.3 パラメータの設定
以下の一連の設定で必要となるパラメータを設定します。
アカウント関連
項目 | 設定内容 | 例 |
---|---|---|
AWS_REGION | ご利用のregion | ap-northeast-1 |
AWS_ACCOUNTID | アカウントID | 123456789000 |
コマンド実行例
# AWS_REGION=ap-northeast-1 # AWS_ACCOUNTID=123456789000
デバイス関連
項目 | 設定内容 | 例 |
---|---|---|
IOTCORE_THING_NAME | AWS IoT Core Thing名 工程1 で取得したG4のシリアル番号を指定します |
0000001234567890 |
コマンド実行例
# IOTCORE_THING_NAME=0000001234567890
ポリシー、ロール名
変数名 | 内容 | 例 |
---|---|---|
IOTCORE_POLICY_NAME | IoT Coreポリシー名 | G4_IoTCore_Policy |
S3_ASSUME_ROLE_NAME | Assume Role名 | G4_AssumeRole |
S3_ACCESS_POLICY_NAME | S3にアクセス権限を持つポリシー名 | G4_S3_Upload_Policy |
IOTCORE_ALIAS_ROLE_NAME | IoT Coreロールエイリアス名 | G4_IoTCore_RoleAlias |
IOTCORE_CREDENTIAL_POLICY_NAME | IoT Core 認証情報プロバイダポリシー名 | G4_IoTCore_Credential_Policy |
コマンド実行例
# IOTCORE_POLICY_NAME=G4_IoTCore_Policy # S3_ASSUME_ROLE_NAME=G4_AssumeRole # S3_ACCESS_POLICY_NAME=G4_S3_Upload_Policy # IOTCORE_ALIAS_ROLE_NAME=G4_IoTCore_RoleAlias # IOTCORE_CREDENTIAL_POLICY_NAME=G4_IoTCore_Credential_Policy
2.4 AWS IoT Core にThing(デバイス)を登録する
以下の手順で、AWS IoT Coreにモノ(デバイス)を登録します。
ポリシーの作成
ポリシーを記載したjsonファイルを作成します。
以下をコンソールへコピー&ペーストしてください。
cat << EOF > iot-core-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:${AWS_REGION}:${AWS_ACCOUNTID}:client/\${iot:Connection.Thing.ThingName}", "Condition": { "Bool": { "iot:Connection.Thing.IsAttached": ["true"] } } }, { "Effect": "Allow", "Action": ["iot:Publish", "iot:Receive"], "Resource": [ "arn:aws:iot:${AWS_REGION}:${AWS_ACCOUNTID}:topic/\$aws/things/\${iot:Connection.Thing.ThingName}/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:${AWS_REGION}:${AWS_ACCOUNTID}:topicfilter/\$aws/things/\${iot:Connection.Thing.ThingName}/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:UpdateShadow", "Resource": "arn:aws:iot:${AWS_REGION}:${AWS_ACCOUNTID}:thing/\${iot:Connection.Thing.ThingName}" }, { "Effect": "Allow", "Action": "iot:GetThingShadow", "Resource": "arn:aws:iot:${AWS_REGION}:${AWS_ACCOUNTID}:thing/\${iot:Connection.Thing.ThingName}" } ] } EOF
以下のコマンドを実行してポリシーを作成します。
# aws iot create-policy --policy-name ${IOTCORE_POLICY_NAME} --policy-document file://iot-core-policy.json
Thing作成
工程1. で取得したシリアル番号を使用します。
# aws iot create-thing --thing-name ${IOTCORE_THING_NAME}
デバイス証明書登録
工程1. で取得したデバイス証明書を登録します。
USBメモリ等を使用し、G4上にある device_cert.pem をPCに置いてください。
# IOTCORE_CERT_ARN=$(aws iot register-certificate-without-ca \ --certificate-pem file://device_cert.pem --status ACTIVE \ --query certificateArn --output text)
証明書にポリシーをアタッチ
登録した証明書に、上記で作成したポリシーをアタッチします。
# aws iot attach-policy --target ${IOTCORE_CERT_ARN} --policy-name ${IOTCORE_POLICY_NAME}
証明書をThingにアタッチ
作成したThingに、証明書をアタッチします。
# aws iot attach-thing-principal --thing-name ${IOTCORE_THING_NAME} --principal ${IOTCORE_CERT_ARN}
IoT Core デバイスデータエンドポイント取得
デバイスが IoT Core に接続するために必要となる IoT Core デバイスデータエンドポイントを取得します。
取得した結果については この後の工程で使用するため、メモしておいてください。
# aws iot describe-endpoint --endpoint-type iot:Data-ATS
2.5 IoT Core 認証情報プロバイダ設定
以下の手順で、IoT Core 認証情報プロバイダ関連の設定を行います。
Amazon S3を操作できる IAMロールを作成
ポリシーを記載したjsonファイルを作成します。
以下をコンソールへコピー&ペーストしてください。
cat << EOF > assume-role-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
以下のコマンドを実行し、IAMロールにを作成します。
# aws iam create-role \ --role-name ${S3_ASSUME_ROLE_NAME} \ --assume-role-policy-document file://assume-role-policy.json \ --max-session-duration 43200
Amazon S3 にアクセス権限を持つポリシーを作成、ロールにアタッチ
今回は S3 にファイルを送信するため、 S3 の権限設定を行います。
ポリシーを記載したjsonファイルを作成します。
以下をコンソールへコピー&ペーストしてください。
cat << EOF > s3-access-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" } ] } EOF
以下のコマンドを実行し、ポリシーを作成します。
# S3_UPLOAD_POLICY_ARN=$(aws iam create-policy \ --policy-name ${S3_ACCESS_POLICY_NAME} \ --policy-document file://s3-access-policy.json \ --query Policy.Arn \ --output text)
ロールにアタッチします。
# aws iam attach-role-policy \ --role-name ${S3_ASSUME_ROLE_NAME} \ --policy-arn ${S3_UPLOAD_POLICY_ARN} # S3_ASSUME_ROLE_ARN=$(aws iam get-role \ --role-name ${S3_ASSUME_ROLE_NAME} \ --query Role.Arn \ --output text)
IoT Core ロールエイリアスを作成
S3にアクセス権限を持つロールを、IoT Coreロールエイリアスに指定します。
このとき、 IoT Core 認証情報プロバイダから発行する認証情報の有効期間を指定します。
今回は 43,200秒(12時間) を指定します。
# aws iot create-role-alias \ --role-alias ${IOTCORE_ALIAS_ROLE_NAME} \ --role-arn ${S3_ASSUME_ROLE_ARN} \ --credential-duration-seconds 43200 # S3_UPLOAD_ROLE_ALIAS_ARN=$(aws iot describe-role-alias \ --role-alias ${IOTCORE_ALIAS_ROLE_NAME} \ --query roleAliasDescription.roleAliasArn \ --output text)
IoT Core 認証情報プロバイダポリシーを作成
ポリシーを記載したjsonファイルを作成します。
以下をコンソールへコピー&ペーストしてください。
cat << EOF > iot-credential-policy.json { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "${S3_UPLOAD_ROLE_ALIAS_ARN}" } } EOF
以下のコマンドを実行し、ポリシーを作成します。
# aws iot create-policy --policy-name ${IOTCORE_CREDENTIAL_POLICY_NAME} --policy-document file://iot-credential-policy.json
IoT Core 認証情報プロバイダポリシーをデバイス証明書にアタッチ
ポリシーをデバイス証明書にアタッチします。これにより、認証情報プロバイダから認証情報を取得できるようになります。
# aws iot attach-policy --target ${IOTCORE_CERT_ARN} --policy-name ${IOTCORE_CREDENTIAL_POLICY_NAME}
IoT Core 認証情報プロバイダエンドポイント取得
デバイスが認証情報を取得するために必要となる IoT Core 認証情報プロバイダエンドポイントを取得します。
取得した結果については この後の工程で使用するため、メモしておいてください。
# aws iot describe-endpoint --endpoint-type iot:CredentialProvider
ここまでで、 デバイス登録の設定が完了しました。 次のArmadillo-IoT G4 を用いた物体認識プログラムの動作確認と AWS 各サービスの利用による分析方法 (G4 セットアップ編) に進んでください。