Fleet Hubを触ってみた

2021.06.19

概要

「Fleet Hub」がいつの間にやらGAしてました。
早速触ってみてどんなサービスなのか確認してみます。

Get Started with Fleet Hub for AWS IoT Device Management

目次

1.Fleet Hubとは

ざっくり言うと「AWS IoT Core」で管理しているデバイスの管理画面を提供するサービスです。デバイスがMQTT接続できているか、Jobの実行状況、自分で定義した指標に基づくアラート等の設定&管理ができます。IAM作らなくてもEmailアドレスを使ってログインできたりするので、非技術者の方へ展開する際も管理が楽です。

例えば以下のようなデバイスの一覧画面とか

サマリー画面や

「IoT Jobs」の管理画面や

アラートの管理画面が用意されています。

IoTを扱っているとデバイスの数も増えてきて、監視したい指標も人によってバラバラだったりするので、こういったマネージドサービスはとてもありがたいですね。

2.前提条件

「Fleet Hub」を利用するためには以下の前提条件を満たす必要があります。

  • 「IoT Core」で「Fleet Index」を有効化
    • AWSのマネジメントコンソール画面上から数クリックするだけで有効化可能なので簡単
  • 「AWS Single Sign-On(以降、SSO)」の有効化
    • 管理画面へアクセスするユーザーの情報を管理する際にSSOを利用する
    • SSOを有効化するためには「AWS Organizations」の管理アカウントでサインインできる必要がある
    • 詳細はAWS SSO の前提条件をご参照ください

3.やってみた

Get Started with Fleet Hub for AWS IoT Device Managementを参考に触っていきます。

3-1.Fleet Indexの有効化

「Fleet Index」は「AWS IoT Core」で管理しているThingの属性やらシャドーやらにクエリをかけるためにインデックスを作成するとても便利な機能ですね。
イメージが掴めない方は3.フリートのインデックス作成と検索をチラ見してください。
AWSマネージドコンソール画面上からだと数クリックするだけで有効化できます。

「AWS IoT Core」の画面から「設定」をクリックして

以下のように既に有効化されている場合は何もしなくてOKです。

もし有効化されていない場合は「インデックス作成の管理」をクリックして、

必要なインデックスを指定して更新します。
今回は全て有効化します。

以下のようにインデックスが有効化されていればOKです。

3-2.AWS Single Sign-On(SSO)

IoT Coreの画面から「開始方法」⇨「アプリケーションを作成」とクリックしていき

シングルサインオンをセットアップします、と言いたいところですがまだこのAWSアカウントではSSOを有効化していませんでした...

SSOを利用するためには「AWS Organizations」を利用する必要(更に言えばOrganizationsの管理アカウントでログインできる必要もある)がありますので、以下のように案内されます。
(これはAWSアカウントごとに1回実施すればOKな作業です。ユーザーやアプリケーションを追加する度に必要となるわけではありません)

以下のようなメールが来るので、クリックすることでEmailアドレスを検証します。  

これで「AWS Organizations」の「組織単位(Organization Unit:OU)」が新規作成されました。
(既に作成済みの場合はこのフローはスキップできます)

続いて、SSOにユーザーを作成していきます。

ユーザー情報は以下の通りとして、グループを指定します。

グループがまだ一個も作成できていないので作成します。

以下のグループ名でグループを作成しました。

さて、グループにユーザーを登録しましょう。

ユーザーの登録が完了しました!
ログインに必要な情報をユーザーに伝えるために、「詳細のコピー」をクリックしてから閉じます。

先ほどコピーした「ユーザーポータルのURL」にアクセスして、「ユーザー名」&「一時的なパスワード」でログインできるかを確認します。

初回ログインに成功するとデフォルトで設定されていたパスワードを変更できます。

以上で、「SSOの有効化」&「ユーザーの登録&初期パスワード変更」まで完了しました。
以上で、「Fleet Hub」を利用する前提条件を満たせました。

ユーザー作成時の異なるフロー

余談ですが、ユーザー作成時に「パスワードの設定手順が記載されたEメールをユーザーに送信します」を選択した場合は、Emailが自動的に送信され、Emailに記載されているリンクをクリックするとパスワード登録画面に遷移します(初期パスワードがない)。ユーザーを招待する際はお好みの運用フローを選択してください。

3-3.Fleet Hub

さて、やっと「Fleet Hub」を試せます。
「アプリケーションを作成」をクリックして

「AWS SSO」が有効化されていることを確認しつつ「次へ」をクリック

「Fleet Index」も既に有効化済みですね。
「次へ」をクリックします。

続いてアプリケーションを作成します。
ここでは「Fleet Hub」が利用するサービスロールを指定する必要があります。

これだけでアプリケーションの作成は完了です、とても簡単です。
続いて、先ほど作成したSSOのユーザーがこのアプリケーションを参照できるようにしましょう。

注釈:どんな権限が付与されるの?

余談ですが、ここでマネジメントコンソール画面上からおまかせで作成したサービスロールに付与されるポリシーは以下の通りでした。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeIndex",
                "iot:DescribeThingGroup",
                "iot:GetBucketsAggregation",
                "iot:GetCardinality",
                "iot:GetIndexingConfiguration",
                "iot:GetPercentiles",
                "iot:GetStatistics",
                "iot:SearchIndex",
                "iot:CreateFleetMetric",
                "iot:ListFleetMetrics",
                "iot:DeleteFleetMetric",
                "iot:DescribeFleetMetric",
                "iot:UpdateFleetMetric",
                "iot:ListThingGroups",
                "iot:ListThingsInThingGroup",
                "iot:ListJobTemplates",
                "iot:DescribeJobTemplate",
                "iot:ListJobs",
                "iot:CreateJob",
                "iot:CancelJob",
                "iot:DescribeJob",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:DescribeJobExecution",
                "iotfleethub:DescribeApplication",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:GetMetricData",
                "cloudwatch:ListMetrics",
                "sns:ListTopics"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreateTopic",
                "sns:DeleteTopic",
                "sns:ListSubscriptionsByTopic",
                "sns:Subscribe",
                "sns:Unsubscribe"
            ],
            "Resource": "arn:aws:sns:*:*:iotfleethub*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DeleteAlarms",
                "cloudwatch:DescribeAlarmHistory"
            ],
            "Resource": "arn:aws:cloudwatch:*:*:iotfleethub*"
        }
    ]
}

今作ったアプリケーションをクリックして、

アプリケーションにユーザを追加します。

先ほど作成したSSOのユーザーがいるはずなので、そのユーザーを指定して

無事、アプリケーションにユーザーを追加できました。

続いてログインしてみましょう。
先ほどの画面の「アプリケーションURL」をクリックしてログインすると以下のようなデバイスの一覧画面にアクセスできます。

以下ではサマリーを確認できます。 現在3台のThingを登録しており、そのうちの2つがMQTT接続できている状態、というのが簡単にわかって便利です。

他にもIoTJobsの管理ができたり、

アラートの管理ができます。

この画面から実際に「IoT Jobs」を使ってデバイスをアップデートしたり、アラートを登録してSNS経由で通知させたりしたいところですが、長くなってきたので本エントリーはここまでとします。

4.まとめ

「Fleet Hub」がGAしていたので早速触ってみました。
デバイスの運用を考えた際に、このような管理用ページをフルマネージドサービスで提供してくれるのはとてもありがたいですね。
「Fleet Hub」の利用においてはSSOによるユーザー情報管理が前提であり、SSO利用のためには「AWS Organizations」の管理アカウントにサインインできる必要があるため、それらも含めて確認しながら利用を検討ください。