AWS JobsでIoTデバイスをアップグレード/設定:実践ガイド
Amazon Web Services(AWS)は、Microsoft AzureとGoogle Cloud IoTに並ぶ、IoT向け主要クラウド プラットフォームの1つです。スマート デバイスはインターネット経由でAWSに接続し、通常MQTTプロトコルを使用し、豊富なクラウド サービスとやり取りします。デバイス通信以外にも、AWSは堅牢なデータ ストレージ、分析(AI含む)、アクセス制御など、エンドツーエンドのIoTソリューションを強化する多くの機能を提供します。
データ永続化には、スケーラブルな階層型ファイル システムであるSimple Storage Service(S3)を提供。S3の各オブジェクトは一意のURLでアドレス指定でき、適切な権限があればWebブラウザから公開アクセス可能です。オブジェクトにHTMLページが含まれる場合、埋め込みJavaScriptがAWS APIを呼び出せ、インタラクティブなダッシュボードとブラウザからの直接デバイス制御を実現します。
Lambda関数
Lambdaを使えばサーバをプロビジョニングせずにコードを実行できます。Python、Java、C#、Node.jsで関数を記述し、クラウドに格納し、HTTPリクエスト、他のLambda呼び出し、デバイスからのMQTTメッセージでトリガーできます。Lambdaはミドルウェアとして機能し、デバイス データをデータベース操作に変換したり、ユーザー インターフェースへのレスポンスをレンダリングしたりします(図1参照)。
クリックで拡大
図1. AWSコンポーネント相互作用のアーキテクチャ(出典:Auriga)
AWSはLambdaに制限を課します:リクエストあたりの最大実行時間、メモリ使用量、パッケージ サイズ。いずれかの制限を超えると実行が終了し、制限はデプロイ時に設定可能ですが、AWSが設定するハードキャップを超えることはできません。
IoTデバイスは通常、AWS IoT CoreエンドポイントへTCP接続を確立します。TCPはデータ整合性とバッファリングを保証し、断続的なリンクでもメッセージが送信されることを確保。AWSは独自の再接続ロジックでTCPを拡張し、ネットワーク障害後にデバイスが自動的に再接続します。
MQTTはコマンドに関して単方向であるため、接続のヒックアップがLambda呼び出しに影響することは稀です。LambdaはデバイスにMQTTコマンドを発行して即座にリターンでき、レスポンスはデバイスのトピックを購読する別のLambdaが処理します。
AWS Jobs
AWS Jobsは、1台または多数のIoTデバイスで長時間実行タスクをスケジュール、起動、監視するためのサービスです。多くのAWSサービスより新しいですが、コンソールとSDKとシームレスに統合されています。
デバイス側操作はMQTT経由で公開されます。GetPendingJobExecutions、StartNextPendingJobExecution、UpdateJobExecution、DescribeJobExecutionなどの関数で、デバイスは保留中のジョブをポーリングし、進捗を確認し、完了を報告できます。
管理操作はHTTPSを使用し、Webクライアント、Lambdaコード、インタラクティブな利用を想定。CreateJob、DeleteJob、DescribeJob、ListJobs、ListJobExecutionsForThingなどが含まれます。
各ジョブはJSONのジョブ ドキュメントで定義され、ターゲット デバイスに送信されます。ドキュメントには通常、操作名とジョブ パラメータを指す1つ以上のURLが含まれます。これらのURLはAWSユーザーによって事前署名され、デバイスに通常アクセスできないオブジェクトへの一時的なスコープ付きアクセスを付与します。事前署名URLは自動的に期限切れになり、セキュリティを高めます。
ジョブ ドキュメントはジョブ定義時に動的に作成するか、S3オブジェクトとして格納し、ジョブ作成時に参照できます。
ジョブ属性
- ターゲット:単一デバイスまたはグループ。グループ指定時は現在の全メンバーで実行。
- ジョブ タイプ:スナップショットジョブは選択デバイスでの実行完了で終了。継続ジョブはアクティブなまま、後からグループに追加されたデバイスでも自動実行。
実行中、ジョブは有限状態マシンに従います。有効な状態にはQUEUED、IN_PROGRESS、FAILED、SUCCESS、CANCELED、REJECTED、REMOVEDがあります。デバイスはUpdateJobExecutionで状態を更新、管理者はCancelJobなどのAPI呼び出しで変更可能。通常、ジョブは実行中にIN_PROGRESSになり、完了時にSUCCESSまたはFAILEDへ遷移します。
クリックで拡大
図2. AWS Jobs実行中の状態遷移図(出典:Auriga)
モノのインターネットテクノロジー
- プロセッサがIoTとAIのシームレスな統合を強化
- IoTのグローバルインパクト:経済成長、保全、医療、教育を推進
- 未設定IoTデバイス:スマートホームを蝕む隠れた脅威
- IoT導入を守る:企業向け実証済みサイバーセキュリティとプライバシー戦略
- エンタープライズIoT採用急増——なぜセキュリティリスクが増大するのか
- ホームIoTネットワークを守る7つの必須ステップ
- 6兆ドルの未来を守る──IoT標準と規制が重要な理由
- IoTのサイバーリスク緩和:戦略と保険ソリューション
- ポストCOVID世界でIoTが産業効率と経済レジリエンスをどう促進するか
- メンフィスがスマートシティへ:IoTのセキュリティ、可視性、制御でレジリエントな都市を実現
- IoTとサイバーセキュリティ:ビジネスを守る実践ガイド