AWS IoTのConnection作成

概要

enebularは、ユーザーが利用しているAWS IoTに接続されたデバイスに対してフローやファイルをデプロイしたり、デバイスの接続状況を確認したりする機能を提供します。この機能を利用するには、enebularにAWS IoTのConnectionを作成する必要があります。AWS IoTのConnectionを作成するには、以下を設定してください。

  • Connection Type: AWS IoTを利用する場合は、AWS IoTを設定してください
  • Connection Name: 任意の名前を入力してください
  • AWS Access Key ID: enebularがAWSに対して設定を施す際に利用するユーザのAccess Key ID (注1)
  • AWS Secret Access Key: enebularがAWSに対して設定を施す際に利用するユーザのSecret Access Key (注1)
  • AWS IoT Endpoint: enebularがAWS IoTにアクセスするためのエンドポイント
  • IAM Role ARN: AWS IoTにて、ルールを実行する際に必要となるRoleのARN

注1: AWS Access Key IDとAWS Secret Access Keyはenebular-agentのインストールの説明でも出てきますが、ここで説明するものとは必要となる権限が異なりますのでご注意ください。enebular-agentのインストール向けとAWS IoTのConnection作成向けに異なるAWSユーザを作成して利用することを推奨します。

注意事項

AWS IoTのConnectionは、AWSアカウントにつき一つのみ作成するようにしてください。
一つのAWSアカウントにつき、複数のConnectionを作成すると一つのデバイスが各Connectionで表示され複数存在するように見えます。これは、誤動作の原因になることがあります。

また、enebularはConnectionを作成すると自動的に以下のAWS IoTのルールと、Amazon SNSのTopicを作成しますが、これらを編集・削除しないでください。

  • AWS IoT - enebular_shadow_update
  • AWS IoT - enebular_status_push_rule
  • AWS IoT - enebular_devicestate_push_rule
  • Amazon SNS - enebular_status_push_sns
  • Amazon SNS - enebular_devicestate_push_sns

AWSから取得するConnectionの設定情報の準備

ここでは、以下の4項目の設定情報を用意する方法について説明します。

  • AWS Access Key ID
  • AWS Secret Access Key
  • AWS IoT Endpoint
  • IAM Role ARN

enebularが提供する機能を利用するには、AWS IoTだけではなく、Amazon SNSの利用も必要です。 enebularは、ユーザーのAWS IoTとAmazon SNSに対してenebularと連携するための設定を自動的に行います。自動設定のために、ユーザーからAWSユーザのAccess Key ID、Secret Access KeyをConnectionの設定情報として入力します。 設定が完了すると、デバイスでの状態変化を検出するためのAWS IoTのルールと、その状態変化をenebularに伝えるSNS Topicが作成されます。このAWS IoTのルールを実行するには、その権限をAWS IoTに渡す必要があり、その権限をIAM Role ARNとしてConnectionに設定する必要があります。

以下、AWSユーザIAM Role ARNの準備の仕方と、AWS Endpointの参照方法について以下に説明します。

IAM Role ARNの作成

まず最初にIAM Role ARNを作成します。

  1. AWSマネジメントコンソールにサインインし、上部の[サービス]→[IAM]→[ロール]→[ロールの作成]をクリックします

  2. このロールを使用するサービスを選択欄でIoTを選択後、ユースケースの選択でIoTを選択し、[次のステップ:アクセス権限]ボタンを押下します

  3. アクセス権限ポリシーはデフォルトのままで、[次のステップ:タグ]ボタンを押下します

  4. タグの追加もデフォルトのままで、[次のステップ:確認]ボタンを押下します

  5. 任意のロール名と、必要に応じロールの説明を指定し、[ロールの作成]ボタンを押下します。後の説明のためにここではロール名をenebular_status_push_roleとします

  6. 次に、ロール名の一覧から今作成したロール名をクリックします

  7. この状態では、以下のポリシーがアタッチされているかと思います

    • AWSIoTThingsRegistration
    • AWSIoTLogging
    • AWSIoTRuleActions

      上記のポリシーは全て不要であるため右の[×]ボタンを押下してデタッチを行います。

  8. [ポリシーをアタッチします]ボタンを押下し以下のポリシーをアタッチします

    • AmazonSNSFullAccess
    • AWSIoTDataAccess

以上でIAM Roleの作成は完了です。画面に表示されているロール ARNが、enebularのConnection情報として入力が必要となるIAM Role ARNとなりますので、これをコピーしておきます(Connection情報①)。

AWSユーザの作成

PassRoleポリシーの作成

AWSのユーザを作成する前に、PassRoleポリシーを作成します。PassRoleポリシーは、AWSユーザに設定するポリシーであり、IAM Role ARNに必要なポリシーが登録されていることをチェックできるようにすることと、AWS IoTのサービスにIAM Role ARNで指定したRoleを渡すことができるようにします。

  1. AWSマネジメントコンソールにサインインし、上部の[サービス]→[IAM]→[ポリシー]→[ポリシーの作成]をクリックします

  2. [サービスの選択]をクリックしIAMと入力し、表示された候補(IAM)をクリックします

  3. [アクション]をクリックし、フィルタアクション入力欄にPassRoleと入力し、表示された候補をチェックします

  4. 次に上記と同じ入力欄に、GetRoleと入力し、表示された候補をチェックします

  5. 次に上記と同じ入力欄に、ListAttachedRolePoliciesと入力し、表示された候補をチェックします

  6. [ARNの追加]をクリックし、表示されたダイアログのAccountに現在利用されているAWSアカウント(数字列)を入力し、Role name with pathに、IAM Role ARNのロール名であるenebular_status_push_roleを入力した上で[追加]ボタンを押下します

  7. [ポリシーの確認]ボタンを押下します

  8. 名前欄と任意のポリシー名を入力します。説明のために、ここではEnebularPassRoleという名前にします。説明については必要に応じ入力してください

  9. [ポリシーの作成]ボタンを押下するとPassRolePolicyの作成は完了です

ユーザの作成

AWSマネジメントコンソールにサインインし、上部の[サービス]→[IAM]→[ユーザー]→[ユーザーを追加]をクリックします

  1. ユーザ名欄に、任意のユーザ名を入力します。今後の説明のためにここではenebular-conn-userとします

  2. アクセス種類プログラムによるアクセスにチェックを入れて、[次のステップ:アクセス権限]ボタンを押下します

  3. [既存のポリシーを直接アタッチ]ボタンを押下し、ポリシーのフィルタを使って以下の3つのポリシーを選択し、[次のステップ:タグ]ボタンを押下します

    • AWSIoTFullAccess
    • AmazonSNSFullAccess
    • EnebularPassRole(PassRolePolicyの作成で説明した手順で作成したRole)
  4. 必要に応じタグを入力し、[次のステップ:確認]ボタンを押下します

  5. 選択した3つのポリシーが設定されていることを確認し、[ユーザの作成]ボタンを押下します

  6. ユーザーアクセスキーIDシークレットアクセスキーが閲覧できますので、これらの値をコピーしておきます(Connection情報②)

AWS IoT Endpointの参照

AWSマネジメントコンソールにサインインし、上部の[サービス]→[IoT Core]→[設定]をクリックします。 念のため、AWS Console画面の上部に表示されたRegionが、デバイスの接続先のRegionであることを確認してください。正しくない場合は、プルダウンメニューから正しいRegionを設定してください。 カスタムエンドポイントに、エンドポイントの文字列が表示されますのでこちらをコピーしておきます(Connection情報③)。

enebularでのConnectionの作成

enebularでProjectを選択した画面の左側のサイドメニューにConnectionsがありますので、これをクリックします。 右下の[+]ボタンを押下すると下記のダイアログが表示されます。

awsiot-connection-dialog

以下のように設定し、[Save]ボタンを押下します。

  • Connection Type: AWS IoTを指定してください
  • Connection Name: 任意の名前を入力してください
  • AWS Access Key ID: Connection情報②のアクセスキーID
  • AWS Secret Access Key: Connection情報②のシークレットアクセスキー
  • AWS IoT Endpoint: Connection情報③のエンドポイント
  • IAM Role ARN: Connection情報①のロールARN

これでenebularへのConnection追加は完了です。 Deploy先として今回作成したConnectionを選択する際は、このConnection Nameを選択するようにしてください。

一度作成したConnectionは、Connection Name以外変更できなくなります。Connection Name以外を修正したい場合は、Connectionを削除した上で新規に作成するようにしてください(同じAWSアカウントを参照する別のConnectionを登録している状態では、新しいConnectionの作成はできません)。

enebular 2.9.0以前に作成したAWS IoT Connectionに対する対応

enebular 2.9.0以前のバージョンで、AWS IoTのConnectionを作成している場合、デバイスにライセンスを割当てていてもConnected / Disconnectedのステータスを閲覧することができなくなります。

ステータスを閲覧できるようにするために以下の対応をしてください。

  1. IAM Role ARNの追加 上記のIAM Role ARNの作成に従ってIAM Role ARNを作成してください。 enebularにて、Connectionを編集し、作成したIAM Role ARNを入力してください。

  2. AWS Access Key ID / AWS Secret Access Keyに対応するユーザのポリシー追加 enebular 2.9.0以前では、AWSIoTFullAccessのポリシーのみ必要でしたが、これに加えて以下二つのポリシーの追加が必要となります。

もし、新しいAWSユーザを作成して良い場合は、上記のAWSユーザの作成に従って、新規にユーザを作成し、Connectionに設定済みのAWS Access Key ID / AWS Secret Access Keyを新規ユーザのものに入れ替えてください。

results matching ""

    No results matching ""