Amazon Web Services ブログ

AWS IoT Device Management Jobs を活用した遠隔運用のスケジュール設定

この記事は Schedule remote operations using AWS IoT Device Management Jobs の日本語訳です。

はじめに

IoT デバイスが現場に導入されると、技術的および物流上の制約により現地での操作は困難で費用がかかり、実現不可能になる可能性があります。IoT デバイスソフトウェアに対しリモートアップデートを実行できることは、IoT アプリケーションの寿命と運用耐性を向上させ、最新の機能をプロビジョニングし、バグ修正に対応し、セキュリティリスクを軽減する重要な要素です。AWS IoT Device Management は、大規模な IoT デバイスの登録、整理、監視、リモート管理を支援する完全マネージド型サービスです。開発者は AWS IoT Device Management Jobs を使用して、AWS IoT Core に接続されたデバイスに対してリモートアクション (ファームウェアの更新、デバイスの再起動、工場出荷時設定へのリセットなど) を実行しています。

「ジョブ」とは、クラウドで定義され、1つ以上のデバイスに送信および実行される一連の操作です。一方、ジョブの実行は、対象となるデバイスでのそのようなリモートアクションのインスタンスです。たとえば、開発者は 1000 台のデバイスで「無線」(OTA) 更新を実行するジョブを 1 つ定義し、そのジョブを 1000 回実行して個々のデバイスを更新できます。多くの場合、開発者は、開始時間と終了時間を設定できるパラメーターなど、ジョブがアクティブで実行されている時間枠を制御するメカニズムと、終了時刻に達したときにジョブの実行をキャンセルして、開始されていない残りのジョブ実行の展開を停止する機能を必要としています。これが必要なユースケースの例は次のとおりです。

  • IoT デバイスは、産業機器の制御など、工場内でデリケートな操作を行っているため、スケジュールどおりに更新する必要があります。
  • IoT デバイスは、家庭でのインターネット接続などの消費者向けサービスを提供するため、アップグレードはアイドル状態のときにのみ行う必要があります。
  • IoT デバイスは厳格な可用性サービスレベル契約 (SLA) のもとで動作します。この契約では、運用の中断を減らすため、リモート操作は決められた時間帯にのみ実行する必要があります。

このブログ記事では、AWS IoT Device Management Jobs のスケジューリング機能を使用してジョブの展開のスケジューリングを検討している開発者向けのガイダンスを提供します。

メタデータ

Learning level: 300
利用サービス: AWS IoT Device Management, AWS IoT Core, AWS IoT Device Client

前提条件

このブログの手順を実行するには、以下の準備が必要です。

  • IoT Thing をプロビジョニングし、AWS IoT Device Management の機能を使用するための AWS アカウントと権限。
  • このブログのステップを実行するには、シミュレートされた IoT デバイス上で実行されるオープンソースソフトウェアである AWS IoT Device Client とそのジョブ機能にアクセスする必要があります。本番環境では、既存のデバイス上の設定を引き続き使用できます。
  • オペレーティングシステムのコマンドラインインターフェイスを操作するためのアプリケーション (例:Mac OS の場合はターミナル、Windows の場合は Powershell)。
  • AWS Command Line Interface (CLI) のインストール。AWS CLI をインストールして設定する方法については、AWS CLI ドキュメントを参照してください。
  • CLI を使用して AWS リソースを作成するための認証情報を持つ AWS Identity and Access Management (IAM) ユーザー。

AWS IoT Jobs のロールアウトスケジュール設定

ステップ1: IoT thing の作成と AWS IoT Device Client の設定

IoT Thing の作成と AWS IoT Device Client のセットアップを開始するには、入門ワークショップパート 123 に従ってください。IoT Thing に demoDevice という名前を付けてください。これらの手順を実行すると、ジョブ機能が有効化されて実行されている AWS IoT Device Client と、正しいポリシーが設定された IoT Thing が作成されているはずです。

ステップ2 : AWS マネージドテンプレートからAWS IoT Job の作成

AWS マネージドテンプレートのAWS-Rebootを使用して、指定された開始時間にデバイスを再起動するジョブを作成します。

ジョブのスケジュール設定では、ジョブが選択した終了時刻に達した後のすべてのジョブ実行の開始時間、終了時間、および終了動作を指定できます。終了動作として、終了時刻に達したときに、再試行やキューに入れられたジョブなど、残りのジョブ実行に何が起こるかを指定できます。開始時間、終了時間、終了動作の要件については、こちらをご覧ください。

開始時刻と終了時刻は、協定世界時 (UTC) 文字列として CLI コマンドに渡す必要があることに注意してください。さらに、開始時刻が現在の時刻から少なくとも 30 分後にスケジュールされていることを確認する必要があります。

ジョブを作成するには、AWS CLI を使用して以下のコマンドを実行します。

1. 必要な環境変数を作成します。

export ACCOUNT_ID=<Replace with your account ID>
export THING_NAME=<Replace with your thing name>
export REGION=<Replace with your region>
export JOB_ID=<Replace with your job ID>
export START_TIME=<Replace with your desired start time>

2. IoT Job を作成する以下のコマンドを実行します。

aws iot create-job \
 --targets arn:aws:iot:${REGION}:${ACCOUNT_ID}:thing/${THING_NAME} \
 --job-id ${JOB_ID} \
 --job-template-arn arn:aws:iot:${REGION}::jobtemplate/AWS-Reboot:1.0 \
 --document-parameters pathToHandler=/etc/.aws-iot-device-client/jobs \
 --scheduling-config startTime=${START_TIME}

3. AWS CLI の実行結果が以下のようになるか確認します。

{ "jobArn": "arn:aws:iot:${REGION}:${ACCOUNT_ID}:job/reboot-scheduled-job", "jobId": "${JOB_ID}", "description": "A managed job template for rebooting the device." }

Step 3: Verify scheduled job creation in AWS IoT Console

スケジュールされたジョブ作成を確認するには、次の操作を行います。

1. AWS IoT Console の左側メニューから 管理 > リモートアクション > ジョブ を選択し、作成したジョブを確認します。

2. ジョブの「ステータス」が「スケジュール済み」になっていること、および予想開始時刻が正しいことを確認してください。AWS Management Console に表示されるタイムゾーンは、現在のシステムタイムゾーンです。

IoT Jobs Scheduled Job

3. 開始時刻になるとジョブが IN PROGRESS に変わります。

Step 4: Check the AWS IoT Device Client logs for job execution feedback

開始時刻になると、次のステップは、ジョブが正常に実行されると、AWS IoT Device Client のログが出力されていきます。ログの標準的な場所は /var/log/aws-iot-device-client/aws-iot-device-client.log にあります。ログの場所の設定を変更した場合は、その場所を使用してください。

ジョブを正常に実行されると、ログが以下のようになるはずです。

Step 5: Cleaning Up

不要なコストを避けるため、作成したリソースを削除してください。

1.ワークショップクリーンアップ手順に従って、ステップ 1 で作成したリソースのみを削除します。

2.作成した IoT Job を削除する必要があります。次の AWS CLI コマンドを使用してジョブを削除できます。

aws iot delete-job -job-id ${JOB_ID}

まとめ

IoT デバイスを現場に導入した後は、AWS IoT Device Management Jobs 機能を使用してデバイスの動作をリモートで管理し、重要な更新をスケジュールできます。このような操作の実行は、通常の使用による中断を減らすため、または顧客契約で定められているダウンタイム SLA に準拠するために、事前に定義された時間枠に制限することができます。このブログ記事では、ジョブスケジューリング設定と AWS IoT Device Client を使用して、デバイス上の動作を変更することなく、クラウドから AWS IoT Jobs の実行をスケジュールする方法を学びました 。

著者

Alina Dima は、アマゾンウェブサービスの AWS IoT グローバルアドボカシーチームのシニアデベロッパーアドボケイトです。彼女は、開発者が IoT エコシステムへの移行を加速できるよう支援し、IoT コミュニティと協力して、プロトタイプからスケールまで、より良い構築と迅速な移行を実現することに情熱を注いでいます。 Alina は、電気通信、製造、自動車、小売、太陽光発電など、さまざまな業界で働いてきました。ソフトウェアエンジニア、テクニカルデリバリーマネージャー、アーキテクトとして20年近くの経験を積んだ彼女は、拡張性が高く運用準備が整った複数のIoT ソリューションを設計および構築し、現在では数百万台のデバイスが稼働しています。
Chelsea Pan はアマゾンウェブサービスのシニアプロダクトマネージャーで、シアトルに拠点を置いています。製品戦略、ロードマップ計画、ビジネス分析と洞察、顧客エンゲージメント、その他の製品管理分野で AWS IoT Device Mangement サービスを監督しています。Chelsea はキャリアの中で、急成長中のいくつかのセキュリティ製品の発売を主導しました。

この記事はソリューションアーキテクトの服部が翻訳しました。