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
  • AWS Secret Access Key: enebularがAWSに対して設定を施す際に利用するユーザのSecret Access Key
  • AWS IoT Endpoint: enebularがAWS IoTにアクセスするためのエンドポイント
  • IAM Role ARN: AWS IoTにて、ルールを実行する際に必要となるRoleのARN

注意事項

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

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

  • 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

以上で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 pushに、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を新規ユーザのものに入れ替えてください。

enebular-agentのバージョン2.5.0以降を利用する場合は、ConnectionにIAM Role ARNを設定してください。

results matching ""

    No results matching ""