AWS認定資格 WEB問題集&徹底解説

ソリューションアーキテクト-プロフェッショナル

AWS IoT Core の概要と試験出題ポイントは?

AWSサービスの一つであるAWS IoT Coreはどんな内容なのでしょうか?また、AWS認定資格のソリューションアーキテクト-プロフェッショナル(SAP)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS IoT Core 徹底解説

1. サービス概要

AWS IoT Coreは、数百万台のIoTデバイスを安全かつ大規模に接続し、デバイス間・クラウド間でのメッセージ交換、状態管理、ルールベースのデータ処理を可能にするフルマネージドサービスです。 これにより、開発者はインフラ構築やスケール管理に煩わされることなく、IoTアプリケーションの開発に専念できます。

主なユースケースとして、遠隔監視(スマートホーム機器、産業機器、車両)、データ収集・分析(センサーデータのストリーミング、リアルタイムアラート)、状態同期(オフライン・オンラインを問わずのデバイス状態管理)などが挙げられます。

2. 主な特徴と機能

2.1 メッセージブローカー

AWS IoT Coreは、デバイスやクライアント間の通信にMQTT、MQTT over WebSocket、HTTP(S)という3種のプロトコルをサポートします。

  • MQTT: 軽量なPub/Subプロトコルで、低帯域幅環境や組み込みデバイスに最適。双方向通信が可能
  • MQTT over WebSocket: ファイアウォールやプロキシ下でも通信しやすく、ブラウザなどWebクライアントとの接続に便利
  • HTTP(S): 単純なリクエスト/レスポンス形式でのデバイス通信に対応。双方向性は低いがシンプルな実装が可能

2.2 デバイスシャドウ(Device Shadow)

デバイスシャドウは、クラウド側にデバイス状態(reported:実際の状態、desired:望まれる状態)をJSON形式で保持し、オンライン・オフラインを問わず状態同期を簡易化します。 デバイスがオフライン中にdesired stateが更新された場合、再接続時にその差分を適用でき、整合性を自動的に保つことが可能です。

2.3 ルールエンジン(Rule Engine)

ルールエンジンはMQTTトピック上を流れるメッセージに対してSQLベースの条件を適用し、マッチしたメッセージを他のAWSサービス(AWS LambdaAmazon KinesisAmazon S3Amazon SNSなど)へルーティングします。 これにより、ストリーミング分析やデータ格納、通知トリガーなどを柔軟に実現できます。

2.4 セキュリティとアクセス制御

X.509証明書によるデバイス認証と、AWS IoTポリシーによる細粒度なアクセスコントロールが可能です。AWS IoTポリシーは特定のMQTTトピックに対する「pub」や「sub」アクションを明示的に許可あるいは拒否できます。また、TLS暗号化による安全な通信チャネルを提供します。

2.5 統合性と拡張性

IoT CoreはAWSの他サービス(Lambda、S3、DynamoDB、Kinesisなど)と密接に統合されており、スケーラブルで拡張可能なアーキテクチャ構築が容易です。また、AWS IoT Analytics、AWS IoT Device Management、AWS IoT Eventsなどの関連サービスと併用することで、データ処理や管理機能を強化できます。

3. アーキテクチャおよび技術要素

  1. デバイスはMQTT/HTTP/WS経由でAWS IoTエンドポイントへ接続。
  2. メッセージはメッセージブローカーに渡され、特定のMQTTトピック上を流通。
  3. ルールエンジンがSQLルールに従い、メッセージを抽出し他のAWSサービスへルーティング。
  4. デバイスシャドウを介して、desired/report状態を保持・同期。

アーキテクチャ全体は完全マネージドで、可用性とスケーラビリティが内包されています。また、メッセージブローカーはパーティション化され、高スループットを保証します。

4. セキュリティと認証・認可

セキュリティはIoT Coreの中核コンポーネントです:

  • X.509証明書認証: 各デバイスに証明書を割り当て、TLSにより通信を暗号化します。
  • AWS IoTポリシー: デバイスごと、または証明書ごとに、特定トピックへのPub/Sub、Connect、Receiveといった操作を制御。
  • IAMとの連携: AWSリソースへアクセスする場合は、ルールエンジンがIAMロールを使用して安全にサービスコールを実行。

これらにより、デバイスレベルでの厳密なアクセスコントロールと、通信経路での暗号化が確保されます。

5. 料金形態

AWS IoT Coreの料金は主に以下に基づきます:

  • メッセージ数: 転送メッセージ数に応じて従量課金。
  • メッセージサイズ: メッセージあたりのサイズが一定量を超える場合、追加コストが発生。
  • ルールエンジン先でのコスト: ルーティング先サービス(Lambda、Kinesis、S3など)で発生する別途の利用料金。

6. よくあるアーキテクチャ・設計パターン

一般的なパターンは以下の通りです:

  • リアルタイム分析: デバイスからのテレメトリデータをKinesisへ送信し、Kinesis Data Analyticsでリアルタイム処理
  • 長期保存・分析: S3へデータ保存し、AthenaやQuickSightで後解析
  • アラート・通知: ルールエンジンで条件にマッチしたデータをSNSへ送信して通知
  • 状態同期: Device Shadowを活用して遠隔操作・設定変更、オフラインデバイス再接続時の同期

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS IoTコンソールで「Manage」→「Things」より新規デバイス(Thing)を作成
  2. 証明書を発行し、デバイスにインストール(サーバ側でX.509証明書を有効化)
  3. MQTTクライアント(CLIやSDK)を用いてメッセージを特定のトピックにPublish
  4. ルールエンジンでSQLルールを作成し、そのトピックへのメッセージをLambdaへルーティング
  5. Lambda関数でメッセージを処理し、ログやS3への保存など二次処理を実行

8. 試験で問われやすいポイント

8.1 デバイスシャドウ(Device Shadow)

  • 概念: デバイスのdesired(望まれる状態)とreported(実際の状態)をクラウド側でJSON形式で保持し、オフラインデバイスを含めた状態管理を容易にする。
  • 用途: リモートコントロール、同期保持、デバイス再接続時の自動同期。
  • 操作: $aws/things/{thingName}/shadow/updateなどの特定トピックでシャドウを更新・取得。

8.2 セキュリティ(X.509証明書とIoTポリシー)

  • X.509証明書: デバイスごとに発行、TLSによる暗号化通信を実現。
  • IoTポリシー: 「iot:Connect」「iot:Publish」「iot:Subscribe」「iot:Receive」などのアクションを特定トピック単位で制御。
  • IAMロール: ルールエンジンがS3やLambdaなど他サービスへアクセスする際に利用。

8.3 プロトコルサポート (MQTT, MQTT over WebSockets, HTTP)

  • MQTT: 軽量なPub/Sub、QoSサポート(QoS0, QoS1)、双方向通信可能。
  • MQTT over WebSockets: ブラウザやファイアウォール環境で容易な接続、Webクライアント対応。
  • HTTP: Request/Responseモデルでシンプルな通信、デバイスからクラウドへメッセージ送信が主。

試験問題では「AWS IoT Coreがサポートするプロトコルは何か?」、「MQTT QoSは?」、「Webブラウザから直接接続するには?」などが問われる。

8.4 ルールエンジンのルール設定

  • SQL文: SELECT文を使用し、SELECT * FROM 'topic/#'のようにトピックパターンでフィルタ。
  • 関数・変換: CASTやJSON_EXTRACT_PATH_TEXTなどの関数でメッセージを解析可能。
  • 出力先: Lambda、S3、Kinesis、DynamoDB、SNS、SQSなど多岐に渡る。

8.5 デバイス管理と拡張機能

  • AWS IoT Device Management: 数千台、数百万台のデバイスを一元管理できる。
  • AWS IoT Analytics: ストリーミングデータの加工・分析特化サービス。
  • AWS IoT Greengrass: エッジデバイス側でLambda実行やローカルメッセージングが可能(オフラインでの機能強化)。

試験では「GreengrassとIoT Coreの違いは?」、「IoT Analyticsは何に使う?」などが問われやすい。

8.6 スケーラビリティ・可用性

  • スケーラビリティ: フルマネージドで自動スケールし、数百万台のデバイス接続とメッセージ処理が可能。
  • 可用性: マルチAZによる高可用性、AWSのバックエンドで冗長化。

8.7 コスト最適化

  • メッセージ数削減: 必要なメッセージのみ送信、冗長なペイロード削減。
  • 適切なQoSレベル: QoS1は再送によるコスト増を招く可能性があるため注意。
  • ルール効率化: 不要な出力先へのルーティングを減らす。

8.8 類似・関連サービスとの比較

  • AWS IoT Greengrass: エッジ側でLambda実行やローカルメッセージブローカー機能を提供。 → IoT Coreはクラウド側でのメッセージブローカー、Greengrassはエッジ側がメイン。
  • Amazon Kinesis: ストリーミングデータ処理に特化。IoT CoreはKinesisへのルーティングが可能だが、IoT向け認証・状態管理はIoT Core特有。
  • AWS IoT Device Management: デバイスの一元管理ツール。IoT Coreは接続基盤、Device Managementは大規模なフリート管理。

8.9 試験で頻出となる具体的な問われ方と答え

  • Q: AWS IoT Coreがサポートするプロトコルは?
    A: MQTT、MQTT over WebSockets、HTTP。
  • Q: デバイス状態をクラウドに保持し、オフライン時も同期可能な機能は?
    A: デバイスシャドウ。
  • Q: X.509証明書とIoTポリシーの役割は?
    A: X.509証明書でデバイス認証、IoTポリシーでトピックごとのPub/Sub権限管理。
  • Q: ルールエンジンでメッセージを他サービスに送るとき、権限管理はどうする? A: IAMロールで実行権限付与。
  • Q: IoT CoreとGreengrassの違いは?
    A: IoT Coreはクラウド側、Greengrassはエッジ側での処理強化。