237
AWS IoT Analytics AWS IoT Analytics ユーザーガイド AWS IoT Analytics: AWS IoT Analytics ユーザーガイド Copyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT AnalyticsAWS IoT Analytics ユーザーガイド

AWS IoT Analytics: AWS IoT Analytics ユーザーガイドCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Page 2: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

Table of ContentsAWS IoT Analytics とは? .................................................................................................................... 1

AWS IoT Analytics の使い方 ........................................................................................................ 1主な特徴 ............................................................................................................................ 1AWS IoT Analytics コンポーネントおよび概念 ........................................................................ 3AWS IoT Analytics にアクセスする方法 ................................................................................. 4

AWS IoT Analytics を使用する理由 ............................................................................................... 5利点 .................................................................................................................................. 5ユースケース ..................................................................................................................... 5

AWS IoT Analytics コンソールクイックスタートガイド ........................................................................... 7AWS IoT Analytics コンソールへのサインイン ................................................................................ 7チャネルの作成 .......................................................................................................................... 8データストアの作成 .................................................................................................................. 10パイプラインを作成する ............................................................................................................ 12データセットの作成 .................................................................................................................. 15AWS IoT メッセージの送信 ........................................................................................................ 19IoT メッセージの進行状況を確認する ........................................................................................... 21クエリの結果へのアクセス ......................................................................................................... 22データの探索 ............................................................................................................................ 25

Amazon S3 ...................................................................................................................... 25AWS IoT イベント ............................................................................................................ 25Jupyter ノートブック ........................................................................................................ 25

ノートブックテンプレート ......................................................................................................... 29AWS IoT Analytics を使用する方法 .................................................................................................... 30

AWS IoT Analytics コンポーネントおよび概念 .............................................................................. 30チャネル .................................................................................................................................. 30データストア ............................................................................................................................ 31パイプライン ............................................................................................................................ 32AWS IoT Analytics へのデータの取得 ........................................................................................... 33

IAM ロールでアクセス許可を付与する .................................................................................. 33AWS IoT Analytics にメッセージを送信するための AWS IoT ルールの作成 ................................ 34AWS IoT コンソールを使用してメッセージデータを AWS IoT Analytics に送信する .................... 35「BatchPutMessage」を使用してメッセージをチャネルに送信する .......................................... 36

IoT メッセージの進行状況の確認 ................................................................................................. 37データセット - データのクエリ ................................................................................................... 38データセットコンテンツ - クエリ結果へのアクセス ....................................................................... 39データの探索 ............................................................................................................................ 40

Amazon S3 ...................................................................................................................... 25AWS IoT イベント ............................................................................................................ 25Amazon QuickSight ........................................................................................................... 40Jupyter ノートブック ........................................................................................................ 25

AWS IoT Analytics データセットの複数のバージョンの保持 ............................................................ 40AWS IoT Analytics メッセージペイロード制限 .............................................................................. 41AWS IoT Analytics サービスの制限 .............................................................................................. 42

パイプラインアクティビティ ............................................................................................................. 43チャネルアクティビティ ............................................................................................................ 43データストアアクティビティ ...................................................................................................... 43Lambda アクティビティ ............................................................................................................ 43

Lambda 関数の例 1 ........................................................................................................... 44Lambda 関数の例 2 ........................................................................................................... 45

AddAttributes アクティビティ ..................................................................................................... 46RemoveAttributes アクティビティ ............................................................................................... 47SelectAttributes アクティビティ .................................................................................................. 47フィルタアクティビティ ............................................................................................................ 48DeviceRegistryEnrich アクティビティ .......................................................................................... 48

iii

Page 4: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

DeviceShadowEnrich アクティビティ .......................................................................................... 50Math アクティビティ ................................................................................................................. 51Math アクティビティ演算子と関数 .............................................................................................. 52

abs(10 進数) .................................................................................................................... 52acos(10 進数) ................................................................................................................... 53asin(10 進数) .................................................................................................................... 53atan(10 進数) ................................................................................................................... 54atan2(10 進数、10 進数) .................................................................................................... 54ceil(10 進数) ..................................................................................................................... 55cos(10 進数) ..................................................................................................................... 55cosh(10 進数) ................................................................................................................... 56exp(10 進数) .................................................................................................................... 56ln(10 進数) ....................................................................................................................... 57log(10 進数) ..................................................................................................................... 57mod(10 進数、10 進数) ...................................................................................................... 57power(10 進数、10 進数) ................................................................................................... 58round(10 進数) ................................................................................................................. 58sign(10 進数) .................................................................................................................... 59sin(10 進数) ..................................................................................................................... 59sinh(10 進数) .................................................................................................................... 60sqrt(10 進数) .................................................................................................................... 60tan(10 進数) ..................................................................................................................... 61tanh(10 進数) ................................................................................................................... 61trunc(10 進数、Int) ............................................................................................................ 62

RunPipelineActivity の例 ............................................................................................................. 62チャネルデータの再処理 ................................................................................................................... 64ワークフローを自動化する ................................................................................................................ 65

ユースケース ............................................................................................................................ 65使用方法 .................................................................................................................................. 66

カスタム Docker コンテナの入力/出力変数 ........................................................................... 68アクセス許可 ............................................................................................................................ 69The CreateDataset API .............................................................................................................. 71CreateDataset の使用例 ............................................................................................................. 79

例 1 -- SQL データセットを作成する (java) .......................................................................... 79例 2 -- デルタ枠を使用して SQL データセットを作成する (java) .............................................. 80例 3 -- 独自のスケジュールトリガーを使用してコンテナデータセットを作成する (java) ............... 80例 4 -- SQL データセットをトリガーとして使用してコンテナデータセットを作成する (java) ........ 81例 5 -- SQL データセットを作成する (CLI) ........................................................................... 82例 6 -- デルタ枠を使用して SQL データセットを作成する (CLI) ............................................... 82

ノートブックをコンテナ化する ................................................................................................... 83ノートブックインスタンスのコンテナ化の有効化は AWS Iot Analytics コンソールを介しては作成できません。 ................................................................................................................. 84ノートブックのコンテナ化拡張機能を更新する ...................................................................... 86コンテナ化イメージを作成する ........................................................................................... 86

独自の分析用カスタムコンテナを使用する .................................................................................... 90AWS IoT Analytics での SQL 式 ........................................................................................................ 96QuickSight を使用した AWS IoT Analytics データの表示 ........................................................................ 98コンソールで AWS IoT Analytics データを可視化する ......................................................................... 100AWS IoT Analytics トラブルシューティングガイド ............................................................................. 102CloudTrail を使用した AWS IoT Analytics API コールのログ記録 ........................................................... 106

CloudTrail での AWS IoT Analytics 情報 ..................................................................................... 106AWS IoT Analytics ログファイルエントリの概要 .......................................................................... 107

CloudWatch Logs の設定のセットアップ ........................................................................................... 110ログ記録ロールを作成する ........................................................................................................ 110ログ記録を設定して有効にする ................................................................................................. 111

PutLoggingOptions .......................................................................................................... 111DescribeLoggingOptions ................................................................................................... 113

iv

Page 5: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

名前空間、メトリクス、ディメンション ..................................................................................... 114AWS IoT Analytics のセキュリティ ................................................................................................... 116

Identity and Access Management for AWS IoT Analytics ............................................................... 116Audience ........................................................................................................................ 116Authenticating with Identities ............................................................................................. 117Managing Access Using Policies ....................................................................................... 118How AWS IoT Analytics Works with IAM ............................................................................ 120AWS IoT Analytics Identity-Based Policy Examples .............................................................. 122Troubleshooting AWS IoT Analytics Identity and Access ........................................................ 126

AWS IoT Analytics リソースのタグ付け ............................................................................................. 128タグの基本 ............................................................................................................................. 128IAM ポリシーでのタグの使用 .................................................................................................... 129タグの制限 ............................................................................................................................. 130

AWS IoT 分析コマンド ................................................................................................................... 131BatchPutMessage .................................................................................................................... 131CancelPipelineReprocessing ..................................................................................................... 133CreateChannel ........................................................................................................................ 134CreateDataset ......................................................................................................................... 137CreateDatasetContent .............................................................................................................. 145CreateDatastore ...................................................................................................................... 146CreatePipeline ........................................................................................................................ 150DeleteChannel ........................................................................................................................ 157DeleteDataset ......................................................................................................................... 158DeleteDatasetContent .............................................................................................................. 159DeleteDatastore ...................................................................................................................... 160DeletePipeline ......................................................................................................................... 161DescribeChannel ..................................................................................................................... 162DescribeDataset ...................................................................................................................... 165DescribeDatastore ................................................................................................................... 173DescribeLoggingOptions ........................................................................................................... 176DescribePipeline ..................................................................................................................... 178GetDatasetContent .................................................................................................................. 185ListChannels ........................................................................................................................... 187ListDatasetContents ................................................................................................................. 189ListDatasets ............................................................................................................................ 192ListDatastores ......................................................................................................................... 195ListPipelines ........................................................................................................................... 197ListTagsForResource ............................................................................................................... 199PutLoggingOptions .................................................................................................................. 201RunPipelineActivity .................................................................................................................. 202SampleChannelData ................................................................................................................ 209StartPipelineReprocessing ........................................................................................................ 210TagResource .......................................................................................................................... 212UntagResource ....................................................................................................................... 213UpdateChannel ....................................................................................................................... 215UpdateDataset ........................................................................................................................ 217UpdateDatastore ..................................................................................................................... 224UpdatePipeline ........................................................................................................................ 226

v

Page 6: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics の使い方

AWS IoT Analytics とは?AWS IoT Analytics では、IoT デバイスのデータを分析する各ステップが自動化されます。分析用の時系列データストアに保存する前に IoT データのフィルタリング、変換を行い、強化します。デバイスから必要なデータのみを収集して、数学的変換を適用してデータを処理し、処理されたデータを保存する前にデバイスの種類や場所などのデバイス固有のメタデータでデータを強化するサービスを設定できます。続いて、組み込みの SQL クエリエンジンでクエリを実行してデータを分析するか、複雑な分析や MachineLearning の推論を行うことができます。AWS IoT Analytics では、Jupyter ノートブックとの統合により、高度なデータ探索が可能となります。また、Amazon QuickSight との統合により、データの可視化が可能となります。(Amazon QuickSight はこれらのリージョンで利用可能です。)

従来の分析およびビジネスインテリジェンスツールは、構造化されたデータを処理するように設計されています。IoT データの送信元のデバイスでは、通常、ノイズの多いプロセス (温度、モーション、サウンドなど) が記録されます。この結果、これらのデバイスのデータには、大きな誤差やメッセージの破損、誤認識が含まれる場合があるため、分析を行う前にクリーンアップする必要があります。また、IoT データは、外部ソースの他のデータのコンテキストでのみ意味が得られることが少なくありません。AWS IoTAnalytics では、このような問題に対処して、大量のデバイスデータの収集、メッセージの処理、データとメッセージの保存を行うことができます。次に、データに対してクエリを実行し、高度な分析を行うことができます。AWS IoT Analytics には一般的な IoT ユースケース用のモデルが組み込まれているため、どのデバイスが故障する可能性があるか、どのお客様がウェアラブルデバイスを廃棄する可能性があるかなどの質問に回答できます。

AWS IoT Analytics の使い方

主な特徴収集

• AWS IoT コアとの統合 – AWS IoT Analytics は、AWS IoT コアと完全に統合されているため、接続されたデバイスからストリーミングされたメッセージを受信できます。

• バッチ API を使用した任意のソースからのデータの追加 – AWS IoT Analytics は HTTP を介して任意のソースからのデータを受信できます。つまり、インターネットに接続された任意のデバイスやサービスから AWS IoT Analytics にデータを送信できます(BatchPutMessage (p. 131))

1

Page 7: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド主な特徴

• 保存および分析するデータのみを収集する – AWS IoT Analytics コンソールを使用して、さまざまな形式と頻度の MQTT トピックフィルタを使用してデバイスからメッセージを受信するように AWSIoT Analytics を設定できます。AWS IoT Analytics では、定義した特定のパラメータ内にデータがあることを確認し、チャネルを作成します。次に、これらのチャネルを適切なパイプラインにルーティングして、メッセージの処理、変換、強化を行います。

プロセス• 最適化とフィルタ – AWS IoT Analytics では、AWS Lambda 関数を定義して欠落データを検出し

たときにトリガーできるため、コードを実行して欠落を推定し、これを埋めることができます。また、最大/最小フィルタとパーセンタイルのしきい値を定義して、データ上の異常値を削除することもできます。

• 変換 – AWS IoT Analytics では、定義した数学的または条件付きロジックを使用してメッセージを変換できるため、摂氏のような一般的な計算を華氏に変換することができます。

• 強化 – AWS IoT Analytics では、天気予報などの外部データソースを使用してデータを強化し、そのデータを AWS IoT Analytics データストアにルーティングできます。

保存• 時系列データストア - AWS IoT Analytics では、最適化した高速な取り出しと分析用の時系列データ

ストアにデバイスデータを保存します。アクセス権限の管理、データ保持ポリシーの実装、外部アクセスポイントへのデータのエクスポートを行うこともできます。

• 処理済みデータと未加工データの保存 - AWS IoT Analytics では、処理されたデータを保存するだけでなく、取り込まれた未加工データも自動的に保存されるため、後でそのデータを処理することができます。

分析• アドホック SQL クエリの実行 – AWS IoT Analytics には、SQL クエリエンジンが用意されているた

め、アドホッククエリを実行して結果を迅速に取得できます。たとえば、クイッククエリを実行して、フリート内のデバイス別のアクティブユーザー数を確認できます。

• 時系列分析 - AWS IoT Analytics は時系列分析に対応しているため、時間の経過とともにデバイスのパフォーマンスを分析したり、使用方法や使用場所を把握するだけでなく、デバイスデータを継続的に監視してメンテナンスの問題を予測したり、センサーを監視して環境条件を予測して反応させることができます。

• 高度な分析と Machine Learning 向けにホストされたノートブック – AWS IoT Analytics では、統計的分析と Machine Learning 向けにホストされたノートブックが Jupyter ノートブックでサポートされます。このサービスにはノートブックテンプレートが用意されています。これらのテンプレートに含まれている AWS 作成の Machine Learning モデルと視覚化を使用して、デバイス故障プロファイリング、お客様が製品を廃棄する目安となる使用量の低下などの予測イベント、お客様の使用レベル (例: 使用頻度の高いユーザー、週末のみ使用するユーザー) やデバイスのヘルス状態に基づくデバイスのセグメント化に関する IoT ユースケースを開始できます。ノートブックを作成すると、指定したスケジュールに基づいてこのノートブックをコンテナ化できます (ワークフローの自動化 (p. 65))。

• 予測 - ロジスティック回帰と呼ばれる方法で、統計的な分類を行うことができます。また、長短期記憶 (LSTM) を使用することもできます。LSTM は、時間の経過とともに変化するプロセスの出力や状態を予測する強力なニューラルネットワーク技術です。あらかじめ作成されているノートブックテンプレートは、デバイスをセグメント化する k 平均法アルゴリズムをサポートしています。これにより、デバイスは、デバイスのグループにクラスタ化されます。これらのテンプレートは通常、チョコレート工場の HVAC ユニットや風力タービンの羽根の摩耗や破損といったデバイスの健全性や状態のプロファイリングに使用されます。ここでも、これらのノートブックテンプレートをコンテナ化しスケジュールに従って実行できます。

構築/視覚化• QuickSight 統合 - AWS IoT Analytics では、Amazon QuickSight へのコネクタを提供しているた

め、QuickSight ダッシュボードでデータセットを視覚化することができます。• コンソールの統合 - また、AWS IoT Analytics コンソール内に組み込まれている Jupyter ノートブッ

クで、結果やアドホック分析を視覚化することもできます。

2

Page 8: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics コンポーネントおよび概念

AWS IoT Analytics コンポーネントおよび概念チャネル - データの収集

チャネルは、MQTT トピックからデータを収集し、未処理の raw メッセージをアーカイブしてから、データをパイプラインに発行します。BatchPutMessage (p. 131) コマンドを使用して、チャンネルにメッセージを直接送信することもできます。未処理のメッセージは、IoT Analytics が管理するAmazon S3 バケット、またはユーザーが管理するバケットに保存されます。

パイプライン - データの処理

パイプラインではチャネルからのメッセージが消費されるため、メッセージをデータストアに保存する前に処理できます。このステップはアクティビティと呼ばれ (パイプラインアクティビティ (p. 43))、メッセージで変換を実行します。これには、メッセージ属性の削除/名前変更/追加、属性値に基づくメッセージのフィルタ処理、高度な処理のためのメッセージでの Lambda 関数の呼び出し、数値変換の実行によるデバイスデータの正規化などが含まれます。

データストア - データの保存

パイプラインは、処理されたメッセージをデータストアに保存します。データストアはデータベースではなく、メッセージのスケーラブルでクエリ可能なリポジトリです。異なるデバイスや場所から送信されたメッセージに対して複数のデータストアを使用したり、パイプラインの設定と要件によってメッセージ属性でフィルタしたりできます。未処理のチャネルメッセージと同様に、データストアの処理されたメッセージは、IoT Analytics によって管理されている Amazon S3 バケット、またはユーザーによって管理されているバケットに保存されます。

データセット - 分析用データの取得

データストアからデータを取得するには、データセットを作成します。AWS IoT Analytics により、SQL データセットまたはコンテナデータセットを作成できます。

データセットを作成したら、Amazon QuickSight と連携してデータを探索し、洞察を得ることができます。または、Jupyter ノートブックと連携してより高度な分析機能を実行できます。Jupyter ノートブックは、Machine Learning と様々な統計的分析を実行できる強力なデータサイエンスツールを備えています。詳細については、「ノートブックテンプレート (p. 29)」を参照してください。

データセットのコンテンツを Amazon Simple Storage Service(S3) バケットに送信して、既存のデータレイクとの統合、または社内アプリケーションと可視化ツールからのアクセスができます。デバイスやプロセスのオペレーション時の障害や変化をモニタリングし、このようなイベントが発生した時に追加のアクションをトリガーするサービスである AWS IoT Events への入力としてデータセットコンテンツを送信することもできます。

SQL データセット - SQL アクションを使用するデータの取得

SQL データセットは、SQL データベースの具体化されたビューに似ています。実際、SQL データセットを作成するには SQL アクションを適用します。SQL データセットは、トリガーを指定して、定期的なスケジュールで自動的に生成できます。

コンテナデータセット - 取得と分析ツールのデータの組み合わせ

コンテナデータセットでは、自動的に分析ツールを実行して結果を生成できます (ワークフローの自動化 (p. 65))。コンテナデータセットでは、入力としての SQL データ、分析ツールと必要なライブラリファイルが含まれた Docker コンテナ、入力と出力の変数、およびオプションのスケジュールトリガーが 1 つにまとめられます。入力と出力の変数では、データを取得して結果を保存する先を実行可能イメージに指示します。トリガーによる分析は、SQL データセットでコンテンツの作成が終了した時点で実行されるか、時間のスケジュール式に従って実行されます。コンテナデータセットは、分析ツールの実行、結果の生成と保存を自動的に行います。

トリガー - データ取得の自動化

トリガーを指定して、データセットを自動的に作成できます。トリガーは、時間間隔 (たとえば、このデータセットを 2 時間ごとに作成するなど)、あるいは別のデータセットのコンテンツの作成時 (たとえば、"myOtherDataset" がコンテンツの作成を終了したときにこのデータセットを作成する、など)

3

Page 9: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics にアクセスする方法

に指定できます。または、CreateDatasetContent を呼び出して、手動でデータセットのコンテンツを生成できます。

Docker コンテナ - 実行するのに必要なすべて

www.docker.com によると、「コンテナとは軽量、スタンドアローンで実行可能なソフトウェアのパッケージです。これには、実行に必要なすべてが含まれています (ランタイム、システムツール、システムライブラリ、設定)。」 独自の Docker コンテナを作成して分析ツールをパッケージ化することも、「Amazon SageMaker」で提供されるオプションを使用することもできます。指定する Amazon ECR レジストリにコンテナを保存できるため、使用するプラットフォームでインストールできます。「ノートブックのコンテナ化 (p. 83)」では、ノートブックをコンテナ化する方法について説明しています。Docker コンテナでは、Matlab、Octave、Wise.io、SPSS、R、Fortran、Python、Scala、Java、C++ などで使用できるように準備されたカスタムの分析コードを実行できます。

デルタ枠 - データ重複の排除

デルタ枠は、重複することなく連続する時間間隔であり、ユーザーが定義します。デルタ枠を使用すると、前回の分析以降にデータストアに到着した新しいデータを使用してデータセットコンテンツを作成し、これらのデータに対して分析を実行できます。デルタ枠を作成するには、データセットの queryAction の filters 部分に deltaTime を設定します(CreateDataset (p. 137))。通常は、間隔トリガーも設定して、データセットコンテンツを自動的に作成します (triggers:schedule:expression)。基本的には、この操作で特定の時間ウィンドウに到着したメッセージをフィルタリングし、以前の時間ウィンドウのメッセージに含まれたデータが重複してカウントされないようにします。「例 6 -- デルタ枠を使用して SQL データセットを作成する(CLI) (p. 82)」を参照してください。

AWS IoT Analytics にアクセスする方法AWS IoT の一部として、AWS IoT Analytics は、デバイスがデータを生成し、アプリケーションが生成されたデータとやり取りするために以下のインターフェイスを提供します。

AWS コマンドラインインターフェイス (AWS CLI)

Windows、OS X、Linux で AWS IoT Analytics のコマンドを実行します。これらのコマンドで、モノ、証明書、ルール、およびポリシーを作成し、管理することができます。使用を開始するには、AWS コマンドラインインターフェイスのユーザーガイドを参照してください。AWS IoT のコマンドの詳細については、AWS コマンドラインインターフェイスリファレンスの「iot」を参照してください。

Important

CLI を使用して AWS IoT Analytics を操作するには、aws iotanalytics コマンドを使用します。CLI を使用して IoT システムの他の部分を操作するには、aws iot コマンドを使用します。

AWS IoT のよくある質問

HTTP または HTTPS リクエストを使用して IoT アプリケーションを構築します。これらの API アクションで、モノ、証明書、ルール、およびポリシーを作成し、管理することができます。AWS IoT のAPI アクションの詳細については、AWS IoT API リファレンスの「アクション」を参照してください。

AWS SDK

言語固有の API を使用して AWS IoT Analytics アプリケーションを構築します。これらの SDK はHTTP/HTTPS API をラップし、サポートされているいずれの言語でもプログラミングできます。詳細については、「AWS の SDK およびツール」を参照してください。

AWS IoT デバイス SDKs

AWS IoT Analytics にメッセージを送信する、デバイスで実行されるアプリケーションを構築します。詳細については、「AWS IoT SDK」を参照してください。

4

Page 10: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics を使用する理由

AWS IoT Analytics コンソール

コンポーネントの構築から結果の視覚化まで、すべて AWS IoT Analytics コンソールで利用可能です。

AWS IoT Analytics を使用する理由利点IoT データに対してクエリを実行する

AWS IoT Analytics では、組み込まれている AWS IoT Analytics SQL クエリエンジンを使用して、シンプルなアドホッククエリを実行できます。また、このサービスでは、標準の SQL クエリを使用してデータストアからデータを抽出し、コネクテッド車両群の平均走行距離や、午後 7 時以降に閉鎖されるスマートビルディングの部屋数などの質問に回答することができます。これらのクエリは、接続されたデバイスやフリートのサイズ、分析要件が変更されても再利用することができます。

時系列分析を実行する

AWS IoT Analytics では時系列分析もサポートされているため、ユーザーは時間の経過によるデバイスのパフォーマンスを分析し、それらが使用されている方法と場所を把握できます。これにより、メンテナンスの問題を予測するためにデバイスデータを継続的にモニタリングし、環境条件を予測して対応するためにセンサーをモニタリングすることができます。

IoT 向けに最適化されたデータストレージ

AWS IoT Analytics では、処理されたデバイスデータが時系列データストアに保存されます。このデータストアは、通常必要とされる IoT クエリに対する高速応答を実現するよう最適化されています。また、未加工データは、後で処理するために自動的に保存されるか、別のユースケースのために再処理されます。

分析用の IoT データを準備する

AWS IoT Analytics には、分析用のデータを準備および処理するためのデータ準備技術が含まれています。AWS IoT Analytics は AWS IoT コアと統合されているため、接続されたデバイスから直接デバイスデータを簡単に取り込むことができます。また、誤認識を解消し、データのギャップを埋め、メッセージデータの数学的変換を実行することができます。データが取り込まれると、AWS IoT Analyticsは条件ステートメントを使用してデータを処理およびフィルタし、分析対象のデータのみを収集して、AWS IoT レジストリの情報で強化できます。また、AWS Lambda 関数を使用して、気象サービス、HERE Maps、Salesforce、または Amazon DynamoDB などの外部ソースからのデバイスデータを強化することもできます。

Machine Learning 用ツール

AWS IoT Analytics では、ホストされた Jupyter ノートブックを使用して、Machine Learning を IoTデータに適用できます。IoT データをノートブックに直接接続し、基礎となるインフラストラクチャを管理することなく、AWS IoT Analytics コンソールから直接モデルを構築、トレーニング、実行できます。AWS IoT Analytics を使用すれば、Machine Learning アルゴリズムをデバイスデータに適用して、フリート内の各デバイスのヘルススコアを生成できます。ノートブックを作成すると、指定したスケジュールに基づいてこのノートブックをコンテナ化できます (ワークフローの自動化 (p. 65))。

ユースケース予知保全

AWS IoT Analytics には、予測メンテナンスモデルを構築してデバイスに適用するためのテンプレートが用意されています。たとえば、AWS IoT Analytics では、コネクテッド貨物車で冷暖房装置が故障す

5

Page 11: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドユースケース

る可能性が高い時期を予測し、車両の経路を変更して、輸送中の損傷を防ぐことができます。自動車メーカーでは、お客様の摩耗したブレーキパッドを検知し、車両のメンテナンスを勧めるアラートを提供できます。

サプライ品の事前補充

AWS IoT Analytics では、在庫をリアルタイムで監視できる IoT アプリケーションを構築できます。たとえば、食品飲料会社は、フード自動販売機のデータを分析し、サプライ品が不足すると事前に商品を再注文することができます。

プロセス効率のスコアリング

AWS IoT Analytics では、さまざまなプロセスの効率を常に監視し、プロセスを改善するアクションを実行するアプリケーションを構築できます。たとえば、鉱業会社では、1 回で輸送できる量を最大化して、鉱石トラックの効率を高めることができます。AWS IoT Analytics では、長期的に場所やトラックの最も効率的な貨物量を見極め、目標量との偏差をリアルタイムで比較して積載ガイドライン計画を改善し、効率を高めることができます。

スマートアグリカルチャー

AWS IoT Analytics では、時間や場所、温度、高度などの環境条件が分析に反映されるように、AWSIoT レジストリデータまたはパブリックデータソースを使用して、環境に応じたメタデータで IoT デバイスデータを強化できます。この分析を使用して、お使いのデバイス用に推奨されるアクションを出力してフィールドに取り込むモデルを作成できます。たとえば、かんがいシステムでは、湿度センサーのデータを降雨データで強化することで注水時期を決定し、水を効率的に使用できます。

6

Page 12: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics コンソールへのサインイン

AWS IoT Analytics コンソールクイックスタートガイド

このセクションでは、AWS IoT Analytics コンソールを使用して、デバイスデータの収集、保存、処理、クエリを行う方法について説明します。以下の手順に従って、チャネル、データストア、パイプライン、データセットを作成する方法、および IoT Core コンソールを使用して AWS IoT Analytics に取り込まれたメッセージを送信する方法の詳細を確認してください。

Note

AWS IoT Analytics エンティティの名前 (チャネル、データセット、データストア、パイプライン)を入力する場合、大文字を使用するとシステムによって自動的に小文字に変更されることに注意してください。エンティティの名前は小文字で始まり、小文字、河川および数字のみを含める必要があります。

また、AWS IoT Analytics コンソールには、チャネル、データストア、パイプライン、データセットをワンクリックで作成できるクイックスタート機能もあります。AWS IoT Analytics コンソールに入力する際にこのページを検索します。

AWS IoT Analytics コンソールへのサインインAWS アカウントを持っていない場合は作成します。

1. AWS アカウントを作成するには、AWS のホームページを開き、[AWS アカウントの作成] を選択します。

2. オンラインの手順に従います。サインアップ手順の一環として、電話を受け、電話のキーパッドを使用して PIN を入力する必要があります。

3. AWS マネジメントコンソールにサインインし、AWS IoT Analytics コンソールを開きます。

7

Page 13: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドチャネルの作成

チャネルの作成受信メッセージはチャネルに送信されます。

1. AWS IoT Analytics コンソールのランディングページの、[Prepare your data with IoT Analytics (IoTAnalytics でデータを準備する)] セクションの [Channels (チャネル)] で、[Create a channel (チャネルの作成)] を選択します。

2. チャネル ID を入力し、下にスクロールして、[Next (次へ)] を選択します。

8

Page 14: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドチャネルの作成

3. IoT Core (MQTT) トピックフィルタを入力します。チャネルによって取得されるメッセージを作成する後のステップで必要となるため、ここで入力したトピックフィルタを書きとめておきます。(この例では、ワイルドカード update/environment/# を使用したトピックフィルタを使用します。)

4. [IAM ロール名] エリアで [Create new (新しく作成)] を選択します。[新しいロールの作成] ウィンドウでロールの [名前] を入力し、次に [ロールの作成] を選択します。これで、適切なポリシーがアタッチされた新しいロールが自動的に作成されます。

9

Page 15: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータストアの作成

5. [Create channel (チャネルの作成)] を選択します。

データストアの作成データストアは、メッセージを受信して保存します。複数のデータストアを作成して、ニーズに応じてデータを保存できます。この例では、AWS IoT メッセージを受信するデータストアを 1 つ作成します。

1. AWS IoT Analytics コンソールのランディングページの、[Prepare your data with IoT Analytics (IoTAnalytics でデータを準備する)] セクションの [Data stores (データストア)] で [View data stores (データストアを表示)] を選択します。

10

Page 16: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータストアの作成

2. [Create a data store (データストアの作成)] ページで、[Create a data store (データストアの作成)] を選択します。

3. データストアの [ID] を入力して、[Create data store (データストアの作成)] を選択します。

11

Page 17: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドパイプラインを作成する

パイプラインを作成するデータストアにチャネルを接続するには、パイプラインを作成する必要があります。最も簡単なパイプラインには、データを収集するチャネルを指定するアクティビティと、メッセージの送信先のデータストアを識別するアクティビティのみが含まれます。より複雑なパイプラインについては、「パイプラインアクティビティ (p. 43)」で説明します。

この例では、データストアにチャネルに接続するだけのパイプラインを作成します。生データがどのようにデータストアに格納されるかを確認できます。後で、パイプラインアクティビティを追加して、このデータを処理できます。

1. AWS IoT Analytics コンソールのランディングページの、[Prepare your data with IoT Analytics (IoTAnalytics でデータを準備する)] セクションの [Pipelines (パイプライン)] で [View pipelines (パイプラインを表示)] を選択します。

12

Page 18: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドパイプラインを作成する

2. [Process messages with pipelines (パイプラインでメッセージを処理)] ページで [Create a pipeline (パイプラインの作成)] を選択します。

3. パイプライン ID を入力します。[Pipeline source (パイプラインのソース)] で、[編集] を選択し、前に作成したチャネルを選択します。続いて、[次へ] を選択します。

13

Page 19: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドパイプラインを作成する

4. [メッセージの属性の設定] ページで、属性名を入力し、プルダウンリストからタイプを選択したら、サンプル値を入力し、[Add new (新しく追加)] を選択します。必要な属性の分に応じて、これを繰り返します。終了したら、[Next (次へ)] を選択します。

5. この時点ではパイプラインアクティビティを追加しないため、[Enrich, transform, and filter messages(メッセージの強化、変換、およびフィルタ)] ページでは、単に [Next (次へ)] を選択します。

14

Page 20: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセットの作成

6. [処理されたメッセージをデータストアに保存] ページで [編集] を選択し、前に作成したデータストアを選択したら、[パイプラインの作成] を選びます。

データセットの作成これで、チャネルでパイプラインにデータをルーティングし、データストアにデータを保存してクエリを実行できます。データに対してクエリを実行するには、データセットを作成します。データセットには、データストアにクエリを実行するための SQL 式と、選択した日時にクエリを繰り返すオプションのスケジュールが含まれます。オプションのスケジュールを作成するには、Amazon CloudWatch のスケジュール式のような式を使用できます。

1. 左のナビゲーションペインで、[分析]、[Data Sets (データセット)] の順に選択します。[Explore yourdata with a data set (データセットでデータを調査する)] ページで [Create a data set (データセットの作成)] を選択します。

15

Page 21: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセットの作成

2. [Select a type (型を選択)] ページで、[Create SQL (SQL を作成)] を選択し、編集] を選択します。

3. [Set ID and source (ID およびソースの設定)] ページに [ID] を入力します。[データストアソースを選択]で、[編集] を選択し、先ほど作成したデータストアを選択します。続いて、[次へ] を選択します。

16

Page 22: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセットの作成

4. [Author SQL Query (SQL クエリの作成)] ページの [クエリ] エリアに属性を選択する SQL 式を入力、またはすべての属性を選択するワイルドカード式を使用して [次へ] を選択します。この例では、ワイルドカードを使用した SQL 式を使用します。

SELECT * FROM my_datastore

5. この時点でデータ選択フィルタを設定することはありませんので、[Configure data selection filter (データ選択フィルタの設定)] ページでは単に [次へ] を選択します。

17

Page 23: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセットの作成

6. この時点では、クエリを繰り返す実行はスケジュールしないため、[Set query schedule (クエリスケジュールの設定)] ページでは、単に [次へ] を選択します。

7. デフォルトのデータセットの保持期間 (90 日) を使用できるため、[Configure the results of youranalytics (分析の結果の設定)] ページでは単に [次へ] を選択します。

18

Page 24: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT メッセージの送信

8. [Configure the delivery rules of your analytics results (分析結果の配信ルールの設定)] ページで、[Createdata set (データセットの作成)] を選択します。

AWS IoT メッセージの送信一部のサンプルデータを生成するには、AWS IoT コンソールを使用して AWS IoT メッセージを送信します。

Note

AWS IoT Analytics に送信するメッセージペイロードのフィールド名 (データ)。

• 英数字およびアンダースコア (_) のみを使用することができます。他の特殊文字を使用することはできません。

• 先頭は、英字または 1 つの下線 (_) にする必要があります。• ハイフン (-) を含めることはできません。• 正規表現では次のとおりです。"^[A-Za-z_]([A-Za-z0-9]*|[A-Za-z0-9][A-Za-z0-9_]*)$"

• 255 文字を超えることはできません。• 大文字と小文字は区別されます。(同じペイロードのフィールド名の "foo" と "FOO" は重複と見

なされます。)

たとえば、メッセージペイロードでは {"temp_01": 29} や {"_temp_01": 29} は有効ですが、{"temp-01": 29}、{"01_temp": 29} や {"__temp_01": 29} は無効です。

1. AWS IoT コンソールの左のナビゲーションペインで、[テスト] を選択します。

19

Page 25: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT メッセージの送信

2. [MQTT クライアント] ページで、[発行] セクションの、[Specify a topic (トピックを指定)] に、チャネルの作成時に入力したトピックフィルタに一致するトピックタイプを入力します。(この例では、update/environment/dht1 を使用します)。メッセージペイロードセクションで、次の JSONの内容を入力します。

{ "thingid": "dht1", "temperature": 26, "humidity": 29, "datetime": "2018-01-26T07:06:01"}

3. [Publish to topic] を選択します。

この例に従っている場合、この時点でメッセージが発行されます。メッセージはチャネルでキャプチャされ、パイプラインでデータストアにルーティングされます。

20

Page 26: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドIoT メッセージの進行状況を確認する

IoT メッセージの進行状況を確認するチャネルにメッセージが取り込まれたことを確認するには、次の手順を実行します。

1. AWS IoT Analytics コンソールの左のナビゲーションペインで、[Prepare (準備)] を選択し、(必要に応じて) [Channels (チャネル)] を選択し、前に作成したチャネルの名前を選択します。

2. チャネルの詳細ページで、[Monitoring (モニタリング)] セクションまで下にスクロールします。必要に応じて、時間枠インジケータ [1h 3h 12h 1d 3d 1w (1 時間 3 時間 12 時間 1 日 3 日 1 週間)] のいずれかを選択することで表示される時間枠を調整します。指定された時間枠内にチャネルに取り込まれたメッセージの数を示す線グラフが表示されます。

パイプラインのアクティビティの実行を確認する同様のモニタリング機能があります。パイプラインの詳細ページでアクティビティ実行エラーをモニタリングできます。(アクティビティをパイプラインの一部として指定していないため、実行エラー 0 が表示されます。)

1. AWS IoT Analytics コンソールの左のナビゲーションペインで、[Prepare (準備)] を選択し、次に[Pipelines (パイプライン)] を選択し、前に作成したパイプラインの名前を選択します。

21

Page 27: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドクエリの結果へのアクセス

2. パイプラインの詳細ページで、[Monitoring (モニタリング)] セクションまで下にスクロールします。必要に応じて、時間枠インジケータ [1h 3h 12h 1d 3d 1w (1 時間 3 時間 12 時間 1 日 3 日 1 週間)] のいずれかを選択することで表示される時間枠を調整します。指定された時間枠内のパイプラインのアクティビティ実行エラーの数を示す線グラフが表示されます。

クエリの結果へのアクセスデータセットのコンテンツは、CSV 形式ファイルのクエリの結果です。

1. AWS IoT Analytics コンソールで、左のナビゲーションペインの [分析] を選択し、[Data sets (データセット)] を選択します。[Explore your data with a data set (データセットでデータを調査する)] ページで[Create a data set (データセットの作成)] を選択します。

22

Page 28: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドクエリの結果へのアクセス

2. [Data sets (データセット)] ページで、前に作成したデータセットの名前を選択します。

3. データセット情報ページの右上で、[アクション] を選択し、[Run now (今すぐ実行)] を選択します。

23

Page 29: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドクエリの結果へのアクセス

4. データセットの準備が完了しているかどうかを確認するには、左上のデータセット名の下で[SUCCEEDED] (成功) を探します。[詳細] セクションには、クエリ結果が表示されます。

5. 左のナビゲーションペインで [Content: (コンテンツ:)] をクリックします。(最新のバージョンの名前の右側にある) [ダウンロード] を選択して、クエリ結果を含む CSV ファイルを表示または保存します。

24

Page 30: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータの探索

これに似たものになるはずです。

"thingid","temperature","humidity","datetime","__dt""dht1","26","29","2018-01-26T07:06:01","2019-02-27 00:00:00.000"

AWS IoT Analytics では、この Data Set (データセット)] コンテンツページに Jupyter ノートブックのHTML 部分を埋め込むこともできます。詳細については、「コンソール使用した AWS IoT Analyticsデータの可視化 (p. 100)」を参照してください。

6. 左上の左矢印を選択し、AWS IoT Analytics コンソールのメインページに戻ります。

データの探索データを保存、分析および可視化するためのさまざまなオプションがあります。

Amazon S3データセットのコンテンツを Amazon Simple Storage Service(S3) バケットに送信して、既存のデータレイクとの統合や社内アプリケーションと可視化ツールからアクセスすることができます。CreateDataset (p. 137) でcontentDeliveryRules::destination::s3DestinationConfiguration フィールドを参照してください。

AWS IoT イベントデバイスやプロセスのオペレーション時の障害や変化をモニタリングし、このようなイベントが発生した時に追加のアクションをトリガーするサービスである AWS IoT Eventsへの入力としてデータセットコンテンツを送信できます。CreateDataset (p. 137) でcontentDeliveryRules::destination::iotEventsDestinationConfiguration フィールドを参照してください。

Jupyter ノートブックJupyter ノートブックは、高度な分析とアドホックデータ検索を目的としたオープンソースのソリューションです。ノートブックにより、テンプレートとスクリプト言語 (通常は Python) を使用して、さまざまな変換や正規化をデータに適用し、メトリクスを集約して、データサイエンスライブラリを使用してデータを分析、可視化することができます。さらに、これらのノートブックを使用して、k-means クラスターなど、より複雑な分析と機械学習をデータに適用することもできます。

25

Page 31: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドJupyter ノートブック

AWS IoT Analytics では、Amazon SageMaker ノートブックインスタンスを使用して Jupyter ノートブックをホストします。ノートブックインスタンスを作成する前に、AWS IoT Analytics と AmazonSageMaker の関係を作成する必要があります。

1. Amazon SageMaker コンソールに移動し、ノートブックインスタンスを作成します。a. 詳細を入力し、[新しいロールの作成] を選択します。ロールの ARN を書き留めておきます。b. ノートブックインスタンスを作成します。

Amazon SageMaker で使用できるロールと新しいノートブックインスタンスが作成されます。2. IAM コンソールに移動し、Amazon SageMaker のロールを変更します。

a. このロールを開きます。管理ポリシーが 1 つあります。b. [インラインポリシーの追加] を選択し、[サービス] で IotAnalytics を選択します。[アクションの選択]

を選択して、検索ボックスに「GetDatasetContent」と入力し、このアクションを選択します。[ポリシーの確認] を選択します。

c. ポリシーが正しいことを確認し、名前を指定したら、[ポリシーの作成] を選択します。

これにより、AWS IoT Analytics からデータセットを読み取るアクセス許可が、新しく作成したロールに付与されます。

3. AWS IoT Analytics コンソールに戻り、左のナビゲーションペインで、[分析] 、[ノートブック] の順に選択します。[Gain deeper insight from IoT Data (IoT データからより深い洞察を得る)] ページで [Create anotebook (ノートブックの作成)] を選択します。

4. [Notebooks (ノートブック)] ページで、[作成] を選択します。

26

Page 32: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドJupyter ノートブック

5. [Select method (方法の選択)] ページで、[Blank Notebook (空のノートブック)] を選択します。

6. [ノートブックのセットアップ] ページで、ノートブックの名前を入力します。[データセットソースの選択] エリアで、[選択] を選び、前に作成したデータセットを選択します。[ノートブックインスタンスの選択] エリアで、[選択]を選び、Amazon SageMaker で作成したノートブックインスタンスを選択します。[ノートブックの作成] を選択します。

27

Page 33: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドJupyter ノートブック

7. [Notebooks (ノートブックの作成)] ページで、三角形を使用してノートブックインスタンスと[IoTAnalytics] フォルダを開きます。Jupyter ノートブックのデータを検索するには、次のリンクを使用します。

Jupyter ノートブックは、自分のコンピュータにダウンロードしてインストールできます。Amazon がホストするノートブックソリューションとの追加の統合も利用できます。

28

Page 34: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドノートブックテンプレート

ノートブックテンプレートAWS IoT Analytics には、AWS IoT Analytics のユースケースを開始しやすいように、AWS が作成したMachine Learning モデルおよび可視化を含むノートブックテンプレートが用意されています。これらのノートブックテンプレートは、教育目的にそのまま利用するか、データに合わせて転用し、すぐに活用できます。

AWS IoT Analytics では、以下のノートブックテンプレートが用意されています。

1. コンテキスト異常の検出: 時系列データ用に PEWMA モデルで測定された風速のコンテキスト異常を検出するアプリケーションです。

2. ソーラーパネルの出力予測: ソーラーパネルの出力を予測する、区分的および季節的な線形時系列モデルのアプリケーションです。

3. ジェットエンジンの予測メンテナンス: ジェットエンジンの残存耐用年数を予測するための、多変量LSTM ニューラルネットワークおよびロジスティック回帰のアプリケーションです。

4. スマートホームの顧客の区分: スマートホームの使用データにおける様々な顧客セグメントを検出するための K-Means および PCA 分析のアプリケーションです。

5. スマートシティの混雑予測: 都市高速道路の利用率を予測する LSTM のアプリケーションです。6. スマートシティの大気汚染予測: 都市中央部の大気汚染を予測する LSTM のアプリケーションです。

ノートブックテンプレートの詳細については、AWS IoT Analytics コンソールで [分析] (分析) の [ノートブック] を参照してください。

29

Page 35: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics コンポーネントおよび概念

AWS IoT Analytics を使用する方法このセクションでは、AWS IoT Analytics を使用してデバイスデータを収集、保存、処理、クエリするために使用する、基本的なコマンドについて説明します。ここに示す例は、AWS コマンドラインインターフェイス (AWS CLI) を使用します。CLI の詳細については、AWS コマンドラインインターフェイスのユーザーガイドを参照してください。AWS IoT の利用可能な CLI コマンドの詳細については、AWS コマンドラインインターフェイスリファレンスの「iot」を参照してください。

Important

CLI を使用して AWS IoT Analytics を操作するには、aws iotanalytics コマンドを使用します。CLIを使用して IoT システムの他の部分を操作するには、aws iot コマンドを使用します。Note

以下の例で AWS IoT Analytics の名前 (チャネル、データセット、データストアおよびパイプライン) を入力すると、使用する大文字はシステムによって自動的に小文字に変更されることに注意してください。エンティティの名前は小文字で始まり、小文字、アンダースコアおよび数字のみを含める必要があります。

AWS IoT Analytics コンポーネントおよび概念このセクションでは、これらの基本コンポーネントと概念を説明しています。

チャネル - データの収集

チャネルは、このデータをパイプラインに公開する前に、raw、未処理のメッセージデータを収集してアーカイブします。

パイプライン - データの処理

パイプラインは、チャネルからのメッセージを消費し、メッセージをデータストアに保存する前にメッセージを処理、およびフィルタリングすることができます。

データストア - データの保存

データストアはデータベースではなく、メッセージのスケーラブルでクエリ可能なリポジトリです。異なるデバイスまたは場所から取得されたメッセージに対して、複数のデータストアを使用できます。

データセット - 分析のためにデータを取得

データストアからデータを取得するには、データセットを作成します。AWS IoT Analytics により、SQL データセットまたはコンテナデータセットを作成できます。ここでは、SQL データベースのマテリアライズドビューに似た、単純な SQL データセットを見てみましょう。実際、SQL データセットを作成するには SQL アクションを適用します。

データセットコンテンツ - 結果の取得

データセットコンテンツを作成した後、それらをコンソールから表示できます。

チャネル受信メッセージはチャネルに送信されるため、最初のステップとして、データ用のチャネルを作成します。

aws iotanalytics create-channel --channel-name mychannel

30

Page 36: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータストア

AWS IoT メッセージを AWS IoT Analytics に取り込む場合は、AWS IoT ルールエンジンのルールを作成して、このチャネルにメッセージを送信できます。これについては、「AWS IoT Analytics にメッセージを送信するための AWS IoT ルールの作成 (p. 34)」で後述します。データをチャネルに取得する別の方法は、AWS IoT Analytics コマンド「BatchPutMessage」を使用することです。

作成済みのチャネルを一覧表示するには:

aws iotanalytics list-channels

チャネルに関する追加情報を取得するには:

aws iotanalytics describe-channel --channel-name mychannel

未処理のチャネルメッセージは、AWS IoT Analytics が管理する Amazon S3 バケット、またはユーザーが管理するバケットに保存されます。channelStorage パラメータを使用して、どちらかを指定します。デフォルトは、サービスで管理された Amazon S3 バケットです。管理する Amazon S3 バケットにチャネルメッセージを保存することを選択した場合、ユーザーに代わって Amazon S3 バケットでこれらのアクションを実行するには、AWS IoT Analytics のアクセス許可を付与する必要があります。s3:GetBucketLocation (バケットの場所の確認)、s3:PutObject (保存)、s3:GetObject (読み取り)、s3:ListBucket (再処理)。次に例を示します。

{ "Version": "2012-10-17", "Id": "MyPolicyID", "Statement": [ { "Sid": "MyStatementSid", "Effect": "Allow", "Principal": { "Service": "iotanalytics.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject", ], "Resource": [ "arn:aws:s3:::my-iot-analytics-bucket", "arn:aws:s3:::my-iot-analytics-bucket/*" ] } ]}

カスタマー管理のチャネルストレージのオプションまたはアクセス許可を変更する場合、以前に取り込まれたデータがデータセットコンテンツに含まれるように、チャネルデータを再処理する必要があります。「チャネルデータの再処理 (p. 64)」を参照してください。

データストアデータストアは、メッセージを受信して保存します。複数のデータストアを作成してニーズに応じてデータを保存するか、1 つのデータストアを使用してすべての AWS IoT メッセージを受信することができます。

aws iotanalytics create-datastore --datastore-name mydatastore

31

Page 37: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドパイプライン

作成済みのデータストアを一覧表示するには:

aws iotanalytics list-datastores

データストアに関する追加情報を取得するには:

aws iotanalytics describe-datastore --datastore-name mydatastore

処理されたデータストアメッセージは、AWS IoT Analytics が管理する Amazon S3 バケットまたはユーザーが管理するバケットに保存されます。datastoreStorage パラメータを使用して、どちらかを指定します。デフォルトは、サービスで管理された Amazon S3 バケットです。管理する Amazon S3 バケットにデータストアメッセージを保存することを選択した場合、ユーザーに代わって Amazon S3 バケットでこれらのアクションを実行するには、AWS IoT Analytics のアクセス許可を付与する必要があります。s3:GetBucketLocation (バケットの場所の確認)、s3:PutObject、s3:DeleteObject。データストアを SQL クエリデータセットのソースとして使用する場合、バケットのコンテンツで AmazonAthena クエリを実行するための AWS IoT Analytics アクセス許可を付与する Amazon S3 バケットポリシーを設定する必要があります。必要なアクセス許可を付与するバケットポリシーの例を次に示します。

{ "Version": "2012-10-17", "Id": "MyPolicyID", "Statement": [ { "Sid": "MyStatementSid", "Effect": "Allow", "Principal": { "Service": "iotanalytics.amazonaws.com" }, "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::my-athena-data-bucket", "arn:aws:s3:::my-athena-data-bucket/*" ] } ]}

詳細については、Amazon Athena ユーザーガイドの「クロスアカウントアクセス」を参照してください。また、カスタマー管理のデータストアストレージのオプションまたはアクセス許可を変更する場合、以前に取り込まれたデータがデータセットコンテンツに含まれるように、チャネルデータを再処理する必要があります。「チャネルデータの再処理 (p. 64)」を参照してください。

パイプラインデータストアにチャネルを接続するには、パイプラインを作成します。最も簡単なパイプラインには、データを収集するチャネルを指定するアクティビティと、メッセージの送信先のデータストアを識別するアクティビティのみが含まれます。より複雑なパイプラインの詳細については、「パイプラインアクティビティ (p. 43)」を参照してください。

32

Page 38: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics へのデータの取得

最初に、データストアにチャネルを接続するだけのパイプラインを作成することをお勧めします。次に、raw データがデータストアに流れていることを確認した後、このデータを処理する追加のパイプラインアクティビティを導入できます。

パイプラインを作成します。

aws iotanalytics create-pipeline --cli-input-json file://mypipeline.json

ファイル mypipeline.json には、次の構造が格納されます。

{ "pipelineName": "mypipeline", "pipelineActivities": [ { "channel": { "name": "mychannelactivity", "channelName": "mychannel", "next": "mystoreactivity" } }, { "datastore": { "name": "mystoreactivity", "datastoreName": "mydatastore" } } ]}

既存のパイプラインを一覧表示するには:

aws iotanalytics list-pipelines

個別のパイプラインの設定を表示するには:

aws iotanalytics describe-pipeline --pipeline-name mypipeline

AWS IoT Analytics へのデータの取得クエリ可能なデータストアにデータを保存するパイプラインにデータをルーティングするチャネルがある場合、メッセージデータを AWS IoT Analytics に送信する準備ができたことになります。ここでは、AWSIoT Analytics にデータを取得する 2 つの方法を示します。AWS IoT メッセージブローカーまたは AWSIoT Analytics の "BatchPutMessage" コマンドを使用してメッセージを送信できます。

AWS IoT メッセージブローカーを使用するには、AWS IoT ルールエンジンを使用してルールを作成します。このルールは、特定のトピックを使用してメッセージを AWS IoT Analytics にルーティングします。ただし、このルールでは、まず必要なアクセス許可を付与するロールを作成する必要があります。次にそれを説明します。このセクションの後半では、AWS IoT Analytics の "BatchPutMessage" コマンドを使用して、メッセージをチャネルに直接送信する方法も説明します。

IAM ロールでアクセス許可を付与するAWS IoT メッセージを AWS IoT Analytics チャネルにルーティングするには、ルールを設定します。ただし、その前にメッセージデータを AWS IoT Analytics チャネルに送信するためのアクセス権限をルールに付与する IAM ロールを作成する必要があります。

ロールを作成します。

33

Page 39: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics にメッセージを送信するための AWS IoT ルールの作成

aws iam create-role --role-name myAnalyticsRole --assume-role-policy-document file://arpd.json

ここでは、arpd.json ファイルの内容は以下のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

次に、ポリシードキュメントをロールにアタッチします。

aws iam put-role-policy --role-name myAnalyticsRole --policy-name myAnalyticsPolicy --policy-document file://pd.json

ここでは、pd.json ファイルの内容は以下のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotanalytics:BatchPutMessage", "Resource": [ "arn:aws:iotanalytics:us-west-2:<your-account-number>:channel/mychannel" ] } ]}

AWS IoT Analytics にメッセージを送信するためのAWS IoT ルールの作成チャネルにメッセージを送信する AWS IoT ルールを作成します。

aws iot create-topic-rule --rule-name analyticsTestRule --topic-rule-payload file://rule.json

rule.json ファイルの内容は以下のようになります。

{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "iotAnalytics": { "channelName": "mychannel", "roleArn": "arn:aws:iam::<your-account-number>:role/myAnalyticsRole" }

34

Page 40: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT コンソールを使用してメッセージデータを AWS IoT Analytics に送信する

} ]}

iot/test をルーティングする必要があるメッセージの MQTT トピックに置き換えます。チャネル名とロールを前のセクションで作成したものに置き換えます。

AWS IoT コンソールを使用してメッセージデータをAWS IoT Analytics に送信するルールをチャネルに、チャネルをパイプラインに、パイプラインをデータストアに結合すると、ルールに一致するデータは、AWS IoT Analytics を経由して、クエリを実行する準備ができているデータストアに流れるようになります。これをテストするには、AWS IoT コンソールを使用してメッセージを送信できます。

Note

AWS IoT Analytics に送信するメッセージペイロードのフィールド名 (データ)。

• 英数字およびアンダースコア (_) のみを使用することができます。他の特殊文字を使用することはできません。

• 先頭は、英字または 1 つアンダースコア (_) にする必要があります。• ハイフン (-) を含めることはできません。• 正規表現では次のとおりです。"^[A-Za-z_]([A-Za-z0-9]*|[A-Za-z0-9][A-Za-z0-9_]*)$"

• 255 文字を超えることはできません。• 大文字と小文字は区別されます。(同じペイロードのフィールド名の "foo" と "FOO" は重複と見

なされます)。

たとえば、メッセージペイロードでは {"temp_01": 29} や {"_temp_01": 29} は有効ですが、{"temp-01": 29}、{"01_temp": 29} や {"__temp_01": 29} は無効です。

1. AWS IoT コンソールの左のナビゲーションペインで、[テスト] を選択します。

2. MQTT クライアントのページで、[Specify a topic (トピックの指定)] の、[Publish (発行)] セクションに、「iot/test」と入力します。メッセージペイロードセクションで、次の JSON の内容が存在することを確認し、存在しない場合は入力します。

35

Page 41: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド「BatchPutMessage」を使用してメッセージをチャネルに送信する

{ "message": "Hello from AWS IoT console"}

3. [Publish to topic (トピックに発行)] を選択します。

これでメッセージが発行され、前に作成したデータストアにルーティングされます。

「BatchPutMessage」を使用してメッセージをチャネルに送信するメッセージデータを AWS IoT Analytics に取得する別の方法は、"BatchPutMessage" API コマンドを使用することです。このメソッドでは、メッセージをルートするためにチャネルに特定のトピックを使用して AWS IoT ルールを設定する必要はありません。ただし、データメッセージをチャネルに送信するデバイスが AWS SDK で作成したソフトウェアを実行できること、あるいは AWS CLI を使用して"BatchPutMessage" を呼び出すことができることが必要となります。

1. 送信するメッセージが含まれている "messages.json" ファイルを作成します (この例では、1 つのメッセージだけが送信されます)。

[ { "messageId": "message01", "payload": "{ \"message\": \"Hello from the CLI\" }" }]

2. batch-put-message を呼び出します。

aws iotanalytics batch-put-message --channel-name mychannel --messages file://messages.json

3. エラーがない場合には、次の出力が表示されます。

36

Page 42: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドIoT メッセージの進行状況の確認

{ "batchPutMessageErrorEntries": []}

IoT メッセージの進行状況の確認AWS IoT Analytics コンソールを使用して、送信したメッセージがチャネルに取得されていることを確認できます。以下のステップに従ってください。

1. AWS IoT Analytics コンソールの左のナビゲーションペインで、[Prepare (準備)] を選択し、(必要に応じて) [Channels (チャネル)] を選択して、前に作成したチャネルの名前を選択します。

2. チャネルの詳細ページで、[Monitoring (モニタリング)] セクションまで下にスクロールします。必要に応じて、時間枠インジケータ [1h 3h 12h 1d 3d 1w (1 時間 3 時間 12 時間 1 日 3 日 1 週間)] のいずれかを選択することで表示される時間枠を調整します。指定された時間枠内にチャネルに取り込まれたメッセージの数を示す線グラフが表示されます。

37

Page 43: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセット - データのクエリ

パイプラインのアクティビティの実行を確認する同様のモニタリング機能があります。パイプラインの詳細ページでアクティビティ実行エラーをモニタリングできます。(アクティビティをパイプラインの一部として指定していない場合、実行エラー 0 が表示されます。)

1. AWS IoT Analytics コンソールの左のナビゲーションペインで、[Prepare (準備)] を選択し、[Pipelines(パイプライン)] を選択して、前に作成したパイプラインの名前を選択します。

2. パイプラインの詳細ページで、[Monitoring (モニタリング)] セクションまで下にスクロールします。必要に応じて、時間枠インジケータ [1h 3h 12h 1d 3d 1w (1 時間 3 時間 12 時間 1 日 3 日 1 週間)] のいずれかを選択することで表示される時間枠を調整します。指定された時間枠内のパイプラインのアクティビティ実行エラーの数を示す線グラフが表示されます。

データセット - データのクエリデータストアにデータが保存されたら、クエリを実行して分析のための質問に回答できます。データストアはデータベースではありませんが、SQL 式を使用してデータにクエリを実行すると、生成された結果はデータセットに保存されます。

38

Page 44: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータセットコンテンツ - クエリ結果へのアクセス

データに対してクエリを実行するには、データセットを作成します。データセットには、データストアにクエリを実行するために使用する SQL と、選択した日時にクエリを繰り返すオプションのスケジュールが含まれます。オプションのスケジュールを作成するには、Amazon CloudWatch のスケジュール式に似た式を使用します。

データセットの作成:

aws iotanalytics create-dataset --cli-input-json file://mydataset.json

ファイル mydataset.json には、次の構造が格納されます。

{ "datasetName": "mydataset", "actions": [ { "actionName":"myaction", "queryAction": { "sqlQuery": "select * from mydatastore" } } ]}

データセットの内容を作成するには、クエリを実行します。

aws iotanalytics create-dataset-content --dataset-name mydataset

続ける前に、データセットのコンテンツが作成されるまで数分待ちます。

データセットコンテンツ - クエリ結果へのアクセスクエリ結果は、CSV 形式のファイルとして保存されたデータセットコンテンツです。このファイルはAmazon S3 経由で用意されています。以下の例では、結果の準備が完了してファイルをダウンロードできることを確認する方法を示しています。

get-dataset-content の呼び出し:

aws iotanalytics get-dataset-content --dataset-name mydataset

データセットにデータが含まれている場合、get-dataset-content の出力は [status] フィールドに「"state": "SUCCEEDED"」と表示されます。

{ "timestamp": 1508189965.746, "entries": [ { "entryName": "someEntry", "dataURI": "https://aws-iot-analytics-datasets-f7253800-859a-472c-aa33- e23998b31261.s3.amazonaws.com/results/f881f855-c873-49ce-abd9-b50e9611b71f.csv?X-Amz- Security-Token=<TOKEN>&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20171016T214541Z&X-Amz- SignedHeaders=host&X-Amz-Expires=7200&X-Amz-Credential=<CREDENTIAL>&X-Amz- Signature=<SIGNATURE>" } ],

39

Page 45: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドデータの探索

"status": { "state": "SUCCEEDED", "reason": "A useful comment." }}

dataURI は、出力結果の署名付き URL です。有効期間は短時間 (数時間) です。このコマンドを呼び出すことで新しい署名付き URL が生成されるため、ワークフローによっては、コンテンツにアクセスする前に常に get-dataset-content を呼び出すようにします。

データの探索データを保存、分析および可視化するためのさまざまなオプションがあります。

Amazon S3データセットコンテンツを Amazon Simple Storage Service (S3) バケットに送信して、既存のデータレイクと統合したり社内アプリケーションと可視化ツールからアクセスすることができます。CreateDataset (p. 137) でフィールドcontentDeliveryRules::destination::s3DestinationConfiguration を参照してください。

AWS IoT イベントデバイスやプロセスのオペレーション時の障害や変化をモニタリングし、このようなイベントが発生した時に追加のアクションをトリガーするサービスである AWS IoT Events への入力としてデータセットコンテンツを送信できます。CreateDataset (p. 137) でフィールドcontentDeliveryRules::destination::iotEventsDestinationConfiguration を参照してください。

Amazon QuickSightAWS IoT Analytics は、Amazon QuickSight と直接統合できます。Amazon QuickSight は、可視化の構築、アドホック分析の実行、データからの迅速なビジネス上の洞察の取得に使用できる高速なビジネス分析サービスです。Amazon QuickSight は、組織が数十万人のユーザーにスケールするのを可能にし、堅牢なインメモリエンジン (SPICE) を使用することで応答性の高いパフォーマンスを実現します。AmazonQuickSight は、これらのリージョンで利用できます。

Jupyter ノートブックAWS IoT Analytics データセットは、高度な分析とデータ探索を実行するために、Jupyter ノートブックで直接使用することもできます。Jupyter ノートブックはオープンソースのソリューションです。http://jupyter.org/install.html からダウンロードしてインストールできます。さらに Amazon がホストするノートブックソリューションである SageMaker と統合することもできます。

AWS IoT Analytics データセットの複数のバージョンの保持

CreateDataset (p. 137) と UpdateDataset API (p. 217) を呼び出すときにデータセットのretentionPeriod と versioningConfiguration フィールドの値を指定することにより、保持するデータセットコンテンツのバージョン数と期間を選択できます。

40

Page 46: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics メッセージペイロード制限

..."retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer"},"versioningConfiguration": { "unlimited": "boolean", "maxVersions": "integer"},...

これらの 2 つのパラメータの設定は連携しており、保持するデータセットコンテンツのバージョン数と期間を次の方法で決定します。

  retentionPeriod

[指定されていません]

RetentionPeriod:

無制限 =TRUE、numberOfDays= 未設定

RetentionPeriod

無制限 =FALSE、numberOfDays= X

VersioningConfiguration:

[指定されていません]

最終バージョンと最後に成功したバージョン (異なる場合) のみが、90 日間保持されます。

最終バージョンと最後に成功したバージョン(異なる場合) のみが、無期限に保持されます。

最終バージョンと最後に成功したバージョン(異なる場合) のみが、X日間保持されます。

VersioningConfiguration:

無制限 =TRUE、maxVersions未設定

数に関係なく、過去90 日間のすべてのバージョンが保持されます。

保持されるバージョンの数に制限はありません。

数に関係なく、過去X 日間のすべてのバージョンが保持されます。

VersioningConfiguration:

無制限 =FALSE、maxVersions= Y

最大で過去 90 日間の Yバージョンが保持されます。

バージョンの経過日数に関係なく、最大 Yバージョンが保持されます。

最大で過去 X 日間の Yバージョンが保持されます。

AWS IoT Analytics メッセージペイロード制限AWS IoT Analytics に送信するメッセージペイロードのフィールド名 (データ)。

• 英数字およびアンダースコア (_) のみを使用することができます。他の特殊文字を使用することはできません。

• 先頭は、英字または 1 つアンダースコア (_) にする必要があります。• ハイフン (-) を含めることはできません。• 正規表現では次のとおりです。"^[A-Za-z_]([A-Za-z0-9]*|[A-Za-z0-9][A-Za-z0-9_]*)$"

• 255 文字を超えることはできません。• 大文字と小文字は区別されます。(同じペイロードのフィールド名の "foo" と "FOO" は重複と見なされま

す)。

たとえば、メッセージペイロードでは {"temp_01": 29} や {"_temp_01": 29} は有効ですが、{"temp-01": 29}、{"01_temp": 29} や {"__temp_01": 29} は無効です。

41

Page 47: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics サービスの制限

AWS IoT Analytics サービスの制限API 制限の説明 調整可能?

SampleChannelData チャネルごとに 1 秒あたり 1 件のトランザクション

はい

CreateDatasetContent データセットごとに 1 秒あたり 1件のトランザクション

はい

RunPipelineActivity 1 秒あたり 1 件のトランザクション

はい

他の管理 API 1 秒あたり 20 件のトランザクション

はい

BatchPutMessage チャネルごとに 1 秒あたり100,000 件のメッセージまたは合計 500 MB のメッセージサイズ、バッチあたり 100 件のメッセージ、メッセージあたり 128KB

はい、はい、いいえ

リソース 制限の説明 調整可能?

チャネル アカウントあたり 50 はい

データストア アカウントあたり 25 はい

パイプライン アカウントあたり 100 はい

アクティビティ パイプラインあたり 25 いいえ

データセット アカウントあたり 100 はい

SQL データセットの最小更新間隔

1 分 いいえ

コンテナデータセットの最小更新間隔

15 分 はい

データセットコンテンツの同時生成

同時に 2 つのデータセット いいえ

単一の SQL データセットからトリガーできるコンテナデータセット

10 いいえ

データセットが実行する同時コンテナ

20 いいえ

42

Page 48: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドチャネルアクティビティ

パイプラインアクティビティ最もシンプルな機能のパイプラインは、チャネルをデータストアに接続します。これにより、パイプラインに 2 つのアクティビティ (channel アクティビティと datastore アクティビティ) が追加されます。さらに他のアクティビティをパイプラインに追加することで、より強力なメッセージ処理が可能です。

AWS IoT Analytics に用意されている RunPipelineActivity (p. 202) コマンドを使用すると、指定したメッセージペイロードに対してパイプラインアクティビティを実行した場合の結果をシミュレートできます。これは、パイプラインアクティビティを作成してデバッグするときに役立ちます。「RunPipelineActivityの例 (p. 62)」では、この使用方法を説明しています。

チャネルアクティビティパイプラインの最初のアクティビティは、処理するメッセージのソースを決定する channel アクティビティです。

{ "channel": { "name": "MyChannelActivity", "channelName": "mychannel", "next": "MyLambdaActivity" }}

データストアアクティビティdatastore アクティビティは、最後のアクティビティであり、処理したデータの保存先を指定します。

{ "datastore": { "name": "MyDatastoreActivity", "datastoreName": "mydatastore" }}

Lambda アクティビティlambda アクティビティは、メッセージでより複雑な処理を実行するために使用できます。例としては、外部 API の出力からのデータによるメッセージの強化や、DynamoDB のロジックに基づくメッセージのフィルタがあります。ただし、このアクティビティを使用して、データストアに保存するメッセージをフィルタするなど、あらゆる種類のメッセージベースの処理を実行できます。

このアクティビティで使用されている AWS Lambda 関数は、JSON オブジェクトの配列を受け取り、返す必要があります。次の例では、Lambda 関数で event パラメータを変更して返します。

43

Page 49: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドLambda 関数の例 1

batchSize では、各呼び出しで Lambda 関数が受け取るメッセージ数を決定します。これを設定する場合は、AWS Lambda 関数の最大タイムアウトが 5 分であることに留意してください。したがって、Lambda 関数はバッチ内のすべてのメッセージを 5 分未満で処理する必要があります。

{ "lambda": { "name": "MyLambdaActivity", "lambdaName": "mylambda", "batchSize": 10, "next": "MyDatastoreActivity" }}

AWS IoT Analytics から Lambda 関数を呼び出せるように、関数ポリシーを追加する必要があります。次の CLI コマンドを使用します。

aws lambda add-permission --function-name <lambda-function-name> --statement-id <your-statement> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction

Lambda 関数の例 1この例では、Lambda 関数は、元のメッセージのデータに基づいて、追加情報を追加します。次のようなペイロードのメッセージを発行するデバイスがあるとします。

{ "thingid": "00001234abcd", "temperature": 26, "humidity": 29, "location": { "lat": 52.4332935, "lon": 13.231694 }, "ip": "192.168.178.54", "datetime": "2018-02-15T07:06:01"}

また、パイプラインを次のように定義します。

{ "pipeline": { "activities": [ { "channel": { "channelName": "foobar_channel", "name": "foobar_channel_activity", "next": "lambda_foobar_activity" } }, { "lambda": { "lambdaName": "MyAnalyticsLambdaFunction", "batchSize": 5, "name": "lambda_foobar_activity", "next": "foobar_store_activity" } }, { "datastore": { "datastoreName": "foobar_datastore",

44

Page 50: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドLambda 関数の例 2

"name": "foobar_store_activity" } } ], "name": "foobar_pipeline", "arn": "arn:aws:iotanalytics:eu-west-1:123456789012:pipeline/foobar_pipeline" }}

次の Lambda Python 関数 (MyAnalyticsLambdaFunction) では GMaps URL と華氏の温度をメッセージに追加します。

import loggingimport sys

# Configure logginglogger = logging.getLogger()logger.setLevel(logging.INFO)streamHandler = logging.StreamHandler(stream=sys.stdout)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')streamHandler.setFormatter(formatter)logger.addHandler(streamHandler)

def c_to_f(c): return 9.0/5.0 * c + 32

def lambda_handler(event, context): logger.info("event before processing: {}".format(event)) maps_url = 'N/A'

for e in event: #e['foo'] = 'addedByLambda' if 'location' in e: lat = e['location']['lat'] lon = e['location']['lon'] maps_url = "http://maps.google.com/maps?q={},{}".format(lat,lon)

if 'temperature' in e: e['temperature_f'] = c_to_f(e['temperature'])

logger.info("maps_url: {}".format(maps_url)) e['maps_url'] = maps_url

logger.info("event after processing: {}".format(event))

return event

Lambda 関数の例 2メッセージペイロードを圧縮およびシリアル化して、トランスポートおよびストレージコストを削減するのが便利です。この 2 番目の例では、Lambda 関数はメッセージペイロードが圧縮されて、文字列としてbase64 エンコード (シリアル化) された元の JSON を表していると想定しています。元の JSON が返されます。

import base64import gzipimport jsonimport loggingimport sys

# Configure logginglogger = logging.getLogger()

45

Page 51: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAddAttributes アクティビティ

logger.setLevel(logging.INFO)streamHandler = logging.StreamHandler(stream=sys.stdout)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')streamHandler.setFormatter(formatter)logger.addHandler(streamHandler)

def decode_to_bytes(e): return base64.b64decode(e)

def decompress_to_string(binary_data): return gzip.decompress(binary_data).decode('utf-8')

def lambda_handler(event, context): logger.info("event before processing: {}".format(event))

decompressed_data = []

for e in event: binary_data = decode_to_bytes(e) decompressed_string = decompress_to_string(binary_data)

decompressed_data.append(json.loads(decompressed_string))

logger.info("event after processing: {}".format(decompressed_data))

return decompressed_data

AddAttributes アクティビティaddAttributes アクティビティでは、メッセージの既存の属性に基づいて属性が追加されます。これにより、メッセージを保存する前にメッセージのシェイプを変更できます。たとえば、addAttributes を使用して、様々な世代のデバイスファームウェアからのデータを正規化できます。

これは例で説明するのが最適です。次の入力メッセージを考えてみます。

{ "device": { "id": "device-123", "coord": [ 47.6152543, -122.3354883 ] }}

そして、次のような addAttributes アクティビティを考えてみます。

{ "addAttributes": { "name": "MyAddAttributesActivity", "attributes": { "device.id": "id", "device.coord[0]": "lat", "device.coord[1]": "lon" }, "next": "MyRemoveAttributesActivity" }}

このアクティビティでは、デバイス ID をルートレベルに移動し、coord 配列の値を抽出して、lat および lon と呼ばれる最上位レベルの属性に昇格します。このアクティビティの結果として、入力メッセージは次のように変換されます。

46

Page 52: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRemoveAttributes アクティビティ

{ "device": { "id": "device-123", "coord": [ 47.6, -122.3 ] }, "id": "device-123", "lat": 47.6, "lon": -122.3}

元のデバイスの属性はまだ存在しています。これを削除するには、removeAttributes アクティビティを使用できます。

RemoveAttributes アクティビティremoveAttributes アクティビティはメッセージから属性を削除します。たとえば、addAttributesアクティビティの結果、次のメッセージが発生したとします。

{ "device": { "id": "device-123", "coord": [ 47.6, -122.3 ] }, "id": "device-123", "lat": 47.6, "lon": -122.3}

このメッセージを正規化し、ルートレベルに必須のデータのみを含むようにするには、次のremoveAttributes アクティビティを使用します。

{ "removeAttributes": { "name": "MyRemoveAttributesActivity", "attributes": [ "device" ], "next": "MyDatastoreActivity" }}

これにより、パイプラインに沿って次のメッセージが流れます。

{ "id": "device-123", "lat": 47.6, "lon": -122.3}

SelectAttributes アクティビティselectAttributes アクティビティは、元のメッセージから指定された属性のみを使用して、新しいメッセージを作成します。他のすべての属性は削除されます。selectAttributes はメッセージのルートのみに新しい属性を作成します。そのため、次のメッセージがあるとします。

47

Page 53: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドフィルタアクティビティ

{ "device": { "id": "device-123", "coord": [ 47.6152543, -122.3354883 ], "temp": 50, "hum": 40 }, "light": 90}

さらに、次のアクティビティがあるとします。

{ "selectAttributes": { "name": "MySelectAttributesActivity", "attributes": [ "device.temp", "device.hum", "light" ], "next": "MyDatastoreActivity" }}

この結果、次のメッセージがパイプラインを通じて流れます。

{ "temp": 50, "hum": 40, "light": 90}

ここでも、selectAttributes はルートレベルのオブジェクトのみを作成できます。

フィルタアクティビティfilter アクティビティは、属性に基づいてメッセージをフィルタリングします。このアクティビティで使用されている式は、ブール値を返す必要がある SQL WHERE 句に似ています。

{ "filter": { "name": "MyFilterActivity", "filter": "temp > 40 AND hum < 20", "next": "MyDatastoreActivity" }}

DeviceRegistryEnrich アクティビティdeviceRegistryEnrich アクティビティでは、AWS IoT デバイスレジストリのデータをメッセージのペイロードに追加できます。たとえば、次の メッセージの場合:

{

48

Page 54: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeviceRegistryEnrich アクティビティ

"temp": 50, "hum": 40, "device" { "thingName": "my-thing" }}

そして、次のような deviceRegistryEnrich アクティビティを考えてみます。

{ "deviceRegistryEnrich": { "name": "MyDeviceRegistryEnrichActivity", "attribute": "metadata", "thingName": "device.thingName", "roleArn": "arn:aws:iam::<your-account-number>:role:MyEnrichRole", "next": "MyDatastoreActivity" }}

出力メッセージは次のようになります。

{ "temp" : 50, "hum" : 40, "device" { "thingName" : "my-thing" }, "metadata" : { "defaultClientId": "my-thing", "thingTypeName": "my-thing", "thingArn": "arn:aws:iot:us-east-1:<your-account-number>:thing/my-thing", "version": 1, "thingName": "my-thing", "attributes": {}, "thingId": "aaabbbccc-dddeeef-gghh-jjkk-llmmnnoopp" }}

適切なアクセス権限がアタッチされているアクティビティ定義の roleArn フィールド内でロールを使用する必要があります。このロールには、次ののようなアクセス権限ポリシーがある必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeThing" ], "Resource": [ "arn:aws:iot:<region>:<account-id>:thing/<thing-name> ] } ]}

また、信頼ポリシーは次のようになります。

{ "Version": "2012-10-17",

49

Page 55: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeviceShadowEnrich アクティビティ

"Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iotanalytics.amazonaws.com" }, "Action": [ "sts:AssumeRole" ] } ]}

DeviceShadowEnrich アクティビティdeviceShadowEnrich アクティビティは、AWS IoT Device Shadow サービスの情報をメッセージに追加します。たとえば、以下のメッセージがあるとします。

{ "temp": 50, "hum": 40, "device": { "thingName": "my-thing" }}

そして、次の deviceShadowEnrich アクティビティがあるとします。

{ "deviceShadowEnrich": { "name": "MyDeviceShadowEnrichActivity", "attribute": "shadow", "thingName": "device.thingName", "roleArn": "arn:aws:iam::<your-account-number>:role:MyEnrichRole", "next": "MyDatastoreActivity" }}

結果は、次のようなメッセージになります。

{ "temp": 50, "hum": 40, "device": { "thingName": "my-thing" }, "shadow": { "state": { "desired": { "attributeX": valueX, ... }, "reported": { "attributeX": valueX, ... }, "delta": { "attributeX": valueX, ... } }, "metadata": { "desired": {

50

Page 56: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドMath アクティビティ

"attribute1": { "timestamp": timestamp }, ... }, "reported": ": { "attribute1": { "timestamp": timestamp }, ... } }, "timestamp": timestamp, "clientToken": "token", "version": version }}

適切なアクセス権限がアタッチされているアクティビティ定義の roleArn フィールド内でロールを使用する必要があります。このロールには、次ののようなアクセス権限ポリシーがある必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:GetThingShadow" ], "Resource": [ "arn:aws:iot:<region>:<account-id>:thing/<thing-name> ] } ]}

また、信頼ポリシーは次のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iotanalytics.amazonaws.com" }, "Action": [ "sts:AssumeRole" ] } ]}

Math アクティビティmath アクティビティは、メッセージの属性を使用して演算式を計算します。この式は数値を返す必要があります。たとえば、以下のメッセージがあるとします。

{ "tempF": 50,

51

Page 57: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドMath アクティビティ演算子と関数

}

次の math アクティビティによる処理の後は次のようになります。

{ "math": { "name": "MyMathActivity", "math": "(tempF - 32) / 2", "attribute": "tempC", "next": "MyDatastoreActivity" }}

結果のメッセージは次のようになります。

{ "tempF" : 50, "tempC": 9}

Math アクティビティ演算子と関数math アクティビティでは、次の演算子を使用できます。

+ 加算

- 減算

* 乗算

/ 除算

% 法

math アクティビティでは、以下の関数を使用できます。

abs(10 進数)数値の絶対値を返します。

例: abs(-5) は 5 を返します。

引数の型 結果

Int Int、引数の絶対値。

Decimal Decimal、引数の絶対値。

Boolean Undefined.

String Decimal.結果は、引数の絶対値です。文字列が変換できない場合、結果は Undefined です。

配列 Undefined。

52

Page 58: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドacos(10 進数)

引数の型 結果

オブジェクト Undefined。

Null Undefined.

未定義 Undefined。

acos(10 進数)数値の逆コサインをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: acos(0) = 1.5707963267948966

引数の型 結果

Int Decimal (倍精度で)、引数の逆コサイン。仮想上の結果は、Undefined として返されます。

Decimal Decimal (倍精度で)、引数の逆コサイン。仮想上の結果は、Undefined として返されます。

Boolean Undefined。

String Decimal、引数の逆コサイン。文字列が変換できない場合、結果は Undefined です。仮想上の結果は、Undefined として返されます。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

asin(10 進数)数値の逆サインをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: asin(0) = 0.0

引数の型 結果

Int Decimal (倍精度で)、引数の逆サイン。仮想上の結果は、Undefined として返されます。

Decimal Decimal (倍精度で)、引数の逆サイン。仮想上の結果は、Undefined として返されます。

Boolean Undefined。

String Decimal (倍精度で)、引数の逆サイン。文字列が変換できない場合、結果は Undefined です。仮想上の結果は、Undefined として返されます。

53

Page 59: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドatan(10 進数)

引数の型 結果

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

atan(10 進数)数値の逆タンジェントをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: atan(0) = 0.0

引数の型 結果

Int Decimal (倍精度で)、引数の逆タンジェント。仮想上の結果は、Undefined として返されます。

Decimal Decimal (倍精度で)、引数の逆タンジェント。仮想上の結果は、Undefined として返されます。

Boolean Undefined。

String Decimal、引数の逆タンジェント。文字列が変換できない場合、結果は Undefined です。仮想上の結果は、Undefined として返されます。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

atan2(10 進数、10 進数)正の X 軸と 2 つの引数で定義された点 (x、y) の間の角度をラジアンで返します。 反時計回りの角度では正で (上半面、y > 0)、時計回りの角度では負です (下反面、y < 0)。Decimal 引数は関数適用の前に倍精度に丸められます。

例: atan2(1, 0) = 1.5707963267948966

引数の型 引数の型 結果

Int / Decimal Int / Decimal Decimal (倍精度で)、X 軸と 指定した点 (x、y) の間の角度。

Int / Decimal / String Int / Decimal / String Decimal、示された点の逆タンジェント。文字列が変換できない場合、結果は Undefined です。

54

Page 60: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドceil(10 進数)

引数の型 引数の型 結果

その他の値 その他の値 Undefined。

ceil(10 進数)指定の Decimal を最も近い Int に切り上げます。

例:

ceil(1.2) = 2

ceil(11.2) = -1

引数の型 結果

Int Int、引数値。

Decimal Int、最も近い Decimal へ切り上げられたInt値。

String Int.文字列は Decimal に変換され、最も近いInt へ切り上げられます。文字列が Decimal に変換できない場合、結果は Undefined です。

その他の値 Undefined。

cos(10 進数)数値のコサインをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例:

cos(0) = 1.

引数の型 結果

Int Decimal (倍精度で)、引数のコサイン。仮想上の結果は、Undefined として返されます。

Decimal Decimal (倍精度で)、引数のコサイン。仮想上の結果は、Undefined として返されます。

Boolean Undefined。

String Decimal (倍精度で)、引数のコサイン。文字列が Decimal に変換できない場合、結果はUndefined です。仮想上の結果は、Undefinedとして返されます。

配列 Undefined。

オブジェクト Undefined。

55

Page 61: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドcosh(10 進数)

引数の型 結果

Null Undefined。

未定義 Undefined。

cosh(10 進数)数値のハイパーボリックコサインをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: cosh(2.3) = 5.037220649268761。

引数の型 結果

Int Decimal (倍精度で)、引数のハイパーボリックコサイン。仮想上の結果は、Undefined として返されます。

Decimal Decimal (倍精度で)、引数のハイパーボリックコサイン。仮想上の結果は、Undefined として返されます。

Boolean Undefined。

String Decimal (倍精度で)、引数のハイパーボリックコサイン。文字列が Decimal に変換できない場合、結果は Undefined です。仮想上の結果は、Undefined として返されます。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

exp(10 進数)e を Decimal 引数の累乗にして返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: exp(1) = e。

引数の型 結果

Int Decimal(倍精度で)、e ^ 引数。

Decimal Decimal(倍精度で)、e ^ 引数。

String Decimal (倍精度で)、e ^ 引数。Stringが Decimal に変換できない場合、結果はUndefined です。

その他の値 Undefined。

56

Page 62: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドln(10 進数)

ln(10 進数)引数の自然対数を返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: ln(e) = 1。

引数の型 結果

Int Decimal (倍精度で)、引数の自然対数。

Decimal Decimal (倍精度で)、引数の自然対数。

Boolean Undefined。

String Decimal (倍精度で)、引数の自然対数。文字列が Decimal に変換できない場合、結果はUndefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

log(10 進数)引数の 10 を底とする対数を返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: log(100) = 2.0。

引数の型 結果

Int Decimal (倍精度で)、引数の 10 を底とした対数。

Decimal Decimal (倍精度で)、引数の 10 を底とした対数。

Boolean Undefined。

String Decimal (倍精度で)、引数の 10 を底とした対数。String が Decimal に変換できない場合、結果は Undefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

mod(10 進数、10 進数)最初の引数を 2 番目の引数で割ったときの剰余を返します。同じモジュロ機能に挿入演算子として「%」も使用できます。

57

Page 63: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドpower(10 進数、10 進数)

例: mod(8, 3) = 2。

左のオペランド 右のオペランド 出力

Int Int Int、最初の引数を 2 番目の引数で割ったときの剰余。

Int / Decimal Int / Decimal Decimal、最初の引数を 2 番目のオペランドで割ったときの剰余。

String / Int / Decimal String / Int / Decimal すべての文字列を Decimal に変換した場合、結果は、最初の引数を 2 番目の引数で割ったときの剰余です。そうでない場合は、Undefined です。

その他の値 その他の値 Undefined。

power(10 進数、10 進数)最初の引数を 2 番目の引数の累乗にして返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: power(2, 5) = 32.0。

引数の型 1 引数の型 2 出力

Int / Decimal Int / Decimal Decimal(倍精度で)、最初の引数を 2 番目の引数の累乗にします。

Int / Decimal / String Int / Decimal String Decimal(倍精度で)、最初の引数を 2 番目の引数の累乗にします。すべての文字列は Decimalに変換されます。いずれかのString が Decimal への変換に失敗したら、結果は Undefinedです。

その他の値 その他の値 Undefined。

round(10 進数)指定の Decimal を最も近い Int に丸めます。Decimal が 2 つの Int 値と等距離である場合 (例:0.5)、Decimal は丸められます。

例: Round(1.2) = 1。

Round(1.5) = 2.

Round(1.7) = 2.

Round(-1.1) = -1.

58

Page 64: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドsign(10 進数)

Round(-1.5) = -2.

引数の型 結果

Int 引数。

Decimal Decimal は、最も近い Int に切り下げられます。

String Decimal は、最も近い Int に切り下げられます。文字列が Decimal に変換できない場合、結果はUndefined です。

その他の値 Undefined。

sign(10 進数)指定された数値の符号を返します。引数の符号が正の場合、1 を返します。引数の符号が負の場合、-1 を返します。引数が 0 の場合、0 を返します。

例:

sign(-7) = -1.

sign(0) = 0。

sign(13) = 1.

引数の型 結果

Int Int、Int の値の符号。

Decimal Int、Decimal の値の符号。

String Int、Decimal の値の符号。文字列は Decimalの値に変換され、Decimal の値の符号が返されます。String が Decimal に変換できない場合、結果は Undefined です。

その他の値 Undefined。

sin(10 進数)数値のサインをラジアンで返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: sin(0) = 0.0

引数の型 結果

Int Decimal (倍精度で)、引数のサイン。

Decimal Decimal (倍精度で)、引数のサイン。

Boolean Undefined。

59

Page 65: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドsinh(10 進数)

引数の型 結果

String Decimal (倍精度で)、引数のサイン。文字列が Decimal に変換できない場合、結果はUndefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

Undefined Undefined。

sinh(10 進数)数値のハイパーボリックサインを返します。Decimal 値は関数適用の前に倍精度に丸められます。結果は倍精度の Decimal 値です。

例: sinh(2.3) = 4.936961805545957

引数の型 結果

Int Decimal (倍精度で)、引数のハイパーボリックサイン。

Decimal Decimal (倍精度で)、引数のハイパーボリックサイン。

Boolean Undefined。

String Decimal (倍精度で)、引数のハイパーボリックサイン。文字列が Decimal に変換できない場合、結果は Undefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

sqrt(10 進数)数値の平方根を返します。Decimal 引数は関数適用の前に倍精度に丸められます。

例: sqrt(9) = 3.0。

引数の型 結果

Int 引数の平方根

Decimal 引数の平方根

Boolean Undefined。

60

Page 66: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドtan(10 進数)

引数の型 結果

String 引数の平方根。文字列が Decimal に変換できない場合、結果は Undefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

tan(10 進数)数値のタンジェントをラジアンで返します。Decimal 値は関数適用の前に倍精度に丸められます。

例: tan(3) = -0.1425465430742778

引数の型 結果

Int Decimal (倍精度で)、引数のタンジェント。

Decimal Decimal (倍精度で)、引数のタンジェント。

Boolean Undefined。

String Decimal (倍精度で)、引数のタンジェント。文字列が Decimal に変換できない場合、結果はUndefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

tanh(10 進数)数値のハイパーボリックタンジェントをラジアンで返します。Decimal 値は関数適用の前に倍精度に丸められます。

例: tanh(2.3) = 0.9800963962661914

引数の型 結果

Int Decimal (倍精度で)、引数のハイパーボリックタンジェント。

Decimal Decimal (倍精度で)、引数のハイパーボリックタンジェント。

Boolean Undefined。

61

Page 67: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドtrunc(10 進数、Int)

引数の型 結果

String Decimal (倍精度で)、引数のハイパーボリックタンジェント。文字列が Decimal に変換できない場合、結果は Undefined です。

配列 Undefined。

オブジェクト Undefined。

Null Undefined。

未定義 Undefined。

trunc(10 進数、Int)2 番目の引数で指定された Decimal の場所の数で最初の引数を切り捨てます。2 番目の引数がゼロよりより少ない場合は、ゼロに設定されます。2 番目の引数が 34 より大きい場合は、34 に設定されます。末尾のゼロは結果から省かれます。

例:

trunc(2.3, 0) = 2.

trunc(2.3123, 2 = 2.31.

trunc(2.888, 2) = 2.88.

(2.00, 5) = 2.

引数の型 1 引数の型 2 結果

Int Int ソース値。

Int / Decimal / String Int / Decimal 最初の引数は 2 番目の引数で説明された長さに切り捨てられます。2 番目の引数は、Intでなければ、最も近い Int に切り下げられます。String はDecimal 値に変換されます。文字列変換が失敗した場合、結果は Undefined です。

その他の値   Undefined。

RunPipelineActivity の例パイプラインアクティビティをテストするために、「RunPipelineActivity」コマンドを使用する方法の例を以下に示します。この例では、Math アクティビティをテストします。

1. テストするパイプラインアクティビティの定義が含まれている「maths.json」ファイルを作成します。

{ "math": { "name": "MyMathActivity",

62

Page 68: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity の例

"math": "((temp - 32) * 5.0) / 9.0", "attribute": "tempC" }}

2. パイプラインアクティビティをテストするために使用されるサンプルペイロードが含まれている「payloads.json」ファイルを作成します。

[ "{\"humidity\": 52, \"temp\": 68 }", "{\"humidity\": 52, \"temp\": 32 }"]

3. コマンドラインから「RunPipelineActivities」を呼び出します。

aws iotanalytics run-pipeline-activity --pipeline-activity file://maths.json --payloads file://payloads.json

4. これを実行すると、次の結果になります。

{ "logResult": "", "payloads": [ "eyJodW1pZGl0eSI6NTIsInRlbXAiOjY4LCJ0ZW1wQyI6MjB9", "eyJodW1pZGl0eSI6NTIsInRlbXAiOjMyLCJ0ZW1wQyI6MH0=" ]}

5. 結果に記載される「ペイロード」は、Base 64 でエンコードされた文字列です。これらの文字列がデコードされると、次のような結果が得られます。

{"humidity":52,"temp":68,"tempC":20}{"humidity":52,"temp":32,"tempC":0}

63

Page 69: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

チャネルデータの再処理AWS IoT Analytics では、チャネルデータを再処理できます。つまり、パイプラインを通じて既存の生データを再生できます。これは以下の場合に便利です。

• 最初からやり直さずに、既存の取り込まれたデータを再生する。• パイプラインを更新し、既存のデータに変更を反映して最新の状態にする。• 顧客ベースのストレージオプションまたはチャネルやデータストアに対する権限を変更し、これらの変

更前に取り込まれたデータを今後のデータセットの内容に含めたい。

既存の生データの再処理をトリガーするには、StartPipelineReprocessing (p. 210) コマンドを使用します。次の点に注意してください。

• 「startTime」パラメータと「endTime」パラメータは、生データが取り込まれた時間を指定しますが、これらはおおよその推定時間です。最も近い時間に切り上げることができます。「startTime」は当該時間を含みますが、「endTime」は当該時間を含みません。

• コマンドは再処理を非同期的に起動し、ただちに返ります。• 再処理されるメッセージは、最初の処理順で処理される保証はありません。ほぼ同じですが、正確では

ありません。• 未加工データの再処理には追加コストが発生します。

既存の生データの再処理をキャンセルするには、CancelPipelineReprocessing (p. 133) コマンドを使用します。

再処理のステータスを確認するには、DescribePipeline (p. 178) コマンドを使用します。レスポンスの「reprocessingSummaries」フィールドを参照してください。

64

Page 70: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドユースケース

ワークフローを自動化するAWS IoT Analytics は、AWS IoT 用の高度なデータ分析を提供します。自動的に IoT データを収集、処理、保存でき、データ分析と機械学習ツールを使用して分析できます。独自のカスタム分析コードまたはJupyter ノートブックをホストするコンテナを実行するか、サードパーティーのカスタムコードコンテナを使用することで、既存の分析ツールを再作成する必要がなくなります。データストアからデータ入力を取得して、自動化ワークフローにフィードするために、次の機能を使用できます。

定期的なスケジュールでデータセットコンテンツを作成します。

データセットコンテンツの自動的な作成をスケジュールするには、CreateDataset を呼び出すときにトリガーを指定できます (triggers:schedule:expression を参照してください)。データストアに到着したデータは、データセットコンテンツを作成するために使用されます。(actions:queryAction:sqlQuery) SQL クエリを使用して使用するフィールドを選択します。

新しいデータセットコンテンツが前回以降に到着したデータのみを含むように、重複しない継続した時間間隔を定義します。actions:queryAction:filters:deltaTime および :offsetSecondsフィールドを使用して、デルタ時間間隔を指定します。次に、時間間隔が経過した時点でータセットコンテンツを作成するためのトリガーを指定します。例 6 -- デルタ枠を使用して SQL データセットを作成する (CLI) (p. 82) を参照してください。

別のデータセットの完了時にデータセットコンテンツを作成します。

別のデータセットコンテンツの作成が完了したときに、新しいデータセットコンテンツの作成をトリガーします (triggers:dataset:name)。

分析アプリケーションを自動的に実行します。

独自のカスタムデータ分析アプリケーションをコンテナ化し、別のデータセットのコンテンツが作成されたときにそれらを実行するようにトリガーします。このようにして、繰り返しスケジュールで作成されたデータセットのコンテンツからのデータをアプリケーションに提供できます。アプリケーション内から分析結果に対して自動的にアクションを実行できます。(actions:containerAction)

ユースケースOpEx を削減する製品の品質測定の自動化

圧力、湿度や温度を測定するスマートバルブを使用したシステムを導入しています。システムは定期的に、またバルブの開閉時など、特定のイベントが発生したときにもイベントを照合します。AWSIoT Analytics を使用すると、これらの期間にデータを重複することなく集計した分析を自動化し、最終精神の品質で KPI リポートを作成できます。各製品バッチを処理後に全体的な製品の品質を測定し、最大化された実行量を使用することで運用支出を軽減できます。

多数のデバイスの分析を自動化

デバイスで 100 秒ごとに生成されたデータで 15 分ごとに分析 (アルゴリズム、データサイエンス、または ML for KPI) を実行します。次の分析の実行用に各分析サイクルは生成され、状態は保存されます。各分析で、指定された時間枠内で受信されたデータを使用したい場合があります。AWS IoTAnalytics を使用すれば、分析を調整して、各実行ごとに KPI およびレポートを作成してから、今後の分析用にこのデータを保存できます。

異常検出の自動化

AWS IoT Analytics では、データストアに到着した新しいデータで 15 分ごとに手動で実行する必要があった異常検出ワークフローを自動化できます。また、指定する期間内のデバイスの使用度と上部ユーザーを示すダッシュボードを自動化することもできます。

65

Page 71: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド使用方法

産業プロセス成果の予測

インダストリアルプロダクションラインがあります。AWS IoT Analytics に送信されたデータを使用して (使用可能なプロセスの測定を含む)、分析ワークフローを運用可能にすることでプロセスの成果を予測できます。モデル用のデータは M x N マトリックスで整理でき、この各行にはラボのサンプルが取得された複数の時系列からのデータが含まれています。AWS IoT Analytics は、デルタ枠を作成し、KPI を作成するデータサイエンスツールを使用して分析のワークフローを運用可能にし、測定デバイスの状態を保存するために役立ちます。

使用方法Note

このセクションでは、独自の Docker コンテナを構築する方法について説明します。サードパーティー製の Docker コンテナを再利用するとセキュリティ上のリスクがあります。これらのコンテナはユーザーの許可を得て任意のコードを実行できます。使用する前に、サードパーティー製のコンテナの著者を信頼できることを確認します。

最後に分析が実行されてから到着したデータの定期的なデータ分析を設定するための手順を以下に示します。

1. データアプリケーションに加えて必要なすべてのライブラリあるいは他の依存関係を含む Docker コンテナを作成します。

IotAnalytics Jupyter 拡張機能には、コンテナ化プロセスを支援するためのコンテナ化 API が用意されています。また、必要なデータ分析や計算を実行するためのアプリケーションツールセットを作成または組み立てた独自の作成のイメージを実行することもできます。AWS IoT Analytics では、入力データの送信元を定義し、変数によってアプリケーションと Docker コンテナの出力データの送信先をコンテナ化することができます。(カスタム Docker コンテナ入力/出力変数 (p. 68)では、カスタムコンテナで変数を使用する詳細を参照できます。)

2. コンテナを Amazon ECR レジストリにアップロードします。3. データストアを作成して、デバイスからメッセージ (データ) を受信して保存します

(iotanalytics:CreateDatastore (p. 146))。4. メッセージが送信されるチャネルを作成します (iotanalytics:CreateChannel (p. 134))。5. チャネルをデータストアに接続するパイプラインを作成します (iotanalytics:CreatePipeline (p. 150))。6. メッセージデータを AWS IoT Analytics に送信するためのアクセス権限を付与する IAM ロールを作成し

ます (iam:CreateRole)。7. チャネルをメッセージデータの送信元に接続するために SQL クエリを使用する IoT を作成します

(iot:CreateTopicRule フィールド topicRulePayload:actions:iotAnalytics)。デバイスが適切なトピックを MQTT を介してメッセージを送信すると、使用するチャネルにルーティングされます。また、iotanalytics:BatchPutMessage (p. 131) を使用して、AWS SDK あるいは CLI を使用できるデバイスからチャネルにメッセージを直接送信することもできます。

8. タイムスケジュールによるトリガーで作成される SQL データセットを作成します(iotanalytics:CreateDatase (p. 137)、field trigger:schedule)。この場合、データの収集に使用する間隔を N 分/時で表します。

適切な SQL クエリでクエリアクションを指定して、データフィールドを選択します (field"actions:queryAction:sqlQuery)。

また、メッセージデータに適用する事前フィルタを指定して、アクションが最後に実行されてから到着したメッセージに限定することもできます。(Fieldactions:queryAction:filters:deltaTime:timeExpression はメッセージの時間が判断される式を提供し、field actions:queryAction:filters:deltaTime:offsetSeconds はメッセージの到着で発生する可能性があるレイテンシーを表します。)

66

Page 72: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド使用方法

トリガーのスケジュールに加えて、事前フィルタによって「デルタ枠」が決まります。それぞれの新しい SQL データセットは、SQL データセットが最後に作成されてから受信したメッセージを使用して作成されます。(SQL データセットが初めて作成された場合はどうなるのでしょう。 「最後に」データセットが作成されたと予測される時期は、スケジュールおよび事前フィルタに基づいて決定されます。)

9. 最初のデータセット (CreateDataset (p. 137) フィールド trigger:dataset) を作成するとトリガーされる別のデータセットを作成します。このデータセットでは、最初のステップで作成した Docker コンテナ示して実行に必要な情報を提供する「コンテナアクション」(フィールドactions:containerAction) を指定します。また、以下も指定します。• アカウントに保存された docker コンテナの ARN (image)。• コンテナアクション (executionRoleArn) を実行するために、システムが必要なリソースにアクセ

スできるためにアクセス許可を付与するロールの ARN。• コンテナアクションを実行するリソースの設定 (resourceConfiguration)。• コンテナアクション (computeType) を実行するために使用される計算リソースのタイプ。使用

できる値は次のとおりです。ACU_1 [vCPU=4、メモリ=16GiB] または ACU_2 [vCPU=8、メモリ=32GiB])。

• コンテナアクション (volumeSizeInGB) を実行するために使用されるリソースインスタンスで利用できる永続的ストレージのサイズ (GB 単位)。

• アプリケーションの実行のコンテキストで使用される変数の値 (基本的には、アプリケーションにわたされるパラメータ) (variables)。

これらの変数は、コンテナが実行されるときに置き換えられます。これにより、データセットコンテンツの作成時に提供された別の変数 (パラメータ) を使用して、同じコンテナを実行できます。

IotAnalytics Jupyter 拡張機能は、ノートブックでこの変数を自動的に認識し、コンテナ化プロセスの一部として利用可能にすることで、このプロセスを簡略化します。認識された変数を選択することも、独自のカスタム値を追加することもできます。コンテナを実行する前に、システムによってこの各変数は実行時の現在値で置き換えられます。

• 変数の 1 つは、最後のコンテンツがアプリケーションへの入力として使用されるデータセットの名前です (前のステップで作成したデータセットの名前になります)(datasetContentVersionValue:datasetName)。

• 別の変数は、出力データセットコンテンツが保存されている出力ファイルの URI を指定します (通常は、S3 バケット内のファイルの URI です) (outputFileUriValue:filename)。

データセットを生成する SQL クエリとデルタ枠、およびアプリケーションのコンテナを使用して、AWSIoT Analytics は、デルタ枠のデータで指定した間隔で実行されるデータセットの本番稼働をスケジュールし、必要な出力を行って通知を送信します。

必要に応じていつでもデータセットアプリケーションの稼働を一時停止して、再開できます。データセットアプリケーションの稼働を再開するとき、AWS IoT Analytics のデフォルト設定では、最後の実行以降に到着し、まだ分析済みではないすべてのデータを補足します。また、デフォルトの補足オプションのほかにも、データセットジョブの稼働を再開する方法を設定することができます。一連の連続実行を行うことで、複数の固定長枠 (デルタ枠の長さを定義) で補足を行うことができます。また、デルタ枠で指定したサイズ内に収まるような新しく到着したデータのみを取得して、データセットアプリケーションを再開することもできます。このオプションでは、デルタ枠の長さを超えるすべてのデータはスキップされます。

別のデータセット作成時にトリガーされるデータセットの作成/定義における以下の制限に注意してください。

• コンテナデータセットのみ、SQL データセットからトリガーできます。• SQL データセットは、最大で 10 個のコンテナデータセットをトリガーできます。

SQL データセットからトリガーされるコンテナデータセットを作成するときに、次のエラーが返される場合があります。

67

Page 73: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドカスタム Docker コンテナの入力/出力変数

• 「データセットのトリガーはコンテナデータセットのみに追加できます」• 「1 つのトリガーデータセットのみ可能です」

このエラーは、2 つの異なる SQL データセットからトリガーされたコンテナデータセットを定義しようとする場合に発生します。

• 「トリガーするデータセット <dataset-name> がコンテナデータセットからトリガーできません」

このエラーは、別のコンテナデータセットからトリガーされたコンテナデータセットを定義しようとする場合に発生します。

• 「<N> データセットはすでに <dataset-name> データセットに依存しています」

このエラーは、すでに 10 個のコンテナデータセットをトリガーした SQL データセットからトリガーされる別のコンテナデータセットを定義しようとする場合に発生します。

• 「厳密に 1 つのトリガータイプを指定する必要があります。」

このエラーは、スケジュールされたトリガーとデータセットトリガーの両方からトリガーされたデータセットを定義しようとする場合に発生します。

カスタム Docker コンテナの入力/出力変数このセクションでは、カスタム Docker イメージを実行するプログラムが入力変数を読み取り、出力をアップロードする方法を示しています。

Params ファイル

入力変数と出力のアップロード先は、Docker イメージを実行するインスタンスの JSON ファイル (/opt/ml/input/data/iotanalytics/params) に保存されています。このファイルの内容の例を示します。

{ "Context": { "OutputUris": { "html": "s3://aws-iot-analytics-dataset-xxxxxxx/notebook/results/iotanalytics-xxxxxxx/output.html", "ipynb": "s3://aws-iot-analytics-dataset-xxxxxxx/notebook/results/iotanalytics-xxxxxxx/output.ipynb" } }, "Variables": { "source_dataset_name": "mydataset", "source_dataset_version_id": "xxxx", "example_var": "hello world!", "custom_output": "s3://aws-iot-analytics/dataset-xxxxxxx/notebook/results/iotanalytics-xxxxxxx/output.txt" }}

データセットの名前とバージョン ID に加えて、Variables セクションにはiotanalytics:CreateDataset 呼び出しで指定される変数が含まれています。この例では、変数example_var には 値 hello world! が与えられています。また、custom_output 変数ではカスタム出力 URI も提供されています。OutputUris フィールドには、コンテナがその出力をアップロードできるデフォルトの場所が含まれています。この例では、デフォルトの出力 URI は ipynb 出力および html 出力の両方に提供されています。

入力変数

Docker イメージによって起動されるプログラムは、params ファイルから変数を読み取ることができます。以下に示しているのは、params ファイルを開き、それを解析して、example_var 変数の値を印刷するプログラムの例を以下に示します。

68

Page 74: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドアクセス許可

import json

with open("/opt/ml/input/data/iotanalytics/params") as param_file: params = json.loads(param_file.read())example_var = params["Variables"]["example_var"]print(example_var)

出力のアップロード

Docker イメージから起動されたプログラムは、AWS S3 の場所に出力を保存する場合もあります。この出力は、"bucket-owner-full-control" アクセスコントロールリストを使用してロードする必要があります。このアクセスリストは、アップロードされた出力に対して AWS IoT Analytics サービスによるコントロールを付与します。この例では、前回のアクセス許可を拡張して、params ファイルの custom_output で定義される S3 の場所に example_var のコンテンツをアップロードします。

import boto3import jsonfrom urllib.parse import urlparse

ACCESS_CONTROL_LIST = "bucket-owner-full-control"

with open("/opt/ml/input/data/iotanalytics/params") as param_file: params = json.loads(param_file.read())example_var = params["Variables"]["example_var"]

outputUri = params["Variables"]["custom_output"]# break the S3 path into a bucket and keybucket = urlparse(outputUri).netlockey = urlparse(outputUri).path.lstrip("/")

s3_client = boto3.client("s3")s3_client.put_object(Bucket=bucket, Key=key, Body=example_var, ACL=ACCESS_CONTROL_LIST)

アクセス許可2 つのロールを作成する必要があります。1 つのロールは、コンテナ化されたノートブックではなく、SageMaker インスタンスを起動するアクセス許可を付与します。もう 1 つのロールはコンテナを実行するために必要となります。

最初のロールは、自動的に作成するか、または手動で作成できます。AWS IoT Analytics コンソールを使用して新しい Amazon SageMaker インスタンスを作成する場合、SageMaker インスタンスを実行してノートブックをコンテナ化するために必要なすべての権限を付与する新しいロールを自動的に作成するオプションが提供されます。または、手動でこれらの権限を持つロールを作成できます。これを行うには、「AmazonSageMakerFullAccess」ポリシーがアタッチされたロールを作成し、次のポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchDeleteImage", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:CreateRepository", "ecr:DescribeRepositories", "ecr:GetAuthorizationToken",

69

Page 75: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドアクセス許可

"ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::iotanalytics-notebook-containers/*" } ]}

コンテナを実行する権限を付与する 2 番目のロールを手動で作成する必要があります。(AWS IoTAnalytics コンソールを使用して最初のロールを自動的に作成した場合でも、これを行う必要があります。)次のポリシーと信頼ポリシーがアタッチされたロールを作成します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:PutObject", "s3:GetObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::aws-*-dataset-*/*" }, { "Effect": "Allow", "Action": [ "iotanalytics:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets" ], "Resource": "*" }

70

Page 76: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

]}

信頼ポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": ["sagemaker.amazonaws.com", "iotanalytics.amazonaws.com"] }, "Action": "sts:AssumeRole" } ]}

The CreateDataset APIデータセットを作成します。データセットは、「queryAction」(SQL クエリ) または「containerAction」(コンテナ化されたアプリケーションの実行) を適用して保存されたデータから取得されたデータを保存します。このオペレーションはデータセットのスケルトンを作成します。データセットは、「CreateDatasetContent」を呼び出すことで手動で、あるいは指定した「trigger」に応じて自動で入力することができます。

CLI の概要:

aws iotanalytics create-dataset --dataset-name <value> --actions <value>[--triggers <value>][--content-delivery-rules <value>][--retention-period <value>][--versioning-configuration <value>][--tags <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "actions": [ { "actionName": "string", "queryAction": { "sqlQuery": "string", "filters": [ { "deltaTime": { "offsetSeconds": "integer", "timeExpression": "string" } } ] },

71

Page 77: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

"containerAction": { "image": "string", "executionRoleArn": "string", "resourceConfiguration": { "computeType": "string", "volumeSizeInGB": "integer" }, "variables": [ { "name": "string", "stringValue": "string", "doubleValue": "double", "datasetContentVersionValue": { "datasetName": "string" }, "outputFileUriValue": { "fileName": "string" } } ] } } ], "triggers": [ { "schedule": { "expression": "string" }, "dataset": { "name": "string" } } ], "contentDeliveryRules": [ { "entryName": "string", "destination": { "iotEventsDestinationConfiguration": { "inputName": "string", "roleArn": "string" }, "s3DestinationConfiguration": { "bucket": "string", "key": "string", "glueConfiguration": { "tableName": "string", "databaseName": "string" }, "roleArn": "string" } } } ], "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "versioningConfiguration": { "unlimited": "boolean", "maxVersions": "integer" }, "tags": [ { "key": "string", "value": "string" }

72

Page 78: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

]}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• アクション

型: リストメンバー: DatasetAction

データセットコンテンツを作成するアクションのリスト。• actionName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットコンテンツを自動的に作成するデータセットアクションの名前。• queryAction

型: SqlQueryDatasetAction

自動的にデータセットコンテンツを作成するために SQL クエリを使用する「SqlQueryDatasetAction」オブジェクト。

• sqlQuery

型: 文字列

SQL クエリ文字列。• フィルタ

型: リストメンバー: QueryFilter

メッセージデータには事前フィルターが適用されます。• deltaTime

型: デルタ時間

アクションが最後に実行されてから到着したデータに制限するために使用されます。• offsetSeconds

型: Integer Java クラス: java.lang.Integer

メッセージデータで予測される処理中のラグタイムの秒数。メッセージデータを使用して、指定された時間枠でデータセットのコンテンツを作成するとき、処理の開始時に一部のメッセージデータがまだ処理中であり、処理されるための時間内に到着しない場合があります。このフィールドを使用すると、メッセージデータの処理中時間を考慮できます。これによって、以前の時間枠で処理されなかったデータが次回の時間枠に含まれるようになります。これを使用しない場合、逃したメッセージデータは次回の時間枠中に処理から除外されます。これは、タイムスタンプがこのメッセージデータを前回の時間枠内に配置するためです。

• timeExpression

型: 文字列

メッセージデータの時間が判断されることがある式。これは、タイムスタンプフィールドの名前、あるいは、メッセージデータが生成された時間を得るために使用される SQL 式となります。

73

Page 79: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

• containerAction

型: ContainerDatasetAction

システムがコンテナ化されたアプリケーションを実行して、データセットコンテンツを作成できるようにする情報。アプリケーションは、必要なサポートされるライブラリとともに Docker コンテナに含まれている必要があります。

• イメージ

型: 文字列 (長さ - 最大: 255)

アカウントに保存された Docker コンテナの ARN。Docker コンテナにはアプリケーションと必要なサポートライブラリが含まれ、データセットコンテンツを生成するために使用されます。

• executionRoleArn

型: 文字列 (長さ - 最大:2048 最小: 20)

「containerAction」を実行するために、システムが必要なリソースにアクセスできるためにアクセス許可を付与するロールの ARN。これには、最低限でもコンテナ化されたアプリケーションへの入力であるデータセットコンテンツを取得するアクセス権限がふくまれています。

• resourceConfiguration

型: ResourceConfiguration

「containerAction」を実行するリソースの設定。• computeType

型: 文字列

「containerAction」を実行するために使用されるコンピューティングリソースのタイプ。使用できる値は次のとおりです: ACU_1 (vCPU=4、メモリ=16GiB) あるいは ACU_2 (vCPU=8、メモリ=32GiB)。enum: ACU_1 | ACU_2

• volumeSizeInGB

型: 整数範囲 - 最大:50 最小:1

「containerAction」(最小: 1、最大: 50) を実行するために使用されるリソースインスタンスで利用できる永続的ストレージのサイズ (GB 単位)。

• 変数

型: リストメンバー: 変数

コンテナ化されたアプリケーションの実行のコンテキストで使用される変数の値 (基本的には、アプリケーションにわたされるパラメータ)。各変数には、「stringValue」、「datasetContentVersionValue」あるいは「outputFileUriValue」のいずれか 1 つから与えられた名前と値が必要です。

• name

型: 文字列 (長さ - 最大: 256 最小: 1)

変数の名前。• stringValue

型: 文字列 (長さ - 最大: 1024 最小: 0)

変数の値 (文字列)。• datasetContentVersionValue

型: DatasetContentVersionValue

74

Page 80: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

データセットコンテンツのバージョンを指定する変数の値 (構造体)。• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

最後のコンテンツがノートブックあるいはアプリケーションへの入力として使用されたデータセットの名前。

• outputFileUriValue

型: OutputFileUriValue

出力ファイルの URI を指定する変数の値 (構造体)。• fileName

型: 文字列 (パターン: [w.-]{1,255})

データセットコンテンツが保存されている場所の URI。通常は、S3 バケット内のファイルの URI です。

• トリガー

型: リストメンバー: DatasetTrigger

トリガーのリスト。トリガーによって、指定された時間間隔、あるいは他のデータセットのコンテンツが作成されたときにデータセットコンテンツが入力されます。トリガーのリストは空にすることも、最大 5 個の DataSetTrigger オブジェクトを含めることもできます。

• schedule

型: スケジュール

トリガーが開始される "スケジュール"。• expression

型: 文字列

更新がいつトリガーされるかを定義する式。詳細については、Amazon CloudWatch Events のユーザーガイドの「ルールのスケジュール式」を参照してください。

• データセット

型: TriggeringDataset

このデータセットのコンテンツの作成をトリガーするコンテンツ作成があるデータセット。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

新しいデータセットのコンテンツの生成をトリガーするコンテンツ作成があるデータセットの名前。• contentDeliveryRules

型: list member: DatasetContentDeliveryRule

データセットコンテンツが作成されると、ここで指定した送信先にデータが配信されます。• entryName

型: 文字列

データセットコンテンツ配信ルールエントリの名前。75

Page 81: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

• 送信先

型: DatasetContentDeliveryDestination

データセットコンテンツが配信される送信先。• iotEventsDestinationConfiguration

型: IotEventsDestinationConfiguration

データセットコンテンツを AWS IoT Events に配信するための設定情報。• inputName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z][a-zA-Z0-9_]*$)

データセットコンテンツが配信される AWS IoT Events 入力の名前。• roleArn

型: 文字列 (長さ - 最大:2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して、データセットコンテンツを AWS IoT Events 入力に配信できるようにするロールの ARN。

• s3DestinationConfiguration

型: S3DestinationConfiguration

データセットコンテンツを Amazon S3 に配信するための設定情報。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データセットコンテンツが配信される Amazon S3 バケットの名前。• key

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*$)

データセットコンテンツのオブジェクトのキー。Amazon S3 バケット内の各オブジェクトは、バケット内で一意の識別子であるキーを持ちます (バケット内の各オブジェクトは、厳密に 1 個のキーを持ちます)。

• glueConfiguration

型: GlueConfiguration

AWS Glue ETL (抽出、変換、ロード) サービスと連携するための設定情報。• tableName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

ETL (抽出、変換、ロード) の操作を実行するために使用される AWS Glue データカタログのテーブルの名前。(AWS Glue データカタログのテーブルには、パーティション分割されたデータと、データのソースおよびターゲットの説明が含まれます)。

• databaseName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

テーブルが配置されている AWS Glue データカタログにあるデータベースの名前。(AWS Glue データカタログのデータベースには Glue データテーブルが含まれています)。

76

Page 82: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

• roleArn

型: 文字列 (長さ - 最大:2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースと AWS Glue リソースを操作できるようにするロールの ARN。

• retentionPeriod

型: RetentionPeriod

[オプション] データセットのデータセットコンテンツのバージョンが保持される期間 (日数)。指定しない場合、または null に設定されている場合、データセットコンテンツのバージョンが保持される期間は最大 90 日間です。保持されるデータセットコンテンツのバージョンの数は、versioningConfigurationパラメータによって決定されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• versioningConfiguration

型: VersioningConfiguration

[オプション] 保持されるデータセットコンテンツのバージョンの数。指定しない、または null に設定されている場合、最終バージョン、および最後に成功したバージョン (この 2 つが異なる場合)は、"retentionPeriod" パラメータで指定されている期間保持されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

型: ブール

true の場合、データセットコンテンツのバージョンは無制限で保持されます。• maxVersions

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

保持されるデータセットコンテンツのバージョンの数。"unlimited" パラメータは false であることが必要です。

• タグ

型: リストメンバー: タグ

データセットを管理するために使用できるメタデータ。• key

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

77

Page 83: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドThe CreateDataset API

タグの値。

出力:

{ "datasetName": "string", "datasetArn": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• datasetArn

型: 文字列

データセットの ARN。• retentionPeriod

型: RetentionPeriod

データセットのデータセットコンテンツが保持される期間 (日数)。• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InternalFailureException

内部エラーがあった。

78

Page 84: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset の使用例

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

CreateDataset の使用例例 1 -- SQL データセットを作成する (java)CreateDatasetRequest request = new CreateDatasetRequest();request.setDatasetName(dataSetName);DatasetAction action = new DatasetAction();

//Create Actionaction.setActionName("SQLAction1");action.setQueryAction(new SqlQueryDatasetAction().withSqlQuery("select * from DataStoreName"));

// Add Action to Actions ListList<DatasetAction> actions = new ArrayList<DatasetAction>();actions.add(action);

//Create TriggerDatasetTrigger trigger = new DatasetTrigger();trigger.setSchedule(new Schedule().withExpression("cron(0 12 * * ? *)"));

//Add Trigger to Triggers ListList<DatasetTrigger> triggers = new ArrayList<DatasetTrigger>();triggers.add(trigger);

// Add Triggers and Actions to CreateDatasetRequest objectrequest.setActions(actions);request.setTriggers(triggers);

// Add RetentionPeriod to CreateDatasetRequest objectrequest.setRetentionPeriod(new RetentionPeriod().withNumberOfDays(10));final CreateDatasetResult result = iot.createDataset(request);

成功した出力:

{DatasetName: <datatsetName>, DatasetArn: <datatsetARN>, RetentionPeriod: {unlimited: true} or {numberOfDays: 10, unlimited: false}}

79

Page 85: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド例 2 -- デルタ枠を使用して SQLデータセットを作成する (java)

例 2 -- デルタ枠を使用して SQL データセットを作成する (java)CreateDatasetRequest request = new CreateDatasetRequest();request.setDatasetName(dataSetName);DatasetAction action = new DatasetAction();

//Create Filter for DeltaTimeQueryFilter deltaTimeFilter = new QueryFilter();deltaTimeFilter.withDeltaTime( new DeltaTime() .withOffsetSeconds(-1 * EstimatedDataDelayInSeconds) .withTimeExpression("from_unixtime(timestamp)"));

//Create Actionaction.setActionName("SQLActionWithDeltaTime");action.setQueryAction(new SqlQueryDatasetAction() .withSqlQuery("SELECT * from DataStoreName") .withFilters(deltaTimeFilter));

// Add Action to Actions ListList<DatasetAction> actions = new ArrayList<DatasetAction>();actions.add(action);

//Create TriggerDatasetTrigger trigger = new DatasetTrigger();trigger.setSchedule(new Schedule().withExpression("cron(0 12 * * ? *)"));

//Add Trigger to Triggers ListList<DatasetTrigger> triggers = new ArrayList<DatasetTrigger>();triggers.add(trigger);

// Add Triggers and Actions to CreateDatasetRequest objectrequest.setActions(actions);request.setTriggers(triggers);

// Add RetentionPeriod to CreateDatasetRequest objectrequest.setRetentionPeriod(new RetentionPeriod().withNumberOfDays(10));final CreateDatasetResult result = iot.createDataset(request);

成功した出力:

{DatasetName: <datatsetName>, DatasetArn: <datatsetARN>, RetentionPeriod: {unlimited: true} or {numberOfDays: 10, unlimited: false}}

例 3 -- 独自のスケジュールトリガーを使用してコンテナデータセットを作成する (java)CreateDatasetRequest request = new CreateDatasetRequest();request.setDatasetName(dataSetName);DatasetAction action = new DatasetAction();

//Create Actionaction.setActionName("ContainerActionDataset");action.setContainerAction(new ContainerDatasetAction() .withImage(ImageURI) .withExecutionRoleArn(ExecutionRoleArn) .withResourceConfiguration(

80

Page 86: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド例 4 -- SQL データセットをトリガーとして使用してコンテナデータセットを作成する (java)

new ResourceConfiguration() .withComputeType(new ComputeType().withAcu(1)) .withVolumeSizeInGB(1)) .withVariables(new Variable() .withName("VariableName") .withStringValue("VariableValue"));

// Add Action to Actions ListList<DatasetAction> actions = new ArrayList<DatasetAction>();actions.add(action);

//Create TriggerDatasetTrigger trigger = new DatasetTrigger();trigger.setSchedule(new Schedule().withExpression("cron(0 12 * * ? *)"));

//Add Trigger to Triggers ListList<DatasetTrigger> triggers = new ArrayList<DatasetTrigger>();triggers.add(trigger);

// Add Triggers and Actions to CreateDatasetRequest objectrequest.setActions(actions);request.setTriggers(triggers);

// Add RetentionPeriod to CreateDatasetRequest objectrequest.setRetentionPeriod(new RetentionPeriod().withNumberOfDays(10));final CreateDatasetResult result = iot.createDataset(request);

成功した出力:

{DatasetName: <datatsetName>, DatasetArn: <datatsetARN>, RetentionPeriod: {unlimited: true} or {numberOfDays: 10, unlimited: false}}

例 4 -- SQL データセットをトリガーとして使用してコンテナデータセットを作成する (java)CreateDatasetRequest request = new CreateDatasetRequest();request.setDatasetName(dataSetName);DatasetAction action = new DatasetAction();

//Create Actionaction.setActionName("ContainerActionDataset");action.setContainerAction(new ContainerDatasetAction() .withImage(ImageURI) .withExecutionRoleArn(ExecutionRoleArn) .withResourceConfiguration( new ResourceConfiguration() .withComputeType(new ComputeType().withAcu(1)) .withVolumeSizeInGB(1)) .withVariables(new Variable() .withName("VariableName") .withStringValue("VariableValue"));

// Add Action to Actions ListList<DatasetAction> actions = new ArrayList<DatasetAction>();actions.add(action);

//Create TriggerDatasetTrigger trigger = new DatasetTrigger() .withDataset(new TriggeringDataset() .withName(TriggeringSQLDataSetName));

81

Page 87: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド例 5 -- SQL データセットを作成する (CLI)

//Add Trigger to Triggers ListList<DatasetTrigger> triggers = new ArrayList<DatasetTrigger>();triggers.add(trigger);

// Add Triggers and Actions to CreateDatasetRequest objectrequest.setActions(actions);request.setTriggers(triggers);final CreateDatasetResult result = iot.createDataset(request);

成功した出力:

{DatasetName: <datatsetName>, DatasetArn: <datatsetARN>}

例 5 -- SQL データセットを作成する (CLI)aws iotanalytics --endpoint <EndPoint> --region <Region> create-dataset --dataset-name="<dataSetName>" --actions="[{\"actionName\":\"<ActionName>\", \"queryAction\":{\"sqlQuery\":\"<SQLQuery>\"}}]" --retentionPeriod numberOfDays=10

成功した出力:

{ "datasetName": "<datasetName>", "datasetArn": "<datatsetARN>", "retentionPeriod": {unlimited: true} or {numberOfDays: 10, unlimited: false}}

例 6 -- デルタ枠を使用して SQL データセットを作成する (CLI)Delta ウィンドウは、重複することなく連続する時間間隔であり、ユーザーが定義します。デルタウィンドウを使用すると、前回の分析以降にデータストアに到着した新しいデータを使用してデータセットコンテンツを作成し、これらのデータに対して分析を実行できます。デルタウィンドウを作成するには、データセットの queryAction の filters 部分に deltaTime を設定します(CreateDataset (p. 137))。通常は、間隔トリガーも設定して、データセットコンテンツを自動的に作成します (triggers:schedule:expression)。基本的には、この操作で特定の時間ウィンドウに到着したメッセージをフィルタリングし、以前の時間ウィンドウのメッセージに含まれたデータが重複してカウントされないようにします。

この例では、前回以降に到着したデータのみを使用して 15 分ごとに新しいデータセットコンテンツを自動的に作成する新しいデータセットを作成します。メッセージが指定されたデータストアに到着するまでに 3 分間の遅延を許可する 3 分 (180 秒) deltaTime オフセットを指定します。そのため、データセットコンテンツが午前 10 時 30 分に作成された場合、使用されるデータ (データセットコンテンツに含まれる)は、タイムスタンプが午前 10 時 12 分から午前 10 時 27 分の間になります (つまり、午前 10 時 30 分 - 15分 - 3 分から午前 10 時 30 分 - 3 分)。

aws iotanalytics --endpoint <EndPoint> --region <Region> create-dataset --cli-input-json file://delta-window.json

ファイル delta-window.json には、次の構造が格納されます。

{ "datasetName": "delta_window_example",

82

Page 88: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドノートブックをコンテナ化する

"actions": [ { "actionName": "delta_window_action", "queryAction": { "sqlQuery": "SELECT temperature, humidity, timestamp FROM my_datastore", "filters": [ { "deltaTime": { "offsetSeconds": -180, "timeExpression": "from_unixtime(timestamp)" } } ] } } ], "triggers": [ { "schedule": { "expression": "cron(0/15 * * * ? *)" } } ]}

成功した出力:

{ "datasetName": "<datasetName>", "datasetArn": "<datatsetARN>",}

ノートブックをコンテナ化するNote

このセクションでは、Jupyter ノートブックを使用して独自の Docker コンテナを構築する方法について説明します。サードパーティー製のノートブックを再利用するとセキュリティ上のリスクがあります。含まれるコンテナはユーザーの許可を得て任意のコードを実行できます。さらに、ノートブックによって生成された HTML は AWS IoT Analytics コンソールに表示される可能性があり、HTML を表示しているコンピュータ上に潜在的な攻撃ベクトルを提供します。使用する前に、サードパーティー製のノートブックの著者を信頼できることを確認します。

高度な分析機能を実行する 1 つの方法として、Jupyter ノートブックを使用します。Jupyter ノートブックは、Machine Learning と様々な統計的分析を実行できる強力なデータサイエンスツールを備えています。詳細については、「ノートブックテンプレート (p. 29)」を参照してください。(現在 JupyterLab 内でのコンテナ化はサポートされていないことに注意してください。) Jupyter ノートブックとライブラリをコンテナにパッケージできます。このコンテナは、定義したデルタ時間枠中に AWS IoT Analytics が受信した新しいデータのバッチを定期的に実行します。コンテナと指定された時間枠でキャプチャされるセグメント化された新しいデータを使用する分析ジョブをスケジュールし、この先にスケジュールされた分析用にこのジョブの出力を保存できます。

2018 年 8 月 23 日以降に AWS Iot Analytics コンソールを使用して SageMaker インスタンスを作成した場合、コンテナ化の拡張機能のインストールは自動的に行われ、コンテナ化されたイメージの作成を開始できます (p. 86)。それ以外の場合は、このセクションに記載されている手順に従って、SageMaker インスタンスでノートブックのコンテナ化を有効にします。以下では、SageMaker 拡張機能を変更して AWSECR にコンテナイメージをアップロードできるようにします。こうして、コンテナ化の拡張機能をインストールできます。

83

Page 89: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドノートブックインスタンスのコンテナ化の有効化は AWS

Iot Analytics コンソールを介しては作成できません。

ノートブックインスタンスのコンテナ化の有効化はAWS Iot Analytics コンソールを介しては作成できません。新しい SageMaker インスタンスの作成は、次の手順ではなく、AWS Iot Analytics コンソールを使用して行うことが推奨されます。新しいインスタンスでは、自動的にコンテナ化がサポートされます。

ここに示すようにコンテナ化を有効にした後で SageMaker インスタンスを再起動する場合、IAM ロールおよびポリシーを再度追加する必要はありませんが、最後のステップに示すように、拡張機能を再インストールする必要があります。

1. AWS ECS へのアクセス権をノートブックに付与するには、Amazon SageMaker ページで SageMakerインスタンスを選択します。

2. [IAM ロール ARN] で SageMaker 拡張機能ロールを選択します。

3. [ポリシーのアタッチ] を選択したら、「アクセス許可 (p. 69)」に示すようにポリシーを定義してアタッチします。

「AmazonSageMakerFullAccess」ポリシーがまだアタッチされていない場合は、アタッチします。

84

Page 90: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドノートブックインスタンスのコンテナ化の有効化は AWS

Iot Analytics コンソールを介しては作成できません。

S3 からコンテナ化コードをダウンロードして、ノートブックインスタンスにインストールする必要があります。最初のステップとして、SageMaker インスタンスのターミナルにアクセスします。

1. Jupyter 内で、[New (新規)] を選択します。

2. 表示されるドロップダウンメニューで、[ターミナル] を選択します。

3. ターミナル内で、コードをダウンロードするための次のコマンドを入力し、解凍してインストールします。これらのコマンドは、この SageMaker インスタンス上でノートブックが実行するすべてのプロセスを終了することに注意してください。

cd /tmp

aws s3 cp s3://iotanalytics-notebook-containers/iota_notebook_containers.zip /tmp

unzip iota_notebook_containers.zip

cd iota_notebook_containers

chmod u+x install.sh

./install.sh

拡張機能が有効になりインストールされるまで、1 ~ 2 分ほど待ちます。

85

Page 91: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドノートブックのコンテナ化拡張機能を更新する

ノートブックのコンテナ化拡張機能を更新する2018 年 8 月 23 日以降に AWS Iot Analytics コンソールで SageMaker インスタンスを作成した場合、コンテナ化の拡張機能は自動的にインストールされます。SageMaker コンソールからインスタンスを再起動して拡張機能を更新できます。手動で拡張機能をインストールした場合には、「Enable Containerization OfNotebook Instances Not Created Via Iot Analytics Console (AWS Iot Analytics コンソールを使用しないで作成されたノートブックインスタンスのコンテナ化を有効にする)」にリストされるターミナルコマンドを再度実行して更新することができます。

コンテナ化イメージを作成するこのセクションでは、ノートブックをコンテナ化するために必要な手順を示します。開始するには、Jupyter ノートブックにアクセスして、コンテナ化カーネルを使用してノートブックを作成します。

1. Jupyter ノートブックで [New (新規)] を選択し、ドロップダウンリストからカーネルのタイプを選択します。(カーネルのタイプは「Containerized」で始まり、選択するべきカーネルで終了する必要があります。たとえば、単純な python3 環境が必要な場合 (conda_python3 など)、「Containerizedconda_python3」を選択します。)

2. ノートブックで作業が完了し、これをコンテナ化するには、[containerize (コンテナ化)] ボタンを選択します。

3. コンテナ化のノートブックの名前を入力します。オプションとして説明を入力することもできます。

86

Page 92: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドコンテナ化イメージを作成する

4. ノートブックを呼び出す [入力変数] (パラメータ) を指定します。ノートブックから自動的に検出される入力変数を選択することも、カスタム変数を定義することもできます。(以前にノートブックを実行したことがある場合にのみ、入力変数が検出されることに注意してください。) 各入力変数でタイプを選択します。また、オプションで入力変数の説明も入力できます。

5. ノートブックから作成されたイメージがアップロードされる先の AWS ECR リポジトリを選択します。

87

Page 93: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドコンテナ化イメージを作成する

6. 入力をまとめた概要が表示されます。コンテナ化を開始後にこれをキャンセルできないことに注意してください。このプロセスには 1 時間以上かかることがあります。

[containerize (コンテナ化)] を選択してコンテナ化プロセスを開始します。

88

Page 94: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドコンテナ化イメージを作成する

7. 次のページには進行状況が表示されます。

8. 誤ってブラウザを閉じた場合には、AWS IoT Analytics コンソールの [ノートブック] セクションからコンテナ化プロセスのステータスをモニタリングできます。

9. プロセスが完了すると、コンテナ化されたイメージは AWS ECR に保存され、使用できるようになります。

89

Page 95: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

独自の分析用カスタムコンテナを使用するNote

このセクションでは、Jupyter ノートブックを使用して独自の Docker コンテナを構築する方法について説明します。サードパーティー製のノートブックを再利用するとセキュリティ上のリスクがあります。含まれるコンテナはユーザーの許可を得て任意のコードを実行できます。さらに、ノートブックによって生成された HTML は AWS IoT Analytics コンソールに表示される可能性があり、HTML を表示しているコンピュータ上に潜在的な攻撃ベクトルを提供します。使用する前に、サードパーティー製のノートブックの著者を信頼できることを確認します。

独自のカスタムコンテナを作成して、AWS IoT Analytics サービスを使用してこれを実行できます。これを行うには、Docker イメージをセットアップし、Amazon ECR にアップロードしてから、コンテナアクションを実行するデータセットを設定します。このセクションでは、Octave を使用したプロセスの例を示します。

このチュートリアルでは、以下を前提としています。

• Octave がローカルコンピュータにインストールされていること• ローカルコンピュータでセットアップされた Docker アカウント• ECR/IoT Analytics へのアクセスがある AWS アカウント

ステップ 1: Docker イメージをセットアップする

このチュートリアルには 3 つの主なファイルが必要となります。この名前と内容は以下のとおりです。

• Dockerfile - Docker のコンテナ化プロセスの初期セットアップ。

FROM ubuntu:16.04

# Get required set of softwareRUN apt-get updateRUN apt-get install -y software-properties-commonRUN apt-get install -y octaveRUN apt-get install -y python3-pip

90

Page 96: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

# Get boto3 for S3 and other librariesRUN pip3 install --upgrade pipRUN pip3 install boto3RUN pip3 install urllib3

# Move scripts overADD moment momentADD run-octave.py run-octave.py

# Start python scriptENTRYPOINT ["python3", "run-octave.py"]

• run-octave.py - AWS IoT Analytics から JSON を解析し、Octave スクリプトを実行して、S3 にアーティファクトをアップロードします。

import boto3import jsonimport osimport sysfrom urllib.parse import urlparse

# Parse the JSON from AWS IoT Analyticswith open('/opt/ml/input/data/iotanalytics/params') as params_file: params = json.load(params_file)

variables = params['Variables']

order = variables['order']input_s3_bucket = variables['inputDataS3BucketName']input_s3_key = variables['inputDataS3Key']output_s3_uri = variables['octaveResultS3URI']

local_input_filename = "input.txt"local_output_filename = "output.mat"

# Pull input data from S3...s3 = boto3.resource('s3')s3.Bucket(input_s3_bucket).download_file(input_s3_key, local_input_filename)

# Run Octave Scriptos.system("octave moment {} {} {}".format(local_input_filename, local_output_filename, order))

# # Upload the artifacts to S3output_s3_url = urlparse(output_s3_uri)output_s3_bucket = output_s3_url.netlocoutput_s3_key = output_s3_url.path[1:]

s3.Object(output_s3_bucket, output_s3_key).put(Body=open(local_output_filename, 'rb'), ACL='bucket-owner-full-control')

• moment - 出入力ファイルと指定した順序に基づいてタイミングを計算するシンプルな Octave スクリプト。

#!/usr/bin/octave -qf

arg_list = argv ();input_filename = arg_list{1};output_filename = arg_list{2};

91

Page 97: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

order = str2num(arg_list{3});

[D,delimiterOut]=importdata(input_filename)M = moment(D, order)

save(output_filename,'M')

1. 各ファイルの内容をダウンロードします。新規のディレクトリを作成し、その中にすべてのファイルを配置します。次に、このディレクトリに cd を実行します。

2. 実行:

docker build -t octave-moment .

3. Docker repo に新しいイメージが表示されます。以下を実行してこれを検証します。

docker image ls | grep octave-moment

ステップ 2: Docker イメージを ECR リポジトリにアップロードする

1. ECR に新しいリポジトリを作成します。

aws ecr create-repository --repository-name octave-moment

2. Docker 環境へのログインを取得します。

aws ecr get-login

3. 出力をコピーして実行します。出力は次のようになります。

docker login -u AWS -p <password> -e none https://<your-aws-account-id>.dkr.ecr..amazonaws.com

4. ECR リポジトリタグを使用して、作成したイメージをタグ付けします。

docker tag <your-image-id> <your-aws-account-id>.dkr.ecr.<region>.amazonaws.com/octave-moment

5. イメージを ECR にプッシュします。

docker push <your-aws-account-id>.dkr.ecr.<region>.amazonaws.com/octave-moment

ステップ 3: サンプルデータを S3 バケットにアップロードする

1. 「input.txt」ファイルに以下をダウンロードします。

0.857549 -0.987565 -0.467288 -0.252233 -2.298007 0.030077 -1.243324 -0.692745 0.563276 0.772901-0.508862 -0.404303 -1.363477 -1.812281 -0.296744-0.203897 0.746533 0.048276 0.075284 0.125395 0.829358 1.246402 -1.310275 -2.737117 0.024629 1.206120 0.895101 1.075549 1.897416 1.383577

2. 「octave-sample-data-<your-account-id」という名前で新しい S3 バケットを作成します。

92

Page 98: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

3. 作成した S3 バケットにファイル「input.txt」をアップロードします。これで、input.txt というファイルがある octave-sample-data-<your-aws-account-id> という名前のバケットができました。

ステップ 4: コンテナの実行ロールを作成する

1. 「role1.json」という名前のファイルに以下をダウンロードします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com", "iotanalytics.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ]}

2. ダウンロードした「role1.json」ファイルを使用して、Amazon SageMaker および AWS IoT Analyticsへのアクセス許可を付与する新しいロールを作成します。

aws iam create-role --role-name container-execution-role --assume-role-policy-document file://role1.json

3. 「policy1.json」というファイルに以下をダウンロードして、使用するアカウント ID で「<your-account-id>」を置き換えます (Statement:Resource で 2 番目の ARN を参照します)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:PutObject", "s3:GetObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::*-dataset-*/*", "arn:aws:s3:::octave-sample-data-<your-account-id>/*" }, { "Effect": "Allow", "Action": [ "iotanalytics:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer",

93

Page 99: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

"ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets" ], "Resource" : "*" } ]}

4. ダウンロードした「policy1.json」ファイルを使用して、IAM ポリシーを作成します。

aws iam create-policy --policy-name ContainerExecutionPolicy --policy-document file://policy1.json

5. ロールにポリシーを付与します。

aws iam attach-role-policy --role-name container-execution-role --policy-arn arn:aws:iam::<your-account-id>:policy/ContainerExecutionPolicy

ステップ 5: コンテナアクションを使用して、データセットを作成する

1. 「cli-input.json」という名前のファイルに以下をダウンロードし、「<your-account-id>」および「<region>」のすべてのインスタンスを適切な値で置き換えます。

{ "datasetName": "octave_dataset", "actions": [ { "actionName": "octave", "containerAction": { "image": "<your-account-id>.dkr.ecr.<region>.amazonaws.com/octave-moment", "executionRoleArn": "arn:aws:iam::<your-account-id>:role/container-execution-role", "resourceConfiguration": { "computeType": "ACU_1", "volumeSizeInGB": 1 }, "variables": [ { "name": "octaveResultS3URI", "outputFileUriValue": { "fileName": "output.mat" } }, { "name": "inputDataS3BucketName", "stringValue": "octave-sample-data-<your-account-id>" },

94

Page 100: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド独自の分析用カスタムコンテナを使用する

{ "name": "inputDataS3Key", "stringValue": "input.txt" }, { "name": "order", "stringValue": "3" } ] } } ]}

2. ダウンロードして編集した「cli-input.json」ファイルを使用して、データセットを作成します。

aws iotanalytics create-dataset —cli-input-json file://cli-input.json

ステップ 6: データセットコンテンツの生成を呼び出す

1. 実行:

aws iotanalytics create-dataset-content --dataset-name octave-dataset

ステップ 7: データセットコンテンツを取得する

1. 実行:

aws iotanalytics get-dataset-content --dataset-name octave-dataset --version-id \$LATEST

2. DatasetContentState が SUCCEEDED になるまで数分間かかる場合があります。

ステップ 8: Octave で出力を印刷する

1. Octave シェルを使用して、以下を実行してコンテナからの出力を印刷します。

bash> octaveoctave> load output.matoctave> disp(M)-0.016393 -0.098061 0.380311 -0.564377 -1.318744

95

Page 101: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

AWS IoT Analytics での SQL 式データセットは、データストアのデータで SQL 式を使用して生成されます。AWS IoT Analytics では、Amazon Athena と同じ SQL クエリ、関数、および演算子を使用しています。

AWS IoT Analytics は、次のように ANSI 標準 SQL 構文のサブセットをサポートします。

SELECT [ ALL | DISTINCT ] select_expression [, ...][ FROM from_item [, ...] ][ WHERE condition ][ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ][ HAVING condition ][ UNION [ ALL | DISTINCT ] union_query ][ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ][ LIMIT [ count | ALL ] ]

ただし、AWS IoT Analytics では、JOIN 句や WITH 句はサポートされていません。

Amazon Athena と AWS IoT Analytics の SQL 機能は、Presto 0.172 に基づいているため、以下の関数がサポートされます。

• 論理演算子• 比較関数および演算子• 条件式• 変換関数• 数学関数および演算子• ビット単位関数• 10 進数関数および演算子• 文字列関数および演算子• バイナリ関数• 日付/時刻関数および演算子• 正規表現関数• JSON 関数および演算子• URL 関数• 集計関数• ウィンドウ関数• カラー関数• 配列関数および演算子• マップ関数および演算子• Lambda 式および関数• Teradata 関数

ただし、AWS IoT Analytics と Amazon Athena で以下はサポートされていません。

• ユーザー定義関数 (UDF または UDAF)。• ストアドプロシージャ.• 一部のデータ型。• CREATE TABLE AS SELECT ステートメント。

96

Page 102: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

• INSERT INTO ステートメント。• プリペアドステートメント。EXECUTE と USING を一緒に実行することはできません。• CREATE TABLE LIKE。• DESCRIBE INPUT と DESCRIBE OUTPUT。• EXPLAIN ステートメント。• フェデレーションコネクタ。

サポートされているデータ型は以下のとおりです。

• primitive_type• TINYINT• SMALLINT• INT• BIGINT• BOOLEAN• DOUBLE• FLOAT• STRING• TIMESTAMP• DECIMAL [ (precision, scale)]• DATE• CHAR (指定した長さの固定長の文字データ)• VARCHAR (指定した長さの可変長の文字データ)

• array_type• ARRAY<data_type>

• map_type• MAP<primitive_type, data_type>

• struct_type• STRUCT<col_name:data_type[COMMENT col_comment][,...]>

AWS IoT Analytics エンティティの名前 (チャネル、データセット、データストア、パイプライン名) は、小文字で始まり、小文字、数字と下線のみを含めることができます。

AWS IoT Analytics および Athena テーブル、データベース、および列の名前には、小文字、数字と下線のみを含めることができます。アンダースコアで始まるテーブル名や列名はバックティックで囲みます。次に例を示します。

CREATE_TABLE `_myunderscoretable`( `_id` string, `_index` string, ...

数字を含むテーブル名は二重引用符で囲みます。例:

CREATE_TABLE "table123"( `_id` string, `_index` string, ...

97

Page 103: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

QuickSight を使用した AWS IoTAnalytics データの表示

AWS IoT Analytics は、Amazon QuickSight と直接統合できます。Amazon QuickSight は、可視化の構築、アドホック分析の実行、データからの迅速なビジネス上の洞察の取得に使用できる高速なビジネス分析サービスです。Amazon QuickSight は、組織が数十万人のユーザーにスケールするのを可能にし、堅牢なインメモリエンジン (SPICE) を使用することで応答性の高いパフォーマンスを実現します。QuickSightコンソールで AWS IoT Analytics データセットを選択し、ダッシュボードと可視化の作成を開始できます。Amazon QuickSight は、これらのリージョンで利用可能です。

QuickSight の可視化を開始するには、QuickSight アカウントを作成する必要があります。アカウントのセットアップ時に、QuickSight から AWS IoT Analytics データにアクセスできるように設定します。既存のアカウントがある場合、QuickSight から AWS IoT Analytics データへのアクセスを許可するには、[管理者] 、[Manage QuickSight (QuickSight の管理)]、[Account Settings (アカウント設定)] の順に選択します。[Connected products & services (接続された製品とサービス)] で [Add or remove (追加または削除)] を選択して、[AWS IoT Analytics] の横にあるチェックボックスをオンにし、[Update (更新)]を選択します。

アカウントのセットアップが完了したら、QuickSight コンソールのメインページで [New Analysis (新しい分析)]、[New data set (新しいデータセット)] の順に選択し、送信元として AWS IoT Analytics を選択します。データソースの名前を入力し、インポートするデータセットを選択して、[Create data source (データソースの作成)] を選択します。

データソースの作成後に、QuickSight で可視化を作成できます。

98

Page 104: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

QuickSight ダッシュボードとデータセットの詳細については、「QuickSight のドキュメント」を参照してください。

99

Page 105: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

コンソールで AWS IoT Analytics データを可視化する

AWS IoT Analytics は、AWS IoT Analytics コンソールのコンテナデータセットコンテンツページにコンテナデータセットの HTML 出力 (ファイル「output.html」にある) を埋め込むことができます。たとえば、Jupyter ノートブックを実行するコンテナデータセットを定義し、Jupyter ノートブックで可視化を作成する場合。

次に、コンテナデータセットコンテンツが作成された後、コンソールの [Data Set (データセット)] コンテンツページでこの視覚化を表示できます。

100

Page 106: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

Jupyter ノートブックを実行するコンテナデータセットの作成の詳細については、「ワークフローの自動化 (p. 65)」を参照してください。

101

Page 107: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

AWS IoT Analytics トラブルシューティングガイド

Q: AWS IoT Analytics にメッセージが取り込まれているかどうかはどのようにわかりますか?

• ルールエンジンを通じてチャネルにデータを取り込むためのルールが正しく設定されているかどうかを確認してください。

aws iot get-topic-rule --rule-name <your-rule-name>

レスポンスは以下のようになります。

{ "ruleArn": "arn:aws:iot:us-west-2:<your-account-id>:rule/<your-rule-name>", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/<your-rule-name>'", "ruleDisabled": false, "actions": [ { "iotAnalytics": { "channelArn": "arn:aws:iotanalytics:<region>:<your_account_number>:channel/<your-channel-name>" } } ], "ruleName": "<your-rule-name>" }}

ルールで使用されているリージョンとチャネル名が正しいことを確認してください。データがルールエンジンに到達してルールが正しく実行されていることを確認するには、新しいターゲットを追加して一時的に着信メッセージを S3 バケットに保存することもできます。

Q: パイプラインからメッセージが欠落するのはなぜですか? 解決策は?

• アクティビティで受信した JSON 入力が無効です。

すべてのアクティビティ (Lambda アクティビティを除く) は、特別に有効な JSON 文字列が入力として必要です。アクティビティで受信した JSON が無効である場合、メッセージは欠落してデータストアに到達しません。有効な JSON メッセージをサービスに取り込んでいることを確認してください。バイナリ入力の場合、パイプラインの最初のアクティビティが Lambda アクティビティであり、これによってバイナリデータが有効な JSON に変換されてから、次のアクティビティに渡されるか、データストアに保存されていることを確認します。詳細については、「Lambda 関数の例 2 (p. 45)」を参照してください。

• Lambda アクティビティで呼び出された Lambda 関数のアクセス許可が不十分です。

Lambda アクティビティの各 Lambda 関数に、AWS IoT Analytics サービスから呼び出すためのアクセス許可があることを確認してください。次の CLI コマンドを使用してアクセス許可を付与できます。

aws lambda add-permission --function-name <name> --region <region> --statement-id <id> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction

102

Page 108: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

• フィルタまたは removeAttribute アクティビティの定義が正しくありません。

filter または removeAttribute アクティビティの定義が正しいことを確認してください。メッセージをフィルタで除外した場合やメッセージからすべての属性を削除した場合は、メッセージがデータストアに追加されません。

Q: データストア内にデータがないのはなぜですか?

• データを取り込んでからデータが使用可能になるまでに遅延があります。

データをチャネルに取り込んでからデータがデータストアで使用可能になるまでに数分かかることがあります。パイプラインアクティビティ数とパイプラインのカスタム Lambda アクティビティの定義に応じて、所要時間は異なります。

• メッセージがフィルタによってパイプラインから除外されています。

パイプラインでメッセージを削除していないことを確認してください(前の質問と回答を参照してください)。

• データセットのクエリが正しくありません。

データストアからデータセットを生成するクエリが正しいことを確認してください。データがデータストアに到達するように、クエリから不要なフィルタを削除します。

Q: データセットに「code:`__dt`」とのみ表示されるのはなぜですか?

• この列は、サービスによって自動的に追加され、データ取り込みの推定時間を示します。クエリを最適化するために使用できます。データセットの内容がこれだけの場合は、前の質問と回答を参照してください。

Q: データセットの完了に伴ってイベントを発生させるコードはどのように記述しますか?

• describe-dataset コマンドに基づくポーリングをセットアップして、特定のタイプスタンプを持つデータセットのステータスが SUCCEEDED であるかどうかを確認する必要があります。

Q: IotAnalytics サービスを使用するようにノートブックインスタンスを正しく設定するにはどうしますか?

• 以下の手順に従って、ノートブックインスタンスの作成に使用している IAM ロールに必要なアクセス許可があることを確認してください。1. Amazon SageMaker コンソールに移動し、ノートブックインスタンスを作成します。2. 詳細を入力し、[create a new role (新しいロールの作成)] を選択します。ロールの ARN を書き留めま

す。3. ノートブックインスタンスを作成します。これにより、Amazon SageMaker で使用できるロールも作

成されます。4. IAM コンソールに移動し、新しく作成した Amazon SageMaker のロールを変更します。このロール

を開くと、管理ポリシーがあります。5. [インラインポリシーの追加] をクリックして、サービスとして IotAnalytics を選択します。読み

取りアクセス許可で、[GetDatasetContent] を選択します。6. ポリシーを確認し、ポリシー名を追加して、ポリシーを [作成] します。新しく作成したロール

に、AWS IoT Analytics からデータセットを読み取るポリシーのアクセス許可が付与されます。7. AWS IoT Analytics コンソールに移動し、ノートブックインスタンスでノートブックを作成します。8. ノートブックインスタンスの状態が In Service (実行中) になるのを待ちます。9. [ノートブックの作成] を選択し、作成したノートブックインスタンスを選択します。これにより、選

択したテンプレートを使用してデータセットにアクセスできる Jupyter ノートブックが作成されます。

103

Page 109: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

Q: インスタンスでノートブックを作成できないのはなぜですか?

• 正しい IAM ポリシーを使用してノートブックインスタンスを作成していることを確認してください(前の質問の手順に従います)。

• ノートブックインスタンスの状態が In Service (実行中) であることを確認します(インスタンスを作成するときの状態は Pending (保留中) です。通常、状態が In Service (実行中) になるまでに約 5 分かかります。約 5 分後にノートブックインスタンスの状態が Failed (失敗) になった場合は、アクセス許可を再度確認します)。

Q: ノートブックでデータセットからデータを取得できないのはなぜですか?

• ノートブックインスタンスに必要なすべてのアクセス許可があることを確認してください。ノートブックインスタンスには、データセットのコンテンツに対する読み取りアクセス許可が必要です。

Q: QuickSight にデータセットが表示されないのはなぜですか?

• 以下の手順に従って、QuickSight にデータセットのコンテンツに対する読み取りアクセス許可が付与されていることを確認してください。1. 右上で (アカウント名が表示されている) アイコンをクリックし、[Manage QuickSight (QuickSight の

管理)] を選択します。2. [Account settings (アカウントの設定)] を選択して、[Connected products & services (接続された製品

とサービス)] で [Add or remove (追加または削除)] を選択します。3. [AWS IoT Analytics] の横にあるチェックボックスをオンにしてから [Update (更新)] を選択します。こ

れにより、データセットに対する読み取りアクセス許可が QuickSight に付与されます。4. データの視覚化をもう一度試してください。

Q: 既存の Jupyter ノートブックにコンテナ化ボタンが表示されないのはなぜですか?

• これは、AWS IoT Analytics コンテナ化プラグインが欠落していることが原因で発生します。SageMaker ノートブックインスタンスを 2018 年 8 月 23 日以前に作成した場合には、「ノートブックのコンテナ化 (p. 83)」の説明に従って、手動でプラグインをインストールする必要があります。または、AWS IoT Analytics コンソールから SageMaker ノートブックインスタンスを作成すると、プラグインは自動的にインストールされます。SageMaker ノートブックインスタンスが SageMaker コンソールで作成された場合には、手動でプラグインをインストールします。

• プラグインを手動でインストールしてからノートブックインスタンスを再起動すると、プラグインが失われることがあります。この場合、「ノートブックのコンテナ化 (p. 83)」の説明に従ってプラグインを再インストール必要があります。

• AWS IoT Analytics コンソールから SageMaker ノートブックインスタンスを作成した後、あるいは手動でインストールした後にコンテナ化ボタンが表示されない場合は、AWS IoT Analytics 技術サポートにお問い合わせください。

Q: コンテナ化プラグインのインストールが失敗する原因は何ですか?

• 通常の場合、プラグインのインストールの失敗は、SageMaker ノートブックインスタンスへのアクセス権限がないことが原因です。ノートブックインスタンスに必要なアクセス許可については、「アクセス許可 (p. 69)」を参照し、ノートブックインスタンスロールに必要なアクセス許可を追加します。問題が解決しない場合は、AWS Iot Analytics コンソールから新しいノートブックインスタンスを作成します。

• プラグインのインストール中にログに次のメッセージ 「To initialize this nbextension in the browserevery time the notebook (or other app) loads」(ノートブック (または他のアプリ) が読み込まれるたびに、この nb 拡張機能をブラウザで初期化するには) が表示される場合には、無視しても問題ありません。

104

Page 110: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド

Q: コンテナ化プラグインのがエラーを返すのですか?

• コンテナ化は複数の原因により失敗し、エラーを生成することがあります。ノートブックをコンテナ化する前に、正しいカーネルを使用していることを確認してください。コンテナ化されたカーネルは、「Containerized」というプレフィックスで始まります。

• プラグインは Docker イメージを ECR リポジトリに作成して保存するため、ノートブックインスタンスロールに ECR リポジトリを読み取り、リストして作成するために十分なアクセス権限があることを確認してください。ノートブックインスタンスに必要なアクセス許可については、「アクセス許可 (p. 69)」を参照し、ノートブックインスタンスロールに必要なアクセス許可を追加します。

• また、リポジトリの名前が ECR 要件を準拠していることを確認します。ECR リポジトリ名は英字で始まる必要があり、小文字、数字、ハイフン、下線、スラッシュのみを含めることができます。"

• コンテナ化プロセスが「This instance has insufficient free space to run containerization」(このインスタンスにはコンテナ化を実行するための空き領域が不足しています) といエラーで失敗する場合、より大きなインスタンスを使用してこの問題の解決を試みてください。

• 接続エラーあるいはイメージ作成エラーが表示されたら、再試行してください。問題が解決しない場合は、インスタンスを再起動し、最新のプラグインのバージョンをインストールします。

Q: コンテナ化中に使用する変数が表示されません。

• AWS Iot Analytics のコンテナ化プラグインは、"Containerized" カーネルでノートブックを実行後、ノートブックのすべての変数を自動的に認識します。コンテナ化されたカーネルの 1 つを使用してノートブックを実行し、コンテナ化を実行します。

Q: どのような変数を入力としてコンテナに追加できますか?

• ランタイム中に変更する値を含む任意の変数をコンテナへの入力として追加できます。これにより、データセットの作成時に提供される必要がある別のパラメータを使用して、同じコンテナを実行できます。AWS IoT Analytics コンテナ化 Jupyter プラグインは、ノートブックでこの変数を自動的に認識し、コンテナ化プロセスの一部として利用可能にすることで、このプロセスを簡略化します。

Q: コンテナ出力をこの先の入力として設定するにはどうすればよいですか?

• 実行されたアーティファクトを保存できる特定の S3 の場所は、コンテナデータセットの実行ごとに作成されます。この出力場所にアクセスするには、コンテナデータセットで outputFileUriValue と入力してデータセット変数を作成します。この変数の値は、追加の出力ファイルを保存するために使用される S3 パスとする必要があります。これ以降の実行で上記で保存したアーティファクトにアクセスするには、コード:getDatasetContent API を使用して、後続の実行で必要となる適切な出力ファイルを選択できます。

Q: コンテナデータセットが失敗する原因は何ですか?

• 正しい executionRole をコンテナデータセットに渡そうとしていることを確認してください。executionRole の信頼ポリシーには、"iotanalytics.amazonaws.com" と"sagemaker.amazonaws.com" の両方が含まれている必要があります。

• 失敗の原因として「AlgorithmError」と表示される場合には、手動でコンテナのデバッグを試行してください。これは、コンテナコードにバグがある場合、あるいは実行ロールにコンテナを実行できるアクセス権限がない場合に発生します。AWS IoT Analytics Jupyter プラグインを使用してコンテナ化した場合には、同じロールを containerDataset の executionRole として使用して新しい SageMaker ノートブックインスタンスを作成し、手動でノートブックの実行を試行してください。Jupyter プラグイン外でコンテナが作成された場合には、手動でコードを実行して、executionRole のアクセス権限を制限してみてください。

105

Page 111: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCloudTrail での AWS IoT Analytics 情報

CloudTrail を使用した AWS IoTAnalytics API コールのログ記録

AWS IoT Analytics は、AWS CloudTrail と統合されます。AWS CloudTrail は、AWS IoT Analytics のユーザー、ロール、または AWS のサービスで実行されたアクションのレコードを提供するサービスです。CloudTrail では、AWS IoT Analytics への API コールのサブセットをイベントとしてキャプチャします。これには、AWS IoT Analytics API に対する AWS IoT Analytics コンソールからの呼び出しやコードコールからの呼び出しが含まれます。証跡を作成する場合は、AWS IoT Analytics のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。CloudTrail で収集された情報を使用して、AWS IoT Analytics に対するリクエスト、リクエスト元のIP アドレス、リクエストの実行者、リクエスト日時などの詳細を確認できます。

CloudTrail に関する詳細は、AWS CloudTrail ユーザーガイドを参照してください。

CloudTrail での AWS IoT Analytics 情報CloudTrail は、アカウント作成時に AWS アカウントで有効になります。AWS IoT Analytics でアクティビティが発生すると、そのアクティビティは [Event history (イベント履歴)] の AWS の他のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

AWS IoT Analytics のイベントなど、AWS アカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべてのリージョンに適用されます。証跡では、AWSパーティションのすべてのリージョンからのイベントがログに記録され、指定した Amazon S3 バケットにログファイルが配信されます。さらに、その他の AWS サービスを設定して、CloudTrail ログで収集されたデータをより詳細に分析し、それに基づく対応を行うことができます。詳細については、以下のトピックを参照してください。

• 証跡を作成するための概要• CloudTrail のサポート対象サービスと統合• Amazon SNS の CloudTrail 通知の設定• CloudTrail ログファイルを複数のリージョンから受け取るおよび複数のアカウントから CloudTrail ログ

ファイルを受け取る

AWS IoT Analytics は、CloudTrail ログファイルのイベントとして以下のアクションを記録します。

• CancelPipelineReprocessing (p. 133)• CreateChannel (p. 134)• CreateDataset (p. 137)• CreateDatasetContent (p. 145)• CreateDatastore (p. 146)• CreatePipeline (p. 150)• DeleteChannel (p. 157)

106

Page 112: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics ログファイルエントリの概要

• DeleteDataset (p. 158)• DeleteDatasetContent (p. 159)• DeleteDatastore (p. 160)• DeletePipeline (p. 161)• DescribeChannel (p. 162)• DescribeDataset (p. 165)• DescribeDatastore (p. 173)• DescribeLoggingOptions (p. 176)• DescribePipeline (p. 178)• GetDatasetContent (p. 185)• ListChannels (p. 187)• ListDatasets (p. 192)• ListDatastores (p. 195)• ListPipelines (p. 197)• PutLoggingOptions (p. 201)• RunPipelineActivity (p. 202)• SampleChannelData (p. 209)• StartPipelineReprocessing (p. 210)• UpdateChannel (p. 215)• UpdateDataset (p. 217)• UpdateDatastore (p. 224)• UpdatePipeline (p. 226)

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。

• リクエストの生成に、ルート、あるいは Amazon Identity & Access Management (IAM) ユーザーの認証情報が使用されたかどうか。

• リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか。

• リクエストが AWS の別のサービスによって生成されたかどうか。

詳細については、「CloudTrail userIdentity エレメント」を参照してください。

AWS IoT Analytics ログファイルエントリの概要証跡は、指定した S3 バケットにイベントをログファイルとして配信するように設定できます。CloudTrailログファイルには、1 つ以上のログエントリがあります。イベントは任意の発生元からの 1 つのリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。CloudTrail ログファイルは、パブリック API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。

次は、CreateChannel アクションを示す CloudTrail ログエントリの例です。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "ABCDE12345FGHIJ67890B:AnalyticsChannelTestFunction",

107

Page 113: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics ログファイルエントリの概要

"arn": "arn:aws:sts::123456789012:assumed-role/AnalyticsRole/AnalyticsChannelTestFunction", "accountId": "123456789012", "accessKeyId": "ABCDE12345FGHIJ67890B", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T23:43:12Z" }, "sessionIssuer": { "type": "Role", "principalId": "ABCDE12345FGHIJ67890B", "arn": "arn:aws:iam::123456789012:role/AnalyticsRole", "accountId": "123456789012", "userName": "AnalyticsRole" } } }, "eventTime": "2018-02-14T23:55:14Z", "eventSource": "iotanalytics.amazonaws.com", "eventName": "CreateChannel", "awsRegion": "us-east-1", "sourceIPAddress": "198.162.1.0", "userAgent": "aws-internal/3 exec-env/AWS_Lambda_java8", "requestParameters": { "channelName": "channel_channeltest" }, "responseElements": { "retentionPeriod": { "unlimited": true }, "channelName": "channel_channeltest", "channelArn": "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_channeltest" }, "requestID": "7f871429-11e2-11e8-9eee-0781b5c0ac59", "eventID": "17885899-6977-41be-a6a0-74bb95a78294", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

次は、CreateDataset アクションを示す CloudTrail ログエントリの例です。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "ABCDE12345FGHIJ67890B:AnalyticsDatasetTestFunction", "arn": "arn:aws:sts::123456789012:assumed-role/AnalyticsRole/AnalyticsDatasetTestFunction", "accountId": "123456789012", "accessKeyId": "ABCDE12345FGHIJ67890B", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T23:41:36Z" }, "sessionIssuer": { "type": "Role", "principalId": "ABCDE12345FGHIJ67890B", "arn": "arn:aws:iam::123456789012:role/AnalyticsRole", "accountId": "123456789012", "userName": "AnalyticsRole" } } },

108

Page 114: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics ログファイルエントリの概要

"eventTime": "2018-02-14T23:53:39Z", "eventSource": "iotanalytics.amazonaws.com", "eventName": "CreateDataset", "awsRegion": "us-east-1", "sourceIPAddress": "198.162.1.0", "userAgent": "aws-internal/3 exec-env/AWS_Lambda_java8", "requestParameters": { "datasetName": "dataset_datasettest" }, "responseElements": { "datasetArn": "arn:aws:iotanalytics:us-east-1:123456789012:dataset/dataset_datasettest", "datasetName": "dataset_datasettest" }, "requestID": "46ee8dd9-11e2-11e8-979a-6198b668c3f0", "eventID": "5abe21f6-ee1a-48ef-afc5-c77211235303", "eventType": "AwsApiCall", "recipientAccountId": "123456789012"}

109

Page 115: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドログ記録ロールを作成する

CloudWatch Logs の設定のセットアップ

AWS IoT Analytics では、Amazon CloudWatch を使用したログ記録がサポートされています。AWS IoTAnalytics 用に Amazon CloudWatch のログ記録を有効にして設定するには、PutLoggingOptions コマンドを使用します。このセクションでは、AWS Identity and Access Management (IAM) および AmazonCloudWatch を使用するために設定する必要があるコマンドおよびアクセス権限について説明します。

CloudWatch Logs の詳細については、Amazon CloudWatch Logs ユーザーガイドを参照してください。AWS IAM の詳細については、AWS Identity and Access Management ユーザーガイドを参照してください。

Note

AWS IoT Analytics ログ記録を有効にする前に、CloudWatch Logs へのアクセス権限を理解しておく必要があります。CloudWatch Logs に対するアクセス権限のあるユーザーは、デバッグ情報を表示できます。「Amazon CloudWatch Logs の認証とアクセスコントロール」を参照してください。

ログ記録ロールを作成する最初に、ログ記録を実行するためのアクセス権限を持つ AWS IAM ロールを作成する必要があります。AWS IAM コンソールまたは AWS IAM コマンドを使用します。

• CreateRole

aws iam create-role ...

• PutRolePolicy

aws iam put-role-policy ...

後で AWS IoT Analytics PutLoggingOptions コマンドを呼び出すときに、このロールの ARN を使用します。この AWS IAM ロールにアタッチする必要がある信頼ポリシー (CreateRole で使用) およびロールポリシー (PutRolePolicy で使用) は次のとおりです。

trust policy:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": [ "Service": "iotanalytics.amazonaws.com" ], "Action": "sts:AssumeRole" } ]}

role policy:

110

Page 116: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドログ記録を設定して有効にする

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ]}

さらに、Amazon CloudWatch コマンドを使用して、ログイベントを Amazon CloudWatch に配置するための AWS IoT Analytics アクセス権限を付与する必要があります。

• PutResourcePolicy

aws logs put-resource-policy ...

以下のリソースポリシーを使用します。

resource policy:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iotanalytics.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": "*" } ]}

ログ記録を設定して有効にするPutLoggingOptions コマンドを使用して、AWS IoT Analytics 用に Amazon CloudWatch ログ記録を設定し、有効化します。loggingOptions フィールドの roleArn は、前のセクションで作成したロールのARN にする必要があります。また、DescribeLoggingOptions コマンドを使用してログ記録オプションの設定を確認することもできます。

PutLoggingOptionsAWS IoT Analytics のログ記録オプションを設定または更新します。

いずれかの loggingOptions フィールドの値を更新する場合、変更が有効になるまでに最大で 1 分かかることに注意してください。また、roleArn フィールドで指定したロールにアタッチされるポリシーを変更する場合 (たとえば、無効なポリシーを修正するなど)、この変更が有効になるまでには最大で 5 分かかります。

111

Page 117: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドPutLoggingOptions

CLI の概要:

aws iotanalytics put-logging-options --logging-options <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "loggingOptions": { "roleArn": "string", "level": "string", "enabled": "boolean" }}

fields:

• loggingOptions

型: LoggingOptions

AWS IoT Analytics のログ記録オプションの新しい値。• roleArn

型: 文字列 (長さ - 最大:2048 最小: 20)

ログ記録を実行するためのアクセス権限を AWS IoT Analytics に付与するロールの ARN。• レベル

型: 文字列

ログ記録のレベル。現在のところ、「ERROR」のみがサポートされています。enum: ERROR• 有効

型: ブール

true の場合、AWS IoT Analytics に対してログ記録が有効になります。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効でした。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがありました。

HTTP レスポンスコード: 500• ServiceUnavailableException

112

Page 118: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeLoggingOptions

サービスが一時的に使用できません。

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribeLoggingOptionsAWS IoT Analytics のログ記録オプションの現在の設定を取得します。

CLI の概要:

aws iotanalytics describe-logging-options[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{}

fields:

出力:

{ "loggingOptions": { "roleArn": "string", "level": "string", "enabled": "boolean" }}

fields:

• loggingOptions

型: LoggingOptions

AWS IoT Analytics のログ記録オプションの現在の設定。• roleArn

型: 文字列 (長さ - 最大:2048 最小: 20)

ログ記録を実行するためのアクセス権限を AWS IoT Analytics に付与するロールの ARN。• レベル

型: 文字列

ログ記録のレベル。現在のところ、「ERROR」のみがサポートされています。enum: ERROR• 有効

型: ブール

113

Page 119: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド名前空間、メトリクス、ディメンション

true の場合、AWS IoT Analytics に対してログ記録が有効になります。

エラー:

• InvalidRequestException

リクエストが無効でした。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つかりませんでした。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがありました。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません。

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

名前空間、メトリクス、ディメンションAWS IoT Analytics は 以下のメトリクスを Amazon CloudWatch リポジトリに置きます。

名前空間

AWS/IoTAnalytics

メトリクス 説明

ActionExecution 実行されるアクションの数。

ActivityExecutionError パイプラインアクティビティの実行中に生成されたエラーの数。

IncomingMessages チャンネルに送信されるメッセージの数。

ディメンション 説明

ActionType モニタリングされているアクションのタイプ。

114

Page 120: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイド名前空間、メトリクス、ディメンション

ディメンション 説明

ChannelName モニタリングされているチャネルの名前。

DatasetName モニタリングされているデータセットの名前。

DatastoreName モニタリングされているデータストアの名前。

PipelineActivityName モニタリングされているパイプラインアクティビティの名前。

PipelineActivityType モニタリングされているパイプラインアクティビティのタイプ。

PipelineName モニタリングされているパイプラインの名前。

115

Page 121: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドIdentity and Access Management for AWS IoT Analytics

AWS IoT Analytics のセキュリティクラウドセキュリティは AWS の最優先事項です。AWS のお客様は、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャから利点を得られます。

セキュリティは、AWS とお客様の間の共有責任です。共有責任モデルでは、これをクラウドのセキュリティおよびクラウド内のセキュリティとして説明しています。

• クラウドのセキュリティ - AWS は、AWS クラウドで AWS のサービスを実行するインフラストラクチャの保護を担います。また、AWS では安全に使用できるサービスも用意されています。セキュリティの有効性は、AWS コンプライアンスプログラムの一環として、サードパーティの監査が定期的にテストおよび検証されています。AWS IoT Analytics に適用するコンプライアンスプログラムの詳細については、コンプライアンスプログラムによる AWS 対象範囲内のサービスを参照してください。

• クラウド内のセキュリティ - お客様の責任はお客様が使用する AWS のサービスによって決まります。また、お客様は、お客様のデータの機密性、組織の要件、および適用可能な法律および規制などの他の要因についても責任を担います。

このドキュメントは、AWS IoT Analytics を使用する際に、責任共有モデルを適用する方法を理解するのに役立ちます。以下のトピックでは、セキュリティおよびコンプライアンスの目的を達成するために AWSIoT Analytics を設定する方法を示します。また、AWS IoT Analytics リソースのモニタリングや保護に役立つ他の AWS のサービスの使用方法についても説明します。

Identity and Access Management for AWS IoTAnalytics

AWS Identity and Access Management (IAM) is an AWS service that helps an administrator securelycontrol access to AWS resources. IAM administrators control who can be authenticated (signed in) andauthorized (have permissions) to use AWS IoT Analytics resources. IAM is an AWS service that you canuse with no additional charge.

AudienceHow you use AWS Identity and Access Management (IAM) differs, depending on the work you do in AWSIoT Analytics.

Service user - If you use the AWS IoT Analytics service to do your job, then your administrator providesyou with the credentials and permissions that you need. As you use more AWS IoT Analytics features todo your work, you might need additional permissions. Understanding how access is managed can help yourequest the right permissions from your administrator. If you cannot access a feature in AWS IoT Analytics,see Troubleshooting AWS IoT Analytics Identity and Access (p. 126).

Service administrator - If you're in charge of AWS IoT Analytics resources at your company, you probablyhave full access to AWS IoT Analytics. It's your job to determine which AWS IoT Analytics features andresources your employees should access. You must then submit requests to your IAM administrator tochange the permissions of your service users. Review the information on this page to understand the basicconcepts of IAM. To learn more about how your company can use IAM with AWS IoT Analytics, see HowAWS IoT Analytics Works with IAM (p. 120).

IAM administrator - If you're an IAM administrator, you might want to learn details about how you can writepolicies to manage access to AWS IoT Analytics. To view example AWS IoT Analytics identity-basedpolicies that you can use in IAM, see AWS IoT Analytics Identity-Based Policy Examples (p. 122).

116

Page 122: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAuthenticating with Identities

Authenticating with IdentitiesAuthentication is how you sign in to AWS using your identity credentials. For more information aboutsigning in using the AWS Management Console, see The IAM Console and Sign-in Page in the IAM UserGuide.

You must be authenticated (signed in to AWS) as the AWS account root user, an IAM user, or by assumingan IAM role. You can also use your company's single sign-on authentication, or even sign in using Googleor Facebook. In these cases, your administrator previously set up identity federation using IAM roles. Whenyou access AWS using credentials from another company, you are assuming a role indirectly.

To sign in directly to the AWS Management Console, use your password with your root user email or yourIAM user name. You can access AWS programmatically using your root user or IAM user access keys.AWS provides SDK and command line tools to cryptographically sign your request using your credentials. Ifyou don’t use AWS tools, you must sign the request yourself. Do this using Signature Version 4, a protocolfor authenticating inbound API requests. For more information about authenticating requests, see SignatureVersion 4 Signing Process in the AWS General Reference.

Regardless of the authentication method that you use, you might also be required to provide additionalsecurity information. For example, AWS recommends that you use multi-factor authentication (MFA) toincrease the security of your account. To learn more, see Using Multi-Factor Authentication (MFA) in AWSin the IAM User Guide.

AWS Account Root UserWhen you first create an AWS account, you begin with a single sign-in identity that has complete accessto all AWS services and resources in the account. This identity is called the AWS account root user andis accessed by signing in with the email address and password that you used to create the account. Westrongly recommend that you do not use the root user for your everyday tasks, even the administrativeones. Instead, adhere to the best practice of using the root user only to create you first IAM user. Thensecurely lock away the root user credentials and use them to perform only a few account and servicemanagement tasks.

IAM Users and GroupsAn IAM user is an identity within your AWS account that has specific permissions for a single person orapplication. An IAM user can have long-term credentials such as a user name and password or a set ofaccess keys. To learn how to generate access keys, see Managing Access Keys for IAM Users in the IAMUser Guide. When you generate access keys for an IAM user, make sure you view and securely save thekey pair. You cannot recover a lost secret access key. Instead, you must generate a new access key pair.

An IAM group is an identity that specifies a collection of IAM users. You can't sign in as a group. Youcan use groups to specify permissions for multiple users at a time. Groups make permissions easier tomanage for large sets of users. For example, you could have a group named IAMAdmins and give thatgroup permissions to administer IAM resources.

Users are different from roles. A user is uniquely associated with one person or application, but a role isintended to be assumable by anyone who needs it. Users have permanent long-term credentials, but rolesprovide temporary credentials. To learn more, see When to Create an IAM User (Instead of a Role) in theIAM User Guide.

IAM RolesAn IAM role is an identity within your AWS account that has specific permissions. It is similar to an IAMuser, but is not associated with a specific person. You can temporarily assume an IAM role in the AWSManagement Console by switching roles. You can assume a role by calling an AWS CLI or AWS APIoperation or by using a custom URL. For more information about methods for using roles, see Using IAMRoles in the IAM User Guide.

117

Page 123: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドManaging Access Using Policies

IAM roles with temporary credentials are useful in the following situations:

• Temporary IAM user permissions - An IAM user can assume an IAM role to temporarily take on differentpermissions for a specific task.

• Federated user access - Instead of creating an IAM user, you can use existing identities from AWSDirectory Service, your enterprise user directory, or a web identity provider. These are known asfederated users. AWS assigns a role to a federated user when access is requested through an identityprovider. For more information about federated users, see Federated Users and Roles in the IAM UserGuide.

• Cross-account access - You can use an IAM role to allow someone (a trusted principal) in a differentaccount to access resources in your account. Roles are the primary way to grant cross-account access.However, with some AWS services, you can attach a policy directly to a resource (instead of using a roleas a proxy). To learn the difference between roles and resource-based policies for cross-account access,see How IAM Roles Differ from Resource-based Policies in the IAM User Guide.

• AWS service access - A service role is an IAM role that a service assumes to perform actions in youraccount on your behalf. When you set up some AWS service environments, you must define a role forthe service to assume. This service role must include all the permissions that are required for the serviceto access the AWS resources that it needs. Service roles vary from service to service, but many allowyou to choose your permissions as long as you meet the documented requirements for that service.Service roles provide access only within your account and cannot be used to grant access to servicesin other accounts. You can create, modify, and delete a service role from within IAM. For example, youcan create a role that allows Amazon Redshift to access an Amazon S3 bucket on your behalf and thenload data from that bucket into an Amazon Redshift cluster. For more information, see Creating a Role toDelegate Permissions to an AWS Service in the IAM User Guide.

• Applications running on Amazon EC2 - You can use an IAM role to manage temporary credentials forapplications that are running on an EC2 instance and making AWS CLI or AWS API requests. This ispreferable to storing access keys within the EC2 instance. To assign an AWS role to an EC2 instanceand make it available to all of its applications, you create an instance profile that is attached to theinstance. An instance profile contains the role and enables programs that are running on the EC2instance to get temporary credentials. For more information, see Using an IAM Role to Grant Permissionsto Applications Running on Amazon EC2 Instances in the IAM User Guide.

To learn whether to use IAM roles, see When to Create an IAM Role (Instead of a User) in the IAM UserGuide.

Managing Access Using PoliciesYou control access in AWS by creating policies and attaching them to IAM identities or AWS resources.A policy is an object in AWS that, when associated with an identity or resource, defines their permissions.AWS evaluates these policies when an entity (root user, IAM user, or IAM role) makes a request.Permissions in the policies determine whether the request is allowed or denied. Most policies are storedin AWS as JSON documents. For more information about the structure and contents of JSON policydocuments, see Overview of JSON Policies in the IAM User Guide.

An IAM administrator can use policies to specify who has access to AWS resources, and what actions theycan perform on those resources. Every IAM entity (user or role) starts with no permissions. In other words,by default, users can do nothing, not even change their own password. To give a user permission to dosomething, an administrator must attach a permissions policy to a user. Or the administrator can add theuser to a group that has the intended permissions. When an administrator gives permissions to a group, allusers in that group are granted those permissions.

IAM policies define permissions for an action regardless of the method that you use to perform theoperation. For example, suppose that you have a policy that allows the iam:GetRole action. A user withthat policy can get role information from the AWS Management Console, the AWS CLI, or the AWS API.

118

Page 124: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドManaging Access Using Policies

Identity-Based PoliciesIdentity-based policies are JSON permissions policy documents that you can attach to an identity, suchas an IAM user, role, or group. These policies control what actions that identity can perform, on whichresources, and under what conditions. To learn how to create an identity-based policy, see Creating IAMPolicies in the IAM User Guide.

Identity-based policies can be further categorized as inline policies or managed policies. Inline policies areembedded directly into a single user, group, or role. Managed policies are standalone policies that you canattach to multiple users, groups, and roles in your AWS account. Managed policies include AWS managedpolicies and customer managed policies. To learn how to choose between a managed policy or an inlinepolicy, see Choosing Between Managed Policies and Inline Policies in the IAM User Guide.

Other Policy TypesAWS supports additional, less common policy types. These policy types can set the maximum permissionsgranted to you by the more common policy types.

• Permissions boundaries - A permissions boundary is an advanced feature in which you set the maximumpermissions that an identity-based policy can grant to an IAM entity (IAM user or role). You can set apermissions boundary for an entity. The resulting permissions are the intersection of entity's identity-based policies and its permissions boundaries. Resource-based policies that specify the user or rolein the Principal field are not limited by the permissions boundary. An explicit deny in any of thesepolicies overrides the allow. For more information about permissions boundaries, see PermissionsBoundaries for IAM Entities in the IAM User Guide.

• Service control policies (SCPs) - SCPs are JSON policies that specify the maximum permissions foran organization or organizational unit (OU) in AWS Organizations. AWS Organizations is a servicefor grouping and centrally managing multiple AWS accounts that your business owns. If you enableall features in an organization, then you can apply SCPs to any or all of your accounts. The SCPlimits permissions for entities in member accounts, including each AWS Account root user. For moreinformation about AWS Organizations and SCPs, see How SCPs Work in the AWS Organizations UserGuide.

• Session policies - Session policies are advanced policies that you pass as a parameter when youprogrammatically create a temporary session for a role or federated user. The resulting session'spermissions are the intersection of the user or role's identity-based policies and the session policies.Permissions can also come from a resource-based policy. An explicit deny in any of these policiesoverrides the allow. For more information, see Session Policies in the IAM User Guide.

Multiple Policy TypesWhen multiple types of policies apply to a request, the resulting permissions are more complicated tounderstand. To learn how AWS determines whether to allow a request when multiple policy types areinvolved, see Policy Evaluation Logic in the IAM User Guide.

Learn MoreFor more information about identity and access management for AWS IoT Analytics, continue to thefollowing sections:

• How AWS IoT Analytics Works with IAM (p. 120)• Troubleshooting AWS IoT Analytics Identity and Access (p. 126)

119

Page 125: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドHow AWS IoT Analytics Works with IAM

How AWS IoT Analytics Works with IAMBefore you use IAM to manage access to AWS IoT Analytics, you should understand what IAM features areavailable to use with AWS IoT Analytics. To get a high-level view of how AWS IoT Analytics and other AWSservices work with IAM, see AWS Services That Work with IAM in the IAM User Guide.

AWS IoT Analytics Identity-Based PoliciesWith IAM identity-based policies, you can specify allowed or denied actions and resources and theconditions under which actions are allowed or denied. AWS IoT Analytics supports specific actions,resources, and condition keys. To learn about all of the elements that you use in a JSON policy, see IAMJSON Policy Elements Reference in the IAM User Guide.

Actions

The Action element of an IAM identity-based policy describes the specific action or actions that will beallowed or denied by the policy. Policy actions usually have the same name as the associated AWS APIoperation. The action is used in a policy to grant permissions to perform the associated operation.

Policy actions in AWS IoT Analytics use the following prefix before the action: iotanalytics: Forexample, to grant someone permission to create an AWS IoT Analytics channel with the AWS IoT AnalyticsCreateChannel API operation, you include the iotanalytics:CreateChannel action in theirpolicy. To grant someone permission to send an message data to a channel with the AWS IoT AnalyticsBatchPutMessage API operation, you include the iotanalytics:BatchPutMessage action in theirpolicy. Policy statements must include either an Action or NotAction element. AWS IoT Analyticsdefines its own set of actions that describe tasks that you can perform with this service.

To specify multiple actions in a single statement, separate them with commas as follows.

"Action": [ "iotanalytics:action1", "iotanalytics:action2"

You can specify multiple actions using wildcards (*). For example, to specify all actions that begin with theword Describe, include the following action.

"Action": "iotanalytics:Describe*"

To see a list of AWS IoT Analytics actions, see Actions Defined by AWS IoT Analytics in the IAM UserGuide.

Resources

The Resource element specifies the object or objects to which the action applies. Statements mustinclude either a Resource or a NotResource element. You specify a resource using an ARN or using thewildcard (*) to indicate that the statement applies to all resources.

The AWS IoT Analytics dataset resource has the following ARN.

arn:${Partition}:iotanalytics:${Region}:${Account}:dataset/${DatasetName}

For more information about the format of ARNs, see Amazon Resource Names (ARNs) and AWS ServiceNamespaces.

For example, to specify the Foobar dataset in your statement, use the following ARN.

120

Page 126: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドHow AWS IoT Analytics Works with IAM

"Resource": "arn:aws:iotanalytics:us-east-1:123456789012:dataset/Foobar"

To specify all instances that belong to a specific account, use the wildcard (*).

"Resource": "arn:aws:iotanalytics:us-east-1:123456789012:dataset/*"

Some AWS IoT Analytics actions, such as those for creating resources, cannot be performed on a specificresource. In those cases, you must use the wildcard (*).

"Resource": "*"

Some AWS IoT Analytics API actions involve multiple resources. For example, CreatePipelinereferences a channel and a dataset, so an IAM user must have permissions to use the channel and thedataset. To specify multiple resources in a single statement, separate the ARNs with commas.

"Resource": [ "resource1", "resource2"

To see a list of AWS IoT Analytics resource types and their ARNs, see Resources Defined by AWS IoTAnalytics in the IAM User Guide. To learn with which actions you can specify the ARN of each resource,see Actions Defined by AWS IoT Analytics.

Condition KeysThe Condition element (or Condition block lets you specify conditions in which a statement is in effect.The Condition element is optional. You can build conditional expressions that use condition operators,such as equals or less than, to match the condition in the policy with values in the request.

If you specify multiple Condition elements in a statement, or multiple keys in a single Conditionelement, AWS evaluates them using a logical AND operation. If you specify multiple values for a singlecondition key, AWS evaluates the condition using a logical OR operation. All of the conditions must be metbefore the statement's permissions are granted.

You can also use placeholder variables when you specify conditions. For example, you can grant an IAMuser permission to access a resource only if it is tagged with their IAM user name. For more information,see IAM Policy Elements: Variables and Tags in the IAM User Guide.

AWS IoT Analytics does not provide any service-specific condition keys, but it does support using someglobal condition keys. To see all AWS global condition keys, see AWS Global Condition Context Keys in theIAM User Guide.

ExamplesTo view examples of AWS IoT Analytics identity-based policies, see AWS IoT Analytics Identity-BasedPolicy Examples (p. 122).

AWS IoT Analytics Resource-Based PoliciesAWS IoT Analytics does not support resource-based policies. To view an example of a detailed resource-based policy page, see https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html.

Authorization Based on AWS IoT Analytics TagsYou can attach tags to AWS IoT Analytics resources or pass tags in a request to AWS IoT Analytics. Tocontrol access based on tags, you provide tag information in the condition element of a policy using the

121

Page 127: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics Identity-Based Policy Examples

iotanalytics:ResourceTag/{key-name}, aws:RequestTag/{key-name} or aws:TagKeyscondition keys. For more information about tagging AWS IoT Analytics resources, see Tagging Your AWSIoT Analytics Resources (p. 128).

To view an example identity-based policy for limiting access to a resource based on the tags on thatresource, see Viewing AWS IoT Analytics Channels Based on Tags (p. 125).

AWS IoT Analytics IAM RolesAn IAM role is an entity within your AWS account that has specific permissions.

Using Temporary Credentials with AWS IoT Analytics

You can use temporary credentials to sign in with federation, assume an IAM role, or to assume a cross-account role. You obtain temporary security credentials by calling AWS Security Token Service (AWS STS)API operations such as AssumeRole or GetFederationToken.

AWS IoT Analytics does not support using temporary credentials.

Service-Linked Roles

Service-linked roles allow AWS services to access resources in other services to complete an actionon your behalf. Service-linked roles appear in your IAM account and are owned by the service. An IAMadministrator can view but not edit the permissions for service-linked roles.

AWS IoT Analytics does not support service-linked roles.

Service Roles

This feature allows a service to assume a service role on your behalf. This role allows the service to accessresources in other services to complete an action on your behalf. Service roles appear in your IAM accountand are owned by the account. This means that an IAM administrator can change the permissions for thisrole. However, doing so might break the functionality of the service.

AWS IoT Analytics supports service roles.

AWS IoT Analytics Identity-Based Policy ExamplesBy default, IAM users and roles don't have permission to create or modify AWS IoT Analytics resources.They also can't perform tasks using the AWS Management Console, AWS CLI, or AWS API. An IAMadministrator must create IAM policies that grant users and roles permission to perform specific APIoperations on the specified resources they need. The administrator must then attach those policies to theIAM users or groups that require those permissions.

To learn how to create an IAM identity-based policy using these example JSON policy documents, seeCreating Policies on the JSON Tab in the IAM User Guide.

Policy Best PracticesIdentity-based policies are very powerful. They determine whether someone can create, access, or deleteAWS IoT Analytics resources in your account. These actions can incur costs for your AWS account. Whenyou create or edit identity-based policies, follow these guidelines and recommendations:

• Get Started Using AWS Managed Policies - To start using AWS IoT Analytics quickly, use AWSmanaged policies to give your employees the permissions they need. These policies are already

122

Page 128: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics Identity-Based Policy Examples

available in your account and are maintained and updated by AWS. For more information, see GetStarted Using Permissions With AWS Managed Policies in the IAM User Guide.

• Grant Least Privilege - When you create custom policies, grant only the permissions required to performa task. Start with a minimum set of permissions and grant additional permissions as necessary. Doing sois more secure than starting with permissions that are too lenient and then trying to tighten them later. Formore information, see Grant Least Privilege in the IAM User Guide.

• Enable MFA for Sensitive Operations - For extra security, require IAM users to use multi-factorauthentication (MFA) to access sensitive resources or API operations. For more information, see UsingMulti-Factor Authentication (MFA) in AWS in the IAM User Guide.

• Use Policy Conditions for Extra Security - To the extent that it's practical, define the conditions underwhich your identity-based policies allow access to a resource. For example, you can write conditions tospecify a range of allowable IP addresses that a request must come from. You can also write conditionsto allow requests only within a specified date or time range, or to require the use of SSL or MFA. Formore information, see IAM JSON Policy Elements: Condition in the IAM User Guide.

Using the AWS IoT Analytics ConsoleTo access the AWS IoT Analytics console, you must have a minimum set of permissions. Thesepermissions must allow you to list and view details about the AWS IoT Analytics resources in yourAWS account. If you create an identity-based policy that is more restrictive than the minimum requiredpermissions, the console won't function as intended for entities (IAM users or roles) with that policy.

To ensure that those entities can still use the AWS IoT Analytics console, also attach the following AWSmanaged policy to the entities. For more information, see Adding Permissions to a User in the IAM UserGuide.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotanalytics:BatchPutMessage", "iotanalytics:CancelPipelineReprocessing", "iotanalytics:CreateChannel", "iotanalytics:CreateDataset", "iotanalytics:CreateDatasetContent", "iotanalytics:CreateDatastore", "iotanalytics:CreatePipeline", "iotanalytics:DeleteChannel", "iotanalytics:DeleteDataset", "iotanalytics:DeleteDatasetContent", "iotanalytics:DeleteDatastore", "iotanalytics:DeletePipeline", "iotanalytics:DescribeChannel", "iotanalytics:DescribeDataset", "iotanalytics:DescribeDatastore", "iotanalytics:DescribeLoggingOptions", "iotanalytics:DescribePipeline", "iotanalytics:GetDatasetContent", "iotanalytics:ListChannels", "iotanalytics:ListDatasetContents", "iotanalytics:ListDatasets", "iotanalytics:ListDatastores", "iotanalytics:ListPipelines", "iotanalytics:ListTagsForResource", "iotanalytics:PutLoggingOptions", "iotanalytics:RunPipelineActivity", "iotanalytics:SampleChannelData",

123

Page 129: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics Identity-Based Policy Examples

"iotanalytics:StartPipelineReprocessing", "iotanalytics:TagResource", "iotanalytics:UntagResource", "iotanalytics:UpdateChannel", "iotanalytics:UpdateDataset", "iotanalytics:UpdateDatastore", "iotanalytics:UpdatePipeline" ], "Resource": "arn:${Partition}:iotanalytics:${Region}:${Account}:channel/${channelName}", "Resource": "arn:${Partition}:iotanalytics:${Region}:${Account}:dataset/${datasetName}", "Resource": "arn:${Partition}:iotanalytics:${Region}:${Account}:datastore/${datastoreName}", "Resource": "arn:${Partition}:iotanalytics:${Region}:${Account}:pipeline/${pipelineName}" } ]}

You don't need to allow minimum console permissions for users that are making calls only to the AWS CLIor the AWS API. Instead, allow access to only the actions that match the API operation that you're trying toperform.

Allow Users to View Their Own PermissionsThis example shows how you might create a policy that allows IAM users to view the inline and managedpolicies that are attached to their user identity. This policy includes permissions to complete this action onthe console or programmatically using the AWS CLI or AWS API.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ]

124

Page 130: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドAWS IoT Analytics Identity-Based Policy Examples

}

Accessing One AWS IoT Analytics InputIn this example, you want to grant an IAM user in your AWS account access to one of your AWS IoTAnalytics channels, exampleChannel You also want to allow the user to add, update, and deletechannels.

The policy grants the iotanalytics:ListChannels, iotanalytics:DescribeChannel,iotanalytics:CreateChannel, iotanalytics:DeleteChannel, andiotanalytics:UpdateChannel permissions to the user. For an example walkthrough for theAmazon S3 service that grants permissions to users and tests them using the console, see An ExampleWalkthrough: Using user policies to control access to your bucket.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ListChannelsInConsole", "Effect":"Allow", "Action":[ "iotanalytics:ListChannels" ], "Resource":"arn:aws:iotanalytics:::*" }, { "Sid":"ViewSpecificChannelInfo", "Effect":"Allow", "Action":[ "iotanalytics:DescribeChannel" ], "Resource":"arn:aws:iotanalytics:::exampleChannel" }, { "Sid":"ManageChannels", "Effect":"Allow", "Action":[ "iotanalytics:CreateChannel", "iotanalytics:DeleteChannel", "iotanalytics:DescribeChannel", "iotanalytics:ListChannels", "iotanalytics:UpdateChannel" ], "Resource":"arn:aws:iotanalytics:::exampleChannel/*" } ] }

Viewing AWS IoT Analytics Channels Based on TagsYou can use conditions in your identity-based policy to control access to AWS IoT Analytics resourcesbased on tags. This example shows how you might create a policy that allows viewing a channel.However, permission is granted only if the channel tag Owner has the value of that user's user name. Thispolicy also grants the permissions needed to complete this action on the console.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListChannelsInConsole",

125

Page 131: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドTroubleshooting AWS IoT Analytics Identity and Access

"Effect": "Allow", "Action": "iotanalytics:ListChannels", "Resource": "*" }, { "Sid": "ViewChannelsIfOwner", "Effect": "Allow", "Action": "iotanalytics:ListChannels", "Resource": "arn:aws:iotanalytics:*:*:channel/*", "Condition": { "StringEquals": {"iotanalytics:ResourceTag/Owner": "${aws:username}"} } } ]}

You can attach this policy to the IAM users in your account. If a user named richard-roe attemptsto view an AWS IoT Analytics channel, the channel must be tagged Owner=richard-roe orowner=richard-roe. Otherwise, he is denied access. The condition tag key Owner matches both Ownerand owner because condition key names are not case sensitive. For more information, see IAM JSONPolicy Elements: Condition in the IAM User Guide.

Troubleshooting AWS IoT Analytics Identity andAccessUse the following information to help you diagnose and fix common issues that you might encounter whenworking with AWS IoT Analytics and IAM.

If the AWS Management console tells you that you're not authorized to perform an action, then you mustcontact your administrator for assistance. Your administrator is the person that provided you with your username and password.

The following example error occurs when the mateojackson IAM user tries to use the console to viewdetails about a channel but does not have iotanalytics:ListChannels permissions.

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotanalytics:``ListChannels`` on resource: ``my-example-channel``

In this case, Mateo asks his administrator to update his policies to allow him to access the my-example-channel resource using the iotanalytics:ListChannel action.

If you receive an error that you're not authorized to perform the iam:PassRole action, then you mustcontact your administrator for assistance. Your administrator is the person that provided you with youruser name and password. Ask that person to update your policies to allow you to pass a role to AWS IoTAnalytics.

Some AWS services allow you to pass an existing role to that service, instead of creating a new service roleor service-linked role. To do this, you must have permissions to pass the role to the service.

The following example error occurs when an IAM user named marymajor tries to use the console toperform an action in AWS IoT Analytics. However, the action requires the service to have permissionsgranted by a service role. Mary does not have permissions to pass the role to the service.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

In this case, Mary asks her administrator to update her policies to allow her to perform the iam:PassRoleaction.

126

Page 132: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドTroubleshooting AWS IoT Analytics Identity and Access

After you create your IAM user access keys, you can view your access key ID at any time. However, youcan't view your secret access key again. If you lose your secret key, you must create a new access keypair.

Access keys consist of two parts: an access key ID (for example, AKIAIOSFODNN7EXAMPLE) and a secretaccess key (for example, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). Like a user name andpassword, you must use both the access key ID and secret access key together to authenticate yourrequests. Manage your access keys as securely as you do your user name and password.

Important

Do not provide your access keys to a third party, even to help find your canonical user ID. By doingthis, you might give someone permanent access to your account.

When you create an access key pair, you are prompted to save the access key ID and secret accesskey in a secure location. The secret access key is available only at the time you create it. If you lose yoursecret access key, you must add new access keys to your IAM user. You can have a maximum of twoaccess keys. If you already have two, you must delete one key pair before creating a new one. To viewinstructions, see Managing Access Keys in the IAM User Guide.

To allow others to access AWS IoT Analytics, you must create an IAM entity (user or role) for the person orapplication that needs access. They will use the credentials for that entity to access AWS. You must thenattach a policy to the entity that grants them the correct permissions in AWS IoT Analytics.

To get started right away, see Creating Your First IAM Delegated User and Group in the IAM User Guide.

You can create a role that users in other accounts or people outside of your organization can use to accessyour resources. You can specify who is trusted to assume the role. For services that support resource-based policies or access control lists (ACLs), you can use those policies to grant people access to yourresources.

To learn more, consult the following:

• To learn whether AWS IoT Analytics supports these features, see How AWS IoT Analytics Works withIAM (p. 120).

• To learn how to provide access to your resources across AWS accounts that you own, see ProvidingAccess to an IAM User in Another AWS Account That You Own in the IAM User Guide.

• To learn how to provide access to your resources to third-party AWS accounts, see Providing Access toAWS Accounts Owned by Third Parties in the IAM User Guide.

• To learn how to provide access through identity federation, see Providing Access to ExternallyAuthenticated Users (Identity Federation) in the IAM User Guide.

• To learn the difference between using roles and resource-based policies for cross-account access, seeHow IAM Roles Differ from Resource-based Policies in the IAM User Guide.

127

Page 133: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドタグの基本

AWS IoT Analytics リソースのタグ付け

チャネル、データセットおよびパイプラインの管理を支援するため、これらの各リソースにはタグという形式で独自のメタデータをオプションで割り当てることができます。この章では、タグとその作成方法について説明します。

タグの基本タグを使用すると、AWS IoT Analytics リソースを目的、所有者、環境などさまざまな方法で分類することができます。これは、同じ型のリソースが多数ある場合に役立ちます。割り当てたタグに基づいて特定のリソースをすばやく識別できます。タグはそれぞれ、1 つのキーとオプションの値で構成され、どちらもユーザーが定義します。たとえば、チャネルに一連のタグを定義して、各チャネルのメッセージソースを担当するデバイスのタイプを追跡することができます。ニーズを満たす一連のタグキーをリソースタイプごとに考案されることをお勧めします。一貫性のあるタグキーセットを使用することで、リソースの管理が容易になります。追加したタグに基づいてリソースを検索およびフィルタリングできます。

また、AWS コストを分類して追跡するためにもタグを使用できます。チャネル、データセット、あるいはパイプラインにタグを適用すると、AWS はタグ別に利用量とコストを集計したカンマ区切り値 (CSV)ファイルとしてコスト配分レポートを作成します。自社のカテゴリ (たとえばコストセンター、アプリケーション名、所有者) を表すタグを適用すると、複数のサービスにわたってコストを分類することができます。コスト配分でのタグの使用の詳細については、AWS 請求とコスト管理ユーザーガイドの「コスト配分タグの使用」を参照してください。

利便度を向上させる目的で AWS マネジメントコンソール でタグエディタを使用すると、集中管理の統合された方法によるタグの作成と管理ができます。詳細については、AWS マネージメントコンソールの開始方法の「タグエディタの使用方法」を参照してください。

AWS CLI および AWS IoT Analytics API を使用しても、タグを操作できます。タグの作成時に、チャネル、データセット、データストア、およびパイプラインとタグを関連付けることができます。次のコマンドでタグフィールドを使用します。

• CreateChannel (p. 134)• CreateDataset (p. 137)• CreateDatastore (p. 146)• CreatePipeline (p. 150)

タグ付けがサポートされている既存のリソースのタグを追加、変更、または削除するには、次のコマンドを使用できます。

• TagResource (p. 212)• ListTagsForResource (p. 199)• UntagResource (p. 213)

タグのキーと値は編集でき、タグはリソースからいつでも削除できます。タグの値を空の文字列に設定することはできますが、タグの値を null に設定することはできません。特定のリソースについて既存のタグと同じキーを持つタグを追加した場合、古い値は新しい値によって上書きされます。リソースを削除すると、リソースに関連付けられているすべてのタグも削除されます。

128

Page 134: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドIAM ポリシーでのタグの使用

IAM ポリシーでのタグの使用IAM ポリシーの以下の条件コンテキストのキーと値とともに Condition 要素 (Condition ブロックとも呼ばれる) を使用して、リソースのタグに基づいてユーザーアクセス (アクセス許可) を制御できます。

• iotanalytics:ResourceTag/<tag-key>: <tag-value> を使用して、特定のタグを持つリソースに対してユーザーアクションを許可または拒否します。

• aws:RequestTag/<tag-key>: <tag-value> を使用して、タグが許可されているリソースを作成または変更する API リクエストを作成する場合には、特定のタグが使用されている (または、使用されていない) ことを要求します。

• aws:TagKeys: [<tag-key>, ...] を使用して、タグが許可されているリソースを作成または変更する API リクエストを作成する場合には、特定の一連のタグが使用されている (または、使用されていない) ことを要求します。

Note

IAM ポリシーの条件コンテキストのキー/値は、タグ付け可能なリソースの ID が必須パラメータである AWS IoT Analytics アクションにのみ適用されます。たとえば、タグ付け可能なリソース(チャンネル、データセット、データストアまたはパイプライン) がこのリクエスト内で参照されないため、DescribeLoggingOptions (p. 176) の使用は条件コンテキストキー/値に基づいて許可/拒否されません。

AWS Identity and Access Management ユーザーガイドの「タグを使用したアクセス制御」には、タグの使用に関する追加情報が記載されています。そのガイドの「IAM JSON ポリシーリファレンス」セクションには、IAM での JSON ポリシーの要素、変数、および評価ロジックの詳細な構文、説明、および例が記載されています。

次のポリシー例では、タグベースの 2 つの制約が適用されています。このポリシーによって制限されている IAM ユーザーは、次のように制限されます。

• リソースにタグ "env=prod" を付与できません (この例の "aws:RequestTag/env" : "prod" の行を参照)。

• 既存のタグ "env=prod" を持つリソースに対しては変更またはアクセスできません (この例の"iotanalytics:ResourceTag/env" : "prod" の行を参照)。

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Action" : "iotanalytics:*", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:RequestTag/env" : "prod" } } }, { "Effect" : "Deny", "Action" : "iotanalytics:*", "Resource" : "*", "Condition" : { "StringEquals" : { "iotanalytics:ResourceTag/env" : "prod" }

129

Page 135: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドタグの制限

} }, { "Effect": "Allow", "Action": [ "iotanalytics:*" ], "Resource": "*" } ]}

次のようにタグ値を 1 つのリストとして指定して、1 つのタグキーに対して複数のタグ値を指定することもできます。

"StringEquals" : { "iotanalytics:ResourceTag/env" : ["dev", "test"]}

Note

タグに基づいてリソースへのユーザーのアクセスを許可/拒否する場合は、ユーザーが同じリソースに対してそれらのタグを追加または削除する機能を明示的に拒否することを検討してください。そうしなければ、ユーザーはそのリソースのタグを変更することで、制限を回避してリソースにアクセスできます。

タグの制限タグには以下のような基本制限があります。

• リソースあたりのタグの最大数: 50• キーの最大長: 127 文字 (Unicode) (UTF-8)• 値の最大長: 255 文字 (Unicode) (UTF-8)• タグのキーと値は大文字と小文字が区別されます。• タグの名前または値に aws: プレフィックスは使用しないでください。このプレフィックスは AWS 用に

予約されています。このプレフィックスが含まれるタグの名前または値は編集または削除できません。このプレフィックスを持つタグは、リソースあたりのタグ数の制限時には計算されません。

• 複数のサービス間およびリソース間でタグ付けスキーマを使用する場合、他のサービスでも許可される文字に制限が適用されることがあるのでご注意ください。一般的に、使用が許可される文字は、UTF-8で表現できる文字、スペース、および数字と特殊文字 (+ - = . _ : / @) です。

130

Page 136: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドBatchPutMessage

AWS IoT 分析コマンドBatchPutMessage

メッセージをチャネルに送信します。

CLI の概要:

aws iotanalytics batch-put-message --channel-name <value> --messages <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string", "messages": [ { "messageId": "string", "payload": "blob" } ]}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージが送信されるチャネルの名前。• メッセージ

型: リストメンバー: メッセージ

送信されるメッセージのリスト。各メッセージの形式: {"messageId": "string", "payload": "string"}。AWSIoT 分析に送信するメッセージペイロード (データ) のフィールド名は、英数字および下線 (_) のみを使用でき、他の特殊文字を使用することはできないことに注意してください。先頭は、英字または 1 つの下線 (_) にする必要があります。ハイフン (-) を含めることはできません。正規表現では次のとおりです。"^[<problematic>A-Za-z_</problematic>]([A-Za-z0-9]*|[A-Za-z0-9][<problematic>A-Za-z0-9_</problematic>]*)$"255 文字を超えることはできません。大文字と小文字は区別されます。(同じペイロードのフィールド名の "foo" と "FOO" は重複と見なされます。) たとえば、メッセージペイロードでは {"temp_01": 29}や {"_temp_01": 29} は有効ですが、{"temp-01": 29}、{"01_temp": 29} や {"__temp_01": 29} は無効です。

• messageId

型: 文字列 (長さ - 最大: 128 最小: 1)

メッセージに割り当てる ID。各 "messageId" は送信される各バッチ内で一意であることが必要です。

131

Page 137: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドBatchPutMessage

• payload

型: blob

メッセージのペイロード。JSON 文字列あるいは Base64 でエンコードされた文字列で表されたバイナリデータ (この場合、パイプラインアクティビティによってデコードする必要あり) を使用できます。

出力:

{ "batchPutMessageErrorEntries": [ { "messageId": "string", "errorCode": "string", "errorMessage": "string" } ]}

fields:

• batchPutMessageErrorEntries

型: リストメンバー: BatchPutMessageErrorEntry

チャネルへのメッセージの送信時に発生したエラーのリスト。• messageId

型: 文字列 (長さ - 最大: 128 最小: 1)

エラーの原因となったメッセージの ID(メッセージオブジェクトの "messageId" キーに対応する値を参照)。

• errorCode

型: 文字列

エラーに関連付けられたコード。• errorMessage

型: 文字列

エラーに関連付けられたメッセージ。

エラー:

• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

132

Page 138: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCancelPipelineReprocessing

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

CancelPipelineReprocessingパイプラインによるデータの再処理をキャンセルします。

CLI の概要:

aws iotanalytics cancel-pipeline-reprocessing --pipeline-name <value> --reprocessing-id <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "pipelineName": "string", "reprocessingId": "string"}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データの再処理がキャンセルされるパイプラインの名前。• reprocessingId

型: 文字列

再処理タスクの ID ("StartPipelineReprocessing" によって返される)。

出力:

なし

エラー:

• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404

133

Page 139: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateChannel

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

CreateChannelチャネルを作成します。チャネルは、MQTT トピックからデータを収集し、未処理の raw メッセージをアーカイブしてから、データをパイプラインに発行します。

CLI の概要:

aws iotanalytics create-channel --channel-name <value>[--channel-storage <value>][--retention-period <value>][--tags <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string", "channelStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "tags": [ { "key": "string", "value": "string" }

134

Page 140: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateChannel

]}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

チャネルの名前。• channelStorage

型: ChannelStorage

ここにチャネルデータが保存されます。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。チャネルの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedChannelS3Storage

チャネルデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• customerManagedS3

型: CustomerManagedChannelS3Storage

チャネルデータをユーザーが管理する S3 バケットに保存する場合に使用します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

チャネルのデータが保存されている Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] チャネルデータオブジェクトのキーを作成するために使用されるプレフィックス。AmazonS3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• retentionPeriod

型: RetentionPeriod

チャネルのメッセージデータが保持される時間 (日数)。"customerManagedS3" ストレージが選択されている場合、このパラメータは無視されます。

• 無制限

型: ブール

135

Page 141: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateChannel

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• タグ

型: リストメンバー: タグ

チャネルを管理するために使用できるメタデータ。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

出力:

{ "channelName": "string", "channelArn": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

チャネルの名前。• channelArn

型: 文字列

チャネルの ARN。• retentionPeriod

型: RetentionPeriod

チャネルのメッセージデータが保持される時間 (日数)。• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

136

Page 142: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

CreateDatasetデータセットを作成します。データセットは、「queryAction」(SQL クエリ) または「containerAction」(コンテナ化されたアプリケーションの実行) を適用して保存されたデータから取得されたデータを保存します。このオペレーションはデータセットのスケルトンを作成します。データセットは、「CreateDatasetContent」を呼び出すことで手動で、あるいは指定した「trigger」に応じて自動で入力することができます。

CLI の概要:

aws iotanalytics create-dataset --dataset-name <value> --actions <value>[--triggers <value>][--content-delivery-rules <value>][--retention-period <value>][--versioning-configuration <value>][--tags <value>]

137

Page 143: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "actions": [ { "actionName": "string", "queryAction": { "sqlQuery": "string", "filters": [ { "deltaTime": { "offsetSeconds": "integer", "timeExpression": "string" } } ] }, "containerAction": { "image": "string", "executionRoleArn": "string", "resourceConfiguration": { "computeType": "string", "volumeSizeInGB": "integer" }, "variables": [ { "name": "string", "stringValue": "string", "doubleValue": "double", "datasetContentVersionValue": { "datasetName": "string" }, "outputFileUriValue": { "fileName": "string" } } ] } } ], "triggers": [ { "schedule": { "expression": "string" }, "dataset": { "name": "string" } } ], "contentDeliveryRules": [ { "entryName": "string", "destination": { "iotEventsDestinationConfiguration": { "inputName": "string", "roleArn": "string" }, "s3DestinationConfiguration": { "bucket": "string", "key": "string",

138

Page 144: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

"glueConfiguration": { "tableName": "string", "databaseName": "string" }, "roleArn": "string" } } } ], "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "versioningConfiguration": { "unlimited": "boolean", "maxVersions": "integer" }, "tags": [ { "key": "string", "value": "string" } ]}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• アクション

型: リストメンバー: DatasetAction

データセットコンテンツを作成するアクションのリスト。• actionName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットコンテンツを自動的に作成するデータセットアクションの名前。• queryAction

型: SqlQueryDatasetAction

自動的にデータセットコンテンツを作成するために SQL クエリを使用する「SqlQueryDatasetAction」オブジェクト。

• sqlQuery

型: 文字列

SQL クエリ文字列。• フィルタ

型: リストメンバー: QueryFilter

メッセージデータには事前フィルターが適用されます。• deltaTime

型: デルタ時間

139

Page 145: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

アクションが最後に実行されてから到着したデータに制限するために使用されます。• offsetSeconds

型: Integer Java クラス: java.lang.Integer

メッセージデータで予測される処理中のラグタイムの秒数。メッセージデータを使用して、指定された時間枠でデータセットのコンテンツを作成するとき、処理の開始時に一部のメッセージデータがまだ処理中であり、処理されるための時間内に到着しない場合があります。このフィールドを使用すると、メッセージデータの処理中時間を考慮できます。これによって、以前の時間枠で処理されなかったデータが次回の時間枠に含まれるようになります。これを使用しない場合、逃したメッセージデータは次回の時間枠中に処理から除外されます。これは、タイムスタンプがこのメッセージデータを前回の時間枠内に配置するためです。

• timeExpression

型: 文字列

メッセージデータの時間が判断されることがある式。これは、タイムスタンプフィールドの名前、あるいは、メッセージデータが生成された時間を得るために使用される SQL 式となります。

• containerAction

型: ContainerDatasetAction

システムがコンテナ化されたアプリケーションを実行して、データセットコンテンツを作成できるようにする情報。アプリケーションは、必要なサポートされるライブラリとともに Docker コンテナに含まれている必要があります。

• イメージ

型: 文字列 (長さ - 最大: 255)

アカウントに保存された Docker コンテナの ARN。Docker コンテナにはアプリケーションと必要なサポートライブラリが含まれ、データセットコンテンツを生成するために使用されます。

• executionRoleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

「containerAction」を実行するために、システムが必要なリソースにアクセスできるためにアクセス許可を付与するロールの ARN。これには、最低限でもコンテナ化されたアプリケーションへの入力であるデータセットコンテンツを取得するアクセス権限がふくまれています。

• resourceConfiguration

型: ResourceConfiguration

「containerAction」を実行するリソースの設定。• computeType

型: 文字列

「containerAction」を実行するために使用されるコンピューティングリソースのタイプ。使用できる値は次のとおりです: ACU_1 (vCPU=4、メモリ=16GiB) あるいは ACU_2 (vCPU=8、メモリ=32GiB)。enum: ACU_1 | ACU_2

• volumeSizeInGB

型: 整数範囲 - 最大:50 最小:1

「containerAction」(最小: 1、最大: 50) を実行するために使用されるリソースインスタンスで利用できる永続的ストレージのサイズ (GB 単位)。

140

Page 146: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

• 変数

型: リストメンバー: 変数

コンテナ化されたアプリケーションの実行のコンテキストで使用される変数の値 (基本的には、アプリケーションにわたされるパラメータ)。各変数には、「stringValue」、「datasetContentVersionValue」あるいは「outputFileUriValue」のいずれか 1 つから与えられた名前と値が必要です。

• name

型: 文字列 (長さ - 最大: 256 最小: 1)

変数の名前。• stringValue

型: 文字列 (長さ - 最大: 1024 最小: 0)

変数の値 (文字列)。• datasetContentVersionValue

型: DatasetContentVersionValue

データセットコンテンツのバージョンを指定する変数の値 (構造体)。• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

最後のコンテンツがノートブックまたはアプリケーションへの入力として使用されるデータセットの名前。

• outputFileUriValue

型: OutputFileUriValue

出力ファイルの URI を指定する変数の値 (構造体)。• fileName

型: 文字列 (パターン: [w.-]{1,255})

データセットコンテンツが保存されている場所の URI。通常は、S3 バケット内のファイルの URI です。

• トリガー

型: リストメンバー: DatasetTrigger

トリガーのリスト。トリガーによって、指定された時間間隔、あるいは他のデータセットのコンテンツが作成されたときにデータセットコンテンツが入力されます。トリガーのリストは空にすることも、最大 5 個の DataSetTrigger オブジェクトを含めることもできます。

• schedule

型: スケジュール

トリガーが開始される "スケジュール"。• expression

型: 文字列

更新がいつトリガーされるかを定義する式。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

• データセット

141

Page 147: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

型: TriggeringDataset

このデータセットのコンテンツの作成をトリガーするコンテンツ作成があるデータセット。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

新しいデータセットのコンテンツ生成をトリガーするコンテンツ作成があるデータセットの名前。• contentDeliveryRules

型: list member: DatasetContentDeliveryRule

データセットコンテンツが作成されると、ここで指定した送信先に配信されます。• entryName

型: 文字列

データセットコンテンツ配信ルールのエントリの名前。• 送信先

型: DatasetContentDeliveryDestination

データセットコンテンツが配信される送信先。• iotEventsDestinationConfiguration

型: IotEventsDestinationConfiguration

データセットコンテンツを AWS IoT Events に配信するための設定情報。• inputName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z][a-zA-Z0-9_]*$)

データセットコンテンツが配信される AWS IoT Events 入力の名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して、データセットコンテンツを AWS IoT Events 入力に配信できるようにするロールの ARN。

• s3DestinationConfiguration

型: S3DestinationConfiguration

データセットコンテンツを Amazon S3 に配信するための設定情報。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データセットコンテンツが配信される Amazon S3 バケットの名前。• key

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*$)

データセットコンテンツのオブジェクトのキー。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。一意のキーを生成するには、"!{iotanalytics:scheduledTime}" を使用してスケジュールされた

142

Page 148: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

SQL クエリ実行の時間を挿入するか、"!{iotanalytics:versioned}" を使用してデータセットを識別する一意のハッシュを挿入します。例: "/DataSet/!{iotanalytics:scheduledTime}/!{iotanalytics:versioned}.csv"

• glueConfiguration

型: GlueConfiguration

AWS Glue ETL (抽出、変換、ロード) サービスと連携するための設定情報。• tableName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

ETL (抽出、変換、ロード) の操作を実行するために使用される AWS Glue データカタログのテーブルの名前。(AWS Glue データカタログのテーブルには、パーティション分割されたデータと、データのソースおよびターゲットの説明が含まれます。)

• databaseName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

テーブルが配置されている AWS Glue データカタログにあるデータベースの名前。(AWS Glue データカタログのデータベースには Glue データテーブルが含まれています。)

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースと AWS Glue リソースを操作できるようにするロールの ARN。

• retentionPeriod

型: RetentionPeriod

[オプション] データセットのデータセットコンテンツのバージョンが保持される期間 (日数)。指定しない場合、または null に設定されている場合、データセットコンテンツのバージョンが保持される期間は最大 90 日間です。保持されるデータセットコンテンツのバージョンの数は、versioningConfigurationパラメータによって決定されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• versioningConfiguration

型: VersioningConfiguration

[オプション] 保持されるデータセットコンテンツのバージョンの数。指定しない、または null に設定されている場合、最終バージョン、および最後に成功したバージョン (この 2 つが異なる場合)は、"retentionPeriod" パラメータで指定されている期間保持されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

143

Page 149: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDataset

型: ブール

true の場合、データセットコンテンツの無制限のバージョンが保持されます。• maxVersions

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

保持されるデータセットコンテンツのバージョンの数。"unlimited" パラメータは false であることが必要です。

• タグ

型: リストメンバー: タグ

データセットを管理するために使用できるメタデータ。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

出力:

{ "datasetName": "string", "datasetArn": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• datasetArn

型: 文字列

データセットの ARN。• retentionPeriod

型: RetentionPeriod

データセットのデータセットコンテンツが保持される期間 (日数)。• 無制限

型: ブール

144

Page 150: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDatasetContent

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

CreateDatasetContentデータセットコンテンツは、"queryAction" (SQL クエリ) または "containerAction" (コンテナ化されたアプリケーションの実行) を適用することで作成されます。

CLI の概要:

aws iotanalytics create-dataset-content --dataset-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{

145

Page 151: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDatastore

"datasetName": "string"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。

出力:

{ "versionId": "string"}

fields:

• versionId

型: 文字列 (長さ - 最大: 36 最小: 7)

作成されたデータセットコンテンツのバージョン ID。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

CreateDatastoreメッセージのリポジトリであるデータストアを作成します。

146

Page 152: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDatastore

CLI の概要:

aws iotanalytics create-datastore --datastore-name <value>[--datastore-storage <value>][--retention-period <value>][--tags <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datastoreName": "string", "datastoreStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "tags": [ { "key": "string", "value": "string" } ]}

fields:

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データストアの名前。• datastoreStorage

型: DatastoreStorage

データストアのデータが保存されている場所。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。データストアの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedDatastoreS3Storage

データストアのデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

• customerManagedS3

型: CustomerManagedDatastoreS3Storage

147

Page 153: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDatastore

データストアのデータをユーザーが管理する S3 バケットに保存します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データストアのデータが保存される Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] データストアのデータオブジェクトのキーを作成するために使用されるプレフィックス。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります(バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• retentionPeriod

型: RetentionPeriod

データストアのメッセージデータが保持される期間 (日数)。"customerManagedS3" ストレージが選択されている場合、このパラメータは無視されます。

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• タグ

型: リストメンバー: タグ

データストアを管理するために使用できるメタデータ。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

出力:148

Page 154: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreateDatastore

{ "datastoreName": "string", "datastoreArn": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }}

fields:

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データストアの名前。• datastoreArn

型: 文字列

データストアの ARN。• retentionPeriod

型: RetentionPeriod

データストアのメッセージデータが保持される期間 (日数)。• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません149

Page 155: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

CreatePipelineパイプラインを作成します。パイプラインではチャネルからのメッセージが消費されるため、メッセージをデータストアに保存する前に処理できます。チャネルとデータストアのアクティビティの両方を指定する必要があります。また、必要に応じて、pipelineActivities 配列内の最大 23 個のアクティビティを追加で指定します。

CLI の概要:

aws iotanalytics create-pipeline --pipeline-name <value> --pipeline-activities <value>[--tags <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "pipelineName": "string", "pipelineActivities": [ { "channel": { "name": "string", "channelName": "string", "next": "string" }, "lambda": { "name": "string", "lambdaName": "string", "batchSize": "integer", "next": "string" }, "datastore": { "name": "string", "datastoreName": "string" }, "addAttributes": { "name": "string", "attributes": { "string": "string" }, "next": "string" }, "removeAttributes": { "name": "string",

150

Page 156: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

"attributes": [ "string" ], "next": "string" }, "selectAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "filter": { "name": "string", "filter": "string", "next": "string" }, "math": { "name": "string", "attribute": "string", "math": "string", "next": "string" }, "deviceRegistryEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" }, "deviceShadowEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" } } ], "tags": [ { "key": "string", "value": "string" } ]}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

パイプラインの名前。• pipelineActivities

型: リストメンバー: PipelineActivity

"PipelineActivity" オブジェクトのリスト。アクティビティはメッセージに対して変換を実行します。これには、メッセージ属性の削除/名前変更/追加、属性値に基づくメッセージのフィルタ処理、高度な処理のためのメッセージに対する Lambda 関数の呼び出し、算術変換の実行によるデバイスデータの正規化などが含まれます。このリストには 2~25 個の PipelineActivity オブジェクトを含めることができますが、チャネルとデータストアのアクティビティの両方が含まれている必要があります。リスト内

151

Page 157: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

のエントリごとに 1 つのアクティビティのみが含まれている必要があります。例: pipelineActivities =[ { "channel": { ... } }, { "lambda": { ... } }, ... ]

• チャンネル

型: ChannelActivity

処理されるメッセージのソースを決定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"チャネル" アクティビティの名前。• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージが処理されるチャネルの名前。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• lambda

型: LambdaActivity

メッセージを変更する Lambda 関数を実行します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"lambda" アクティビティの名前。• lambdaName

型: 文字列 (長さ: 1 ~ 64)、(パターン: ^[a-zA-Z0-9_-]+$)

メッセージに対して実行される Lambda 関数の名前。• batchSize

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

処理のために Lambda 関数に渡されるメッセージの数。AWS Lambda 関数はこれらのメッセージのすべてを 5 分以内 (Lambda 関数の最大タイムアウト期間内) に処理できる必要があります。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• データストア

型: DatastoreActivity

処理されるメッセージデータを保存する場所を指定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"データストア" アクティビティの名前。

152

Page 158: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

処理されたメッセージが保存されるデータストアの名前。• addAttributes

型: AddAttributesActivity

メッセージの既存の属性に基づいて他の属性を追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"addAttributes" アクティビティの名前。• 個の属性

型: Map キー: AttributeName 値: AttributeName

既存の属性を新しい属性にマップする 1 ~ 50 個の "AttributeNameMapping" オブジェクトのリスト。元のメッセージには既存の属性が残っているため、そのメッセージを削除する場合はRemoveAttributeActivity を使用します。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• removeAttributes

型: RemoveAttributesActivity

メッセージから属性を削除します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"removeAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージから削除する 1 〜 50 個の属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• selectAttributes

型: SelectAttributesActivity

元のメッセージの属性のうち、指定したもののみを使用して、新しいメッセージを作成します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"selectAttributes" アクティビティの名前。• 個の属性

153

Page 159: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

型: リストメンバー: AttributeName

メッセージの選択した属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• フィルター

型: FilterActivity

メッセージをその属性に基づいてフィルタ処理します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"フィルタ" アクティビティの名前。• フィルター

型: 文字列 (長さ - 最大: 256 最小: 1)

ブール値を返す必要のある SQL WHERE 句のような式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• 算術

型: MathActivity

メッセージの属性を使用して算術式を計算し、結果をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"算術" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

算術オペレーションの結果を含む属性の名前。• 算術

型: 文字列 (長さ - 最大: 256 最小: 1)

1 つ以上の既存の属性を使用し、整数値を返す必要のある式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceRegistryEnrich

型: DeviceRegistryEnrichActivity154

Page 160: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

AWS IoT デバイスレジストリのデータをメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceRegistryEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

レジストリ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのレジストリ情報へのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceShadowEnrich

型: DeviceShadowEnrichActivity

AWS IoT Device Shadows サービスの情報をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceShadowEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

シャドウ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのシャドウへのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• タグ

155

Page 161: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドCreatePipeline

型: リストメンバー: タグ

パイプラインを管理するために使用できるメタデータ。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

出力:

{ "pipelineName": "string", "pipelineArn": "string"}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

パイプラインの名前。• pipelineArn

型: 文字列

パイプラインの ARN。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503

156

Page 162: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeleteChannel

• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

DeleteChannel指定したチャネルを削除します。

CLI の概要:

aws iotanalytics delete-channel --channel-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string"}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

削除するチャネルの名前。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

157

Page 163: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeleteDataset

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DeleteDataset指定したデータセットを削除します。このオペレーションの実行前にデータセットの内容を削除する必要はありません。

CLI の概要:

aws iotanalytics delete-dataset --dataset-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

削除するデータセットの名前。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404

158

Page 164: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeleteDatasetContent

• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DeleteDatasetContent指定したデータセットの内容を削除します。

CLI の概要:

aws iotanalytics delete-dataset-content --dataset-name <value>[--version-id <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "versionId": "string"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

内容が削除されるデータセットの名前。• versionId

型: 文字列 (長さ - 最大: 36 最小: 7)

内容が削除されるデータセットのバージョン。文字列 "$LATEST" または "$LATEST_SUCCEEDED" を使用して、最新のデータセットまたは最新の正常に完了したデータセットを削除できます。指定しない場合は、"$LATEST_SUCCEEDED" がデフォルトです。

出力:

なし

エラー:

159

Page 165: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeleteDatastore

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DeleteDatastore指定したデータストアを削除します。

CLI の概要:

aws iotanalytics delete-datastore --datastore-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datastoreName": "string"}

fields:

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

削除するデータストアの名前。

出力:

なし

160

Page 166: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDeletePipeline

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DeletePipeline指定したパイプラインを削除します。

CLI の概要:

aws iotanalytics delete-pipeline --pipeline-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "pipelineName": "string"}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

削除するパイプラインの名前。

出力:

161

Page 167: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeChannel

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribeChannelチャネルに関する情報を取得します。

CLI の概要:

aws iotanalytics describe-channel --channel-name <value>[--include-statistics | --no-include-statistics][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string", "includeStatistics": "boolean"}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

情報が取得されるチャネルの名前。

162

Page 168: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeChannel

• includeStatistics

型: ブール

true の場合、チャンネルに関するその他の統計情報は、レスポンスに含まれています。S3 ストレージがユーザーによって管理されている場合、この機能をチャネルで使用することはできません。

出力:

{ "channel": { "name": "string", "storage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "arn": "string", "status": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "creationTime": "timestamp", "lastUpdateTime": "timestamp" }, "statistics": { "size": { "estimatedSizeInBytes": "double", "estimatedOn": "timestamp" } }}

fields:

• チャンネル

型: チャネル

チャネルに関する情報を含むオブジェクト。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

チャネルの名前。• ストレージ

型: ChannelStorage

チャネルデータが保存される場所。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。チャネルの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedChannelS3Storage

163

Page 169: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeChannel

チャネルデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• customerManagedS3

型: CustomerManagedChannelS3Storage

チャネルデータをユーザーが管理する S3 バケットに保存する場合に使用します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

チャネルのデータが保存されている Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] チャネルデータオブジェクトのキーを作成するために使用されるプレフィックス。AmazonS3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• arn

型: 文字列

チャネルの ARN。• status

型: 文字列

チャンネルのステータス。enum: CREATING | ACTIVE | DELETING• retentionPeriod

型: RetentionPeriod

チャネルのメッセージデータが保持される時間 (日数)。• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• creationTime

型: タイムスタンプ

164

Page 170: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

チャネルが作成された時間。• lastUpdateTime

型: タイムスタンプ

チャネルが前回更新された時間。• 統計

型: ChannelStatistics

チャネルに関する統計情報。リクエストで「includeStatistics」パラメータが true に設定されている場合に含まれます。

• size

型: EstimatedResourceSize

チャネルの予測されるサイズ。• estimatedOn

型: タイムスタンプ

リソースのサイズが予測された時間。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribeDatasetデータセットに関する情報を取得します。

165

Page 171: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

CLI の概要:

aws iotanalytics describe-dataset --dataset-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

情報が取得されるデータセットの名前。

出力:

{ "dataset": { "name": "string", "arn": "string", "actions": [ { "actionName": "string", "queryAction": { "sqlQuery": "string", "filters": [ { "deltaTime": { "offsetSeconds": "integer", "timeExpression": "string" } } ] }, "containerAction": { "image": "string", "executionRoleArn": "string", "resourceConfiguration": { "computeType": "string", "volumeSizeInGB": "integer" }, "variables": [ { "name": "string", "stringValue": "string", "doubleValue": "double", "datasetContentVersionValue": { "datasetName": "string" }, "outputFileUriValue": { "fileName": "string" } } ] }

166

Page 172: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

} ], "triggers": [ { "schedule": { "expression": "string" }, "dataset": { "name": "string" } } ], "contentDeliveryRules": [ { "entryName": "string", "destination": { "iotEventsDestinationConfiguration": { "inputName": "string", "roleArn": "string" }, "s3DestinationConfiguration": { "bucket": "string", "key": "string", "glueConfiguration": { "tableName": "string", "databaseName": "string" }, "roleArn": "string" } } } ], "status": "string", "creationTime": "timestamp", "lastUpdateTime": "timestamp", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "versioningConfiguration": { "unlimited": "boolean", "maxVersions": "integer" } }}

fields:

• データセット

型: データセット

データセットに関する情報を含むオブジェクト。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• arn

型: 文字列

データセットの ARN。

167

Page 173: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

• アクション

型: リストメンバー: DatasetAction

自動的にデータセットコンテンツを作成する "DatasetAction" オブジェクト。• actionName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットコンテンツを自動的に作成するデータセットアクションの名前。• queryAction

型: SqlQueryDatasetAction

自動的にデータセットコンテンツを作成するために SQL クエリを使用する「SqlQueryDatasetAction」オブジェクト。

• sqlQuery

型: 文字列

SQL クエリ文字列。• フィルタ

型: リストメンバー: QueryFilter

メッセージデータには事前フィルターが適用されます。• deltaTime

型: デルタ時間

アクションが最後に実行されてから到着したデータに制限するために使用されます。• offsetSeconds

型: Integer Java クラス: java.lang.Integer

メッセージデータで予測される処理中のラグタイムの秒数。メッセージデータを使用して、指定された時間枠でデータセットのコンテンツを作成するとき、処理の開始時に一部のメッセージデータがまだ処理中であり、処理されるための時間内に到着しない場合があります。このフィールドを使用すると、メッセージデータの処理中時間を考慮できます。これによって、以前の時間枠で処理されなかったデータが次回の時間枠に含まれるようになります。これを使用しない場合、逃したメッセージデータは次回の時間枠中に処理から除外されます。これは、タイムスタンプがこのメッセージデータを前回の時間枠内に配置するためです。

• timeExpression

型: 文字列

メッセージデータの時間が判断されることがある式。これは、タイムスタンプフィールドの名前、あるいは、メッセージデータが生成された時間を得るために使用される SQL 式となります。

• containerAction

型: ContainerDatasetAction

システムがコンテナ化されたアプリケーションを実行して、データセットコンテンツを作成できるようにする情報。アプリケーションは、必要なサポートされるライブラリとともに Docker コンテナに含まれている必要があります。

• イメージ

型: 文字列 (長さ - 最大: 255)

168

Page 174: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

アカウントに保存された Docker コンテナの ARN。Docker コンテナにはアプリケーションと必要なサポートライブラリが含まれ、データセットコンテンツを生成するために使用されます。

• executionRoleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

「containerAction」を実行するために、システムが必要なリソースにアクセスできるためにアクセス許可を付与するロールの ARN。これには、最低限でもコンテナ化されたアプリケーションへの入力であるデータセットコンテンツを取得するアクセス権限がふくまれています。

• resourceConfiguration

型: ResourceConfiguration

「containerAction」を実行するリソースの設定。• computeType

型: 文字列

「containerAction」を実行するために使用されるコンピューティングリソースのタイプ。使用できる値は次のとおりです: ACU_1 (vCPU=4、メモリ=16GiB) あるいは ACU_2 (vCPU=8、メモリ=32GiB)。enum: ACU_1 | ACU_2

• volumeSizeInGB

型: 整数範囲 - 最大:50 最小:1

「containerAction」(最小: 1、最大: 50) を実行するために使用されるリソースインスタンスで利用できる永続的ストレージのサイズ (GB 単位)。

• 変数

型: リストメンバー: 変数

コンテナ化されたアプリケーションの実行のコンテキストで使用される変数の値 (基本的には、アプリケーションにわたされるパラメータ)。各変数には、「stringValue」、「datasetContentVersionValue」あるいは「outputFileUriValue」のいずれか 1 つから与えられた名前と値が必要です。

• name

型: 文字列 (長さ - 最大: 256 最小: 1)

変数の名前。• stringValue

型: 文字列 (長さ - 最大: 1024 最小: 0)

変数の値 (文字列)。• datasetContentVersionValue

型: DatasetContentVersionValue

データセットコンテンツのバージョンを指定する変数の値 (構造体)。• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

最後のコンテンツがノートブックまたはアプリケーションへの入力として使用されるデータセットの名前。

• outputFileUriValue

169

Page 175: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

型: OutputFileUriValue

出力ファイルの URI を指定する変数の値 (構造体)。• fileName

型: 文字列 (パターン: [w.-]{1,255})

データセットコンテンツが保存されている場所の URI。通常は、S3 バケット内のファイルの URI です。

• トリガー

型: リストメンバー: DatasetTrigger

データセットがいつ自動的に更新されるかを指定する "DatasetTrigger" オブジェクト。• schedule

型: スケジュール

トリガーが開始される "スケジュール"。• expression

型: 文字列

更新がいつトリガーされるかを定義する式。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

• データセット

型: TriggeringDataset

このデータセットのコンテンツの作成をトリガーするコンテンツ作成があるデータセット。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

新しいデータセットのコンテンツ生成をトリガーするコンテンツ作成があるデータセットの名前。• contentDeliveryRules

型: list member: DatasetContentDeliveryRule

データセットコンテンツが作成されると、ここで指定した送信先に配信されます。• entryName

型: 文字列

データセットコンテンツ配信ルールのエントリの名前。• 送信先

型: DatasetContentDeliveryDestination

データセットコンテンツが配信される送信先。• iotEventsDestinationConfiguration

型: IotEventsDestinationConfiguration

データセットコンテンツを AWS IoT Events に配信するための設定情報。• inputName

170

Page 176: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z][a-zA-Z0-9_]*$)

データセットコンテンツが配信される AWS IoT Events 入力の名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して、データセットコンテンツを AWS IoT Events 入力に配信できるようにするロールの ARN。

• s3DestinationConfiguration

型: S3DestinationConfiguration

データセットコンテンツを Amazon S3 に配信するための設定情報。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データセットコンテンツが配信される Amazon S3 バケットの名前。• key

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*$)

データセットコンテンツのオブジェクトのキー。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。一意のキーを生成するには、"!{iotanalytics:scheduledTime}" を使用してスケジュールされたSQL クエリ実行の時間を挿入するか、"!{iotanalytics:versioned}" を使用してデータセットを識別する一意のハッシュを挿入します。例: "/DataSet/!{iotanalytics:scheduledTime}/!{iotanalytics:versioned}.csv"

• glueConfiguration

型: GlueConfiguration

AWS Glue ETL (抽出、変換、ロード) サービスと連携するための設定情報。• tableName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

ETL (抽出、変換、ロード) の操作を実行するために使用される AWS Glue データカタログのテーブルの名前。(AWS Glue データカタログのテーブルには、パーティション分割されたデータと、データのソースおよびターゲットの説明が含まれます。)

• databaseName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

テーブルが配置されている AWS Glue データカタログにあるデータベースの名前。(AWS Glue データカタログのデータベースには Glue データテーブルが含まれています。)

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースと AWS Glue リソースを操作できるようにするロールの ARN。

• status

型: 文字列

171

Page 177: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDataset

データセットのステータス。enum: CREATING | ACTIVE | DELETING• creationTime

型: タイムスタンプ

データセットが作成された時間。• lastUpdateTime

型: タイムスタンプ

データセットが前回更新された時間。• retentionPeriod

型: RetentionPeriod

[オプション] データセットにメッセージデータが保持される期間 (日数)。• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• versioningConfiguration

型: VersioningConfiguration

[オプション] 保持されるデータセットコンテンツのバージョンの数。指定しない、または null に設定されている場合、最終バージョン、および最後に成功したバージョン (この 2 つが異なる場合)は、"retentionPeriod" パラメータで指定されている期間保持されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

型: ブール

true の場合、データセットコンテンツの無制限のバージョンが保持されます。• maxVersions

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

保持されるデータセットコンテンツのバージョンの数。"unlimited" パラメータは false であることが必要です。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

172

Page 178: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDatastore

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribeDatastoreデータストアに関する情報を取得します。

CLI の概要:

aws iotanalytics describe-datastore --datastore-name <value>[--include-statistics | --no-include-statistics][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datastoreName": "string", "includeStatistics": "boolean"}

fields:

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データストアの名前。• includeStatistics

型: ブール

true の場合、データストアに関するその他の統計情報はレスポンスに含まれています。S3 ストレージがユーザーによって管理されている場合、この機能をデータストアで使用することはできません。

出力:

{

173

Page 179: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDatastore

"datastore": { "name": "string", "storage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "arn": "string", "status": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "creationTime": "timestamp", "lastUpdateTime": "timestamp" }, "statistics": { "size": { "estimatedSizeInBytes": "double", "estimatedOn": "timestamp" } }}

fields:

• データストア

型: データストア

データストアに関する情報。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データストアの名前。• ストレージ

型: DatastoreStorage

データストアのデータが保存されている場所。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。データストアの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedDatastoreS3Storage

データストアのデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

• customerManagedS3

型: CustomerManagedDatastoreS3Storage

データストアのデータをユーザーが管理する S3 バケットに保存します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

174

Page 180: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeDatastore

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データストアのデータが保存される Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] データストアのデータオブジェクトのキーを作成するために使用されるプレフィックス。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります(バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• arn

型: 文字列

データストアの ARN。• status

型: 文字列

データストアのステータス: CREATING - データストアを作成中。ACTIVE - データストアが作成されて使用可能になった。DELETING データストアは削除中です。enum: CREATING | ACTIVE | DELETING

• retentionPeriod

型: RetentionPeriod

データストアのメッセージデータが保持される期間 (日数)。"customerManagedS3" ストレージが選択されている場合、このパラメータは無視されます。

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• creationTime

型: タイムスタンプ

データストアが作成された時間。• lastUpdateTime

型: タイムスタンプ

データストアが前回更新された時間。• 統計

175

Page 181: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeLoggingOptions

型: DatastoreStatistics

データストアに関する追加の統計情報。リクエストで「includeStatistics」パラメータが true に設定されている場合に含まれます。

• size

型: EstimatedResourceSize

データストアの予測サイズ。• estimatedOn

型: タイムスタンプ

リソースのサイズが予測された時間。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribeLoggingOptionsAWS IoT Analytics のログ記録オプションの現在の設定を取得します。

CLI の概要:

aws iotanalytics describe-logging-options[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

176

Page 182: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribeLoggingOptions

{}

fields:

出力:

{ "loggingOptions": { "roleArn": "string", "level": "string", "enabled": "boolean" }}

fields:

• loggingOptions

型: LoggingOptions

AWS IoT Analytics のログ記録オプションの現在の設定。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

ログ記録を実行するためのアクセス権限を AWS IoT Analytics に付与するロールの ARN。• レベル

型: 文字列

ログ記録のレベル。現在のところ、「ERROR」のみがサポートされています。enum: ERROR• 有効

型: ブール

true の場合、AWS IoT Analytics に対してログ記録が有効になります。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

177

Page 183: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

DescribePipelineパイプラインに関する情報を取得します。

CLI の概要:

aws iotanalytics describe-pipeline --pipeline-name <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "pipelineName": "string"}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

情報が取得されるパイプラインの名前。

出力:

{ "pipeline": { "name": "string", "arn": "string", "activities": [ { "channel": { "name": "string", "channelName": "string", "next": "string" }, "lambda": { "name": "string", "lambdaName": "string", "batchSize": "integer", "next": "string" }, "datastore": { "name": "string", "datastoreName": "string" }, "addAttributes": { "name": "string",

178

Page 184: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

"attributes": { "string": "string" }, "next": "string" }, "removeAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "selectAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "filter": { "name": "string", "filter": "string", "next": "string" }, "math": { "name": "string", "attribute": "string", "math": "string", "next": "string" }, "deviceRegistryEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" }, "deviceShadowEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" } } ], "reprocessingSummaries": [ { "id": "string", "status": "string", "creationTime": "timestamp" } ], "creationTime": "timestamp", "lastUpdateTime": "timestamp" }}

fields:

• パイプライン

型: パイプライン

パイプラインに関する情報を含む "Pipeline" オブジェクト。

179

Page 185: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

パイプラインの名前。• arn

型: 文字列

パイプラインの ARN。• アクティビティ

型: リストメンバー: PipelineActivity

メッセージに対して変換を実行するアクティビティ。• チャンネル

型: ChannelActivity

処理されるメッセージのソースを決定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"チャネル" アクティビティの名前。• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージが処理されるチャネルの名前。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• lambda

型: LambdaActivity

メッセージを変更する Lambda 関数を実行します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"lambda" アクティビティの名前。• lambdaName

型: 文字列 (長さ: 1 ~ 64)、(パターン: ^[a-zA-Z0-9_-]+$)

メッセージに対して実行される Lambda 関数の名前。• batchSize

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

処理のために Lambda 関数に渡されるメッセージの数。AWS Lambda 関数はこれらのメッセージのすべてを 5 分以内 (Lambda 関数の最大タイムアウト期間内) に処理できる必要があります。

• 次へ180

Page 186: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• データストア

型: DatastoreActivity

処理されるメッセージデータを保存する場所を指定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"データストア" アクティビティの名前。• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

処理されたメッセージが保存されるデータストアの名前。• addAttributes

型: AddAttributesActivity

メッセージの既存の属性に基づいて他の属性を追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"addAttributes" アクティビティの名前。• 個の属性

型: Map キー: AttributeName 値: AttributeName

既存の属性を新しい属性にマップする 1 ~ 50 個の "AttributeNameMapping" オブジェクトのリスト。元のメッセージには既存の属性が残っているため、そのメッセージを削除する場合はRemoveAttributeActivity を使用します。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• removeAttributes

型: RemoveAttributesActivity

メッセージから属性を削除します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"removeAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージから削除する 1 〜 50 個の属性のリスト。• 次へ

181

Page 187: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• selectAttributes

型: SelectAttributesActivity

元のメッセージの属性のうち、指定したもののみを使用して、新しいメッセージを作成します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"selectAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージの選択した属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• フィルター

型: FilterActivity

メッセージをその属性に基づいてフィルタ処理します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"フィルタ" アクティビティの名前。• フィルター

型: 文字列 (長さ - 最大: 256 最小: 1)

ブール値を返す必要のある SQL WHERE 句のような式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• 算術

型: MathActivity

メッセージの属性を使用して算術式を計算し、結果をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"算術" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)182

Page 188: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

算術オペレーションの結果を含む属性の名前。• 算術

型: 文字列 (長さ - 最大: 256 最小: 1)

1 つ以上の既存の属性を使用し、整数値を返す必要のある式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceRegistryEnrich

型: DeviceRegistryEnrichActivity

AWS IoT デバイスレジストリのデータをメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceRegistryEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

レジストリ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのレジストリ情報へのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceShadowEnrich

型: DeviceShadowEnrichActivity

AWS IoT Device Shadows サービスの情報をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceShadowEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

183

Page 189: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドDescribePipeline

型: 文字列 (長さ - 最大: 256 最小: 1)

シャドウ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのシャドウへのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• reprocessingSummaries

型: リストメンバー: ReprocessingSummary

パイプライン再処理に関する情報の要約。• id

型: 文字列

"StartPipelineReprocessing" によって返される "reprocessingId"。• status

型: 文字列

パイプライン再処理のステータス。enum: RUNNING | SUCCEEDED | CANCELLED | FAILED• creationTime

型: タイムスタンプ

パイプライン再処理が作成された時間。• creationTime

型: タイムスタンプ

パイプラインが作成された時間。• lastUpdateTime

型: タイムスタンプ

パイプラインが前回更新された時間。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

184

Page 190: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドGetDatasetContent

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

GetDatasetContentデータセットの内容を事前署名された URI として取得します。

CLI の概要:

aws iotanalytics get-dataset-content --dataset-name <value>[--version-id <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "versionId": "string"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

内容が取得されるデータセットの名前。• versionId

型: 文字列 (長さ - 最大: 36 最小: 7)

内容が取得されるデータセットのバージョン。文字列 "$LATEST" または "$LATEST_SUCCEEDED" を使用して、最新のデータセットまたは最新の正常に完了したデータセットの内容を取得できます。指定しない場合は、"$LATEST_SUCCEEDED" がデフォルトです。

出力:

{ "entries": [ { "entryName": "string", "dataURI": "string"

185

Page 191: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドGetDatasetContent

} ], "timestamp": "timestamp", "status": { "state": "string", "reason": "string" }}

fields:

• エントリ

型: リストメンバー: DatasetEntry

"DatasetEntry" オブジェクトのリスト。• entryName

型: 文字列

データセット項目の名前。• dataURI

型: 文字列

データセット項目の事前署名された URI。• timestamp

型: タイムスタンプ

リクエストが行われた時間。• status

型: DatasetContentStatus

データセットの内容のステータス。• state

型: 文字列

データセットコンテンツの状態。「READY」、「CREATING」、「SUCCEEDED」あるいは「FAILED」のいずれか 1 つです。enum: CREATING | SUCCEEDED | FAILED

• 理由

型: 文字列

データセットコンテンツがこの状態である理由。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

186

Page 192: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListChannels

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

ListChannelsチャネルのリストを取得します。

CLI の概要:

aws iotanalytics list-channels[--next-token <value>][--max-results <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "nextToken": "string", "maxResults": "integer"}

fields:

• nextToken

型: 文字列

次の結果セットのトークン。• maxResults

型: integer java クラス: java.lang.Integer 範囲 - 最大:250 最小:1

このリクエストで返す結果の最大数。デフォルト値は 100 です。

出力:

{ "channelSummaries": [ { "channelName": "string",

187

Page 193: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListChannels

"channelStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "status": "string", "creationTime": "timestamp", "lastUpdateTime": "timestamp" } ], "nextToken": "string"}

fields:

• channelSummaries

型: リストメンバー: ChannelSummary

"ChannelSummary" オブジェクトのリスト。• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

チャネルの名前。• channelStorage

型: ChannelStorageSummary

チャネルデータが保存される場所。• serviceManagedS3

型: ServiceManagedChannelS3StorageSummary

チャネルデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存するために使用されます。

• customerManagedS3

型: CustomerManagedChannelS3StorageSummary

チャネルデータをユーザーが管理する S3 バケットに保存するために使用されます。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

チャネルのデータが保存されている Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] チャネルデータオブジェクトのキーを作成するために使用されるプレフィックス。AmazonS3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

188

Page 194: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasetContents

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• status

型: 文字列

チャンネルのステータス。enum: CREATING | ACTIVE | DELETING• creationTime

型: タイムスタンプ

チャネルが作成された時間。• lastUpdateTime

型: タイムスタンプ

チャネルが前回更新された時間。• nextToken

型: 文字列

次の結果セットを取得するためのトークン、または追加の結果がない場合は null。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

ListDatasetContents作成されたデータセットコンテンツに関する情報のリスト。

CLI の概要:

aws iotanalytics list-dataset-contents --dataset-name <value>[--next-token <value>]

189

Page 195: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasetContents

[--max-results <value>][--scheduled-on-or-after <value>][--scheduled-before <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "nextToken": "string", "maxResults": "integer", "scheduledOnOrAfter": "timestamp", "scheduledBefore": "timestamp"}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

リストに表示するコンテンツの情報のデータセット名。• nextToken

型: 文字列

次の結果セットのトークン。• maxResults

型: integer java クラス: java.lang.Integer 範囲 - 最大:250 最小:1

このリクエストで返す結果の最大数。• scheduledOnOrAfter

型: タイムスタンプ

指定した時刻以降に作成がスケジュールされているデータセットコンテンツに結果を制限するフィルタ。CreateDataset リクエスト内の triggers.schedule フィールドを参照してください (タイムスタンプ)。

• scheduledBefore

型: タイムスタンプ

指定した時刻より前に作成がスケジュールされているデータセットコンテンツに結果を制限するフィルタ。CreateDataset リクエスト内の triggers.schedule フィールドを参照してください (タイムスタンプ)。

出力:

{ "datasetContentSummaries": [ { "version": "string", "status": { "state": "string", "reason": "string" }, "creationTime": "timestamp",

190

Page 196: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasetContents

"scheduleTime": "timestamp" } ], "nextToken": "string"}

fields:

• datasetContentSummaries

型: リストメンバー: DatasetContentSummary

作成されたデータセットコンテンツに関する情報の概要。• バージョン

型: 文字列 (長さ - 最大: 36 最小: 7)

データセットコンテンツのバージョン。• status

型: DatasetContentStatus

データセットコンテンツのステータス。• state

型: 文字列

データセットコンテンツの状態。「READY」、「CREATING」、「SUCCEEDED」あるいは「FAILED」のいずれか 1 つです。enum: CREATING | SUCCEEDED | FAILED

• 理由

型: 文字列

データセットコンテンツがこの状態である理由。• creationTime

型: タイムスタンプ

データセットコンテンツの作成が開始された実際の時刻。• scheduleTime

型: タイムスタンプ

データセットコンテンツの作成を開始するようにスケジュールされた時刻。• nextToken

型: 文字列

次の結果セットを取得するためのトークン、または追加の結果がない場合は null。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

191

Page 197: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasets

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404

ListDatasetsデータセットに関する情報を取得します。

CLI の概要:

aws iotanalytics list-datasets[--next-token <value>][--max-results <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "nextToken": "string", "maxResults": "integer"}

fields:

• nextToken

型: 文字列

次の結果セットのトークン。• maxResults

型: integer java クラス: java.lang.Integer 範囲 - 最大:250 最小:1

このリクエストで返す結果の最大数。デフォルト値は 100 です。

出力:

{

192

Page 198: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasets

"datasetSummaries": [ { "datasetName": "string", "status": "string", "creationTime": "timestamp", "lastUpdateTime": "timestamp", "triggers": [ { "schedule": { "expression": "string" }, "dataset": { "name": "string" } } ], "actions": [ { "actionName": "string", "actionType": "string" } ] } ], "nextToken": "string"}

fields:

• datasetSummaries

型: リストメンバー: DatasetSummary

"DatasetSummary" オブジェクトのリスト。• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットの名前。• status

型: 文字列

データセットのステータス。enum: CREATING | ACTIVE | DELETING• creationTime

型: タイムスタンプ

データセットが作成された時間。• lastUpdateTime

型: タイムスタンプ

データセットが前回更新された時間。• トリガー

型: リストメンバー: DatasetTrigger

トリガーのリスト。トリガーによって、指定された時間間隔、あるいは他のデータセットが入力されたときにデータセットコンテンツが入力されます。トリガーのリストは空にすることも、最大 5 個のDataSetTrigger オブジェクトを含めることもできます。

193

Page 199: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatasets

• schedule

型: スケジュール

トリガーが開始される "スケジュール"。• expression

型: 文字列

更新がいつトリガーされるかを定義する式。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

• データセット

型: TriggeringDataset

このデータセットのコンテンツの作成をトリガーするコンテンツ作成があるデータセット。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

新しいデータセットのコンテンツ生成をトリガーするコンテンツ作成があるデータセットの名前。• アクション

型: リストメンバー: DatasetActionSummary

「DataActionSummary」オブジェクトのリスト。• actionName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットのコンテンツを自動的に作成するアクションの名前。• actionType

型: 文字列

データセットコンテンツを自動的に作成するアクションのタイプ。enum: QUERY | CONTAINER• nextToken

型: 文字列

次の結果セットを取得するためのトークン、または追加の結果がない場合は null。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません194

Page 200: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatastores

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

ListDatastoresデータストアのリストを取得します。

CLI の概要:

aws iotanalytics list-datastores[--next-token <value>][--max-results <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "nextToken": "string", "maxResults": "integer"}

fields:

• nextToken

型: 文字列

次の結果セットのトークン。• maxResults

型: integer java クラス: java.lang.Integer 範囲 - 最大:250 最小:1

このリクエストで返す結果の最大数。デフォルト値は 100 です。

出力:

{ "datastoreSummaries": [ { "datastoreName": "string", "datastoreStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "status": "string", "creationTime": "timestamp",

195

Page 201: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListDatastores

"lastUpdateTime": "timestamp" } ], "nextToken": "string"}

fields:

• datastoreSummaries

型: リストメンバー: DatastoreSummary

"DatastoreSummary" オブジェクトのリスト。• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データストアの名前。• datastoreStorage

型: DatastoreStorageSummary

データストアのデータが保存されている場所。• serviceManagedS3

型: ServiceManagedDatastoreS3StorageSummary

データストアのデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存ために使用されます。

• customerManagedS3

型: CustomerManagedDatastoreS3StorageSummary

データストアのデータをユーザーが管理する S3 バケットに保存するために使用されます。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データストアのデータが保存される Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] データストアのデータオブジェクトのキーを作成するために使用されるプレフィックス。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります(バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• status

型: 文字列

データストアのステータス。enum: CREATING | ACTIVE | DELETING

196

Page 202: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListPipelines

• creationTime

型: タイムスタンプ

データストアが作成された時間。• lastUpdateTime

型: タイムスタンプ

データストアが前回更新された時間。• nextToken

型: 文字列

次の結果セットを取得するためのトークン、または追加の結果がない場合は null。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

ListPipelinesパイプラインのリストを取得します。

CLI の概要:

aws iotanalytics list-pipelines[--next-token <value>][--max-results <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "nextToken": "string",

197

Page 203: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListPipelines

"maxResults": "integer"}

fields:

• nextToken

型: 文字列

次の結果セットのトークン。• maxResults

型: integer java クラス: java.lang.Integer 範囲 - 最大:250 最小:1

このリクエストで返す結果の最大数。デフォルト値は 100 です。

出力:

{ "pipelineSummaries": [ { "pipelineName": "string", "reprocessingSummaries": [ { "id": "string", "status": "string", "creationTime": "timestamp" } ], "creationTime": "timestamp", "lastUpdateTime": "timestamp" } ], "nextToken": "string"}

fields:

• pipelineSummaries

型: リストメンバー: PipelineSummary

"PipelineSummary" オブジェクトのリスト。• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

パイプラインの名前。• reprocessingSummaries

型: リストメンバー: ReprocessingSummary

パイプライン再処理に関する情報の要約。• id

型: 文字列

"StartPipelineReprocessing" によって返される "reprocessingId"。• status

198

Page 204: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListTagsForResource

型: 文字列

パイプライン再処理のステータス。enum: RUNNING | SUCCEEDED | CANCELLED | FAILED• creationTime

型: タイムスタンプ

パイプライン再処理が作成された時間。• creationTime

型: タイムスタンプ

パイプラインが作成された時間。• lastUpdateTime

型: タイムスタンプ

パイプラインが前回更新された時間。• nextToken

型: 文字列

次の結果セットを取得するためのトークン、または追加の結果がない場合は null。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

ListTagsForResourceリソースに割り当てたタグ (メタデータ) のリスト。

CLI の概要:

aws iotanalytics list-tags-for-resource

199

Page 205: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドListTagsForResource

--resource-arn <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "resourceArn": "string"}

fields:

• resourceArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

一覧表示するタグが付けられたリソースの ARN。

出力:

{ "tags": [ { "key": "string", "value": "string" } ]}

fields:

• タグ

型: リストメンバー: タグ

リソースに割り当てたタグ (メタデータ)。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

200

Page 206: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドPutLoggingOptions

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404

PutLoggingOptionsAWS IoT Analytics のログ記録オプションを設定または更新します。いずれかの loggingOptions フィールドの値を更新する場合、変更が有効になるまでには最大で 1 分かかることに注意してください。また、roleArn フィールドで指定したロールにアタッチされるポリシーを変更する場合 (たとえば、無効なポリシーを修正するなど)、この変更が有効になるまでには最大で 5 分かかります。

CLI の概要:

aws iotanalytics put-logging-options --logging-options <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "loggingOptions": { "roleArn": "string", "level": "string", "enabled": "boolean" }}

fields:

• loggingOptions

型: LoggingOptions

AWS IoT Analytics のログ記録オプションの新しい値。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

201

Page 207: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

ログ記録を実行するためのアクセス権限を AWS IoT Analytics に付与するロールの ARN。• レベル

型: 文字列

ログ記録のレベル。現在のところ、「ERROR」のみがサポートされています。enum: ERROR• 有効

型: ブール

true の場合、AWS IoT Analytics に対してログ記録が有効になります。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

RunPipelineActivityメッセージペイロードに対してパイプラインアクティビティを実行した結果をシミュレートします。

CLI の概要:

aws iotanalytics run-pipeline-activity --pipeline-activity <value> --payloads <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{

202

Page 208: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

"pipelineActivity": { "channel": { "name": "string", "channelName": "string", "next": "string" }, "lambda": { "name": "string", "lambdaName": "string", "batchSize": "integer", "next": "string" }, "datastore": { "name": "string", "datastoreName": "string" }, "addAttributes": { "name": "string", "attributes": { "string": "string" }, "next": "string" }, "removeAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "selectAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "filter": { "name": "string", "filter": "string", "next": "string" }, "math": { "name": "string", "attribute": "string", "math": "string", "next": "string" }, "deviceRegistryEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" }, "deviceShadowEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" } }, "payloads": [ "blob" ]

203

Page 209: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

}

fields:

• pipelineActivity

型: PipelineActivity

実行されるパイプラインアクティビティ。このアクティビティは "チャネル" または "データストア" 以外のアクティビティであることが必要です。これらのアクティビティがパイプラインで元のメッセージのロード、および変換された (可能性のある) メッセージの保存にのみ使用されるためです。"lambda" アクティビティを指定した場合は、短時間実行される Lambda 関数 (タイムアウトが 30 秒未満のもの) のみを使用できます。

• チャンネル

型: ChannelActivity

処理されるメッセージのソースを決定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"チャネル" アクティビティの名前。• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージが処理されるチャネルの名前。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• lambda

型: LambdaActivity

メッセージを変更する Lambda 関数を実行します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"lambda" アクティビティの名前。• lambdaName

型: 文字列 (長さ: 1 ~ 64)、(パターン: ^[a-zA-Z0-9_-]+$)

メッセージに対して実行される Lambda 関数の名前。• batchSize

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

処理のために Lambda 関数に渡されるメッセージの数。AWS Lambda 関数はこれらのメッセージのすべてを 5 分以内 (Lambda 関数の最大タイムアウト期間内) に処理できる必要があります。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)204

Page 210: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

パイプライン内の次のアクティビティ。• データストア

型: DatastoreActivity

処理されるメッセージデータを保存する場所を指定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"データストア" アクティビティの名前。• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

処理されたメッセージが保存されるデータストアの名前。• addAttributes

型: AddAttributesActivity

メッセージの既存の属性に基づいて他の属性を追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"addAttributes" アクティビティの名前。• 個の属性

型: Map キー: AttributeName 値: AttributeName

既存の属性を新しい属性にマップする 1 ~ 50 個の "AttributeNameMapping" オブジェクトのリスト。元のメッセージには既存の属性が残っているため、そのメッセージを削除する場合はRemoveAttributeActivity を使用します。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• removeAttributes

型: RemoveAttributesActivity

メッセージから属性を削除します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"removeAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージから削除する 1 〜 50 個の属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

205

Page 211: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

パイプライン内の次のアクティビティ。• selectAttributes

型: SelectAttributesActivity

元のメッセージの属性のうち、指定したもののみを使用して、新しいメッセージを作成します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"selectAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージの選択した属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• フィルター

型: FilterActivity

メッセージをその属性に基づいてフィルタ処理します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"フィルタ" アクティビティの名前。• フィルター

型: 文字列 (長さ - 最大: 256 最小: 1)

ブール値を返す必要のある SQL WHERE 句のような式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• 算術

型: MathActivity

メッセージの属性を使用して算術式を計算し、結果をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"算術" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

算術オペレーションの結果を含む属性の名前。• 算術

206

Page 212: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

型: 文字列 (長さ - 最大: 256 最小: 1)

1 つ以上の既存の属性を使用し、整数値を返す必要のある式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceRegistryEnrich

型: DeviceRegistryEnrichActivity

AWS IoT デバイスレジストリのデータをメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceRegistryEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

レジストリ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのレジストリ情報へのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceShadowEnrich

型: DeviceShadowEnrichActivity

AWS IoT Device Shadows サービスの情報をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceShadowEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)207

Page 213: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドRunPipelineActivity

シャドウ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのシャドウへのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• ペイロード

型: リストメンバー: MessagePayload

パイプラインアクティビティが実行されるサンプルメッセージペイロード。

出力:

{ "payloads": [ "blob" ], "logResult": "string"}

fields:

• ペイロード

型: リストメンバー: MessagePayload

base64 でエンコードされた文字列としてエンリッチまたは変換されたサンプルメッセージペイロード(各入力サンプルメッセージペイロードに対してパイプラインアクティビティが実行され、base64 でエンコードされた結果)。

• logResult

型: 文字列

パイプラインアクティビティが失敗した場合に生成されるログメッセージ。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

208

Page 214: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドSampleChannelData

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

SampleChannelData指定したチャネルのメッセージのうち、指定した時間枠内に取り込まれたもののサンプルを取得します。最大 10 個のメッセージを取得できます。

CLI の概要:

aws iotanalytics sample-channel-data --channel-name <value>[--max-messages <value>][--start-time <value>][--end-time <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string", "maxMessages": "integer", "startTime": "timestamp", "endTime": "timestamp"}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージのサンプルが取得されるチャネルの名前。• maxMessages

型: integer java クラス: java.lang.Integer 範囲 - 最大:10 最小:1

取得されるサンプルメッセージの数。制限は 10 で、デフォルトは 10 です。• startTime

型: タイムスタンプ

サンプルメッセージが取得される時間枠の開始。• endTime

型: タイムスタンプ

サンプルメッセージが取得される時間枠の終了。

出力:

209

Page 215: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドStartPipelineReprocessing

{ "payloads": [ "blob" ]}

fields:

• ペイロード

型: リストメンバー: MessagePayload

メッセージサンプルのリスト。各サンプルメッセージは base64 でエンコードされた文字列として返されます。

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

StartPipelineReprocessingパイプラインによる未加工データの再処理を開始します。

CLI の概要:

aws iotanalytics start-pipeline-reprocessing --pipeline-name <value>[--start-time <value>][--end-time <value>][--cli-input-json <value>][--generate-cli-skeleton]

210

Page 216: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドStartPipelineReprocessing

cli-input-json 形式:

{ "pipelineName": "string", "startTime": "timestamp", "endTime": "timestamp"}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

再処理を開始するパイプラインの名前。• startTime

型: タイムスタンプ

再処理される未加工メッセージデータの開始時間 (その時間を含む)。• endTime

型: タイムスタンプ

再処理される未加工メッセージデータの終了時間 (その時間を含まない)。

出力:

{ "reprocessingId": "string"}

fields:

• reprocessingId

型: 文字列

開始されたパイプライン再処理アクティビティの ID。

エラー:

• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• ResourceAlreadyExistsException

同じ名前がすでに存在するリソース。

HTTP レスポンスコード: 409• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400

211

Page 217: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドTagResource

• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

TagResource指定されるリソースのタグを追加あるいは変更します。タグとはリソースを管理するために使用できるメタデータです。

CLI の概要:

aws iotanalytics tag-resource --resource-arn <value> --tags <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "resourceArn": "string", "tags": [ { "key": "string", "value": "string" } ]}

fields:

• resourceArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

変更するタグが付けられたリソースの ARN。• タグ

型: リストメンバー: タグ

リソースの新しい、または変更されたタグ。• キー

型: 文字列 (長さ - 最大: 256 最小: 1)

212

Page 218: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUntagResource

タグのキー。• value

型: 文字列 (長さ - 最大: 256 最小: 1)

タグの値。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404

UntagResourceリソースから指定されたタグ (メタデータ) を削除します。

CLI の概要:

aws iotanalytics untag-resource --resource-arn <value> --tag-keys <value>[--cli-input-json <value>]

213

Page 219: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUntagResource

[--generate-cli-skeleton]

cli-input-json 形式:

{ "resourceArn": "string", "tagKeys": [ "string" ]}

fields:

• resourceArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

削除するタグが付けられたリソースの ARN。• tagKeys

型: リストメンバー: TagKey

削除されるタグが付けられたキー。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

214

Page 220: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateChannel

HTTP レスポンスコード: 404

UpdateChannelチャネルの設定を更新します。

CLI の概要:

aws iotanalytics update-channel --channel-name <value>[--channel-storage <value>][--retention-period <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "channelName": "string", "channelStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }, "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }}

fields:

• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

更新されるチャネルの名前。• channelStorage

型: ChannelStorage

チャネルデータが保存される場所。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。チャネルの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedChannelS3Storage

チャネルデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• customerManagedS3

215

Page 221: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateChannel

型: CustomerManagedChannelS3Storage

チャネルデータをユーザーが管理する S3 バケットに保存する場合に使用します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、チャネルの作成後に変更することはできません。

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

チャネルのデータが保存されている Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] チャネルデータオブジェクトのキーを作成するために使用されるプレフィックス。AmazonS3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

• retentionPeriod

型: RetentionPeriod

チャネルのメッセージデータが保持される時間 (日数)。チャネルの S3 ストレージがユーザーによって管理されている場合、保持期間は更新できません。

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

216

Page 222: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

UpdateDatasetデータセットの設定を更新します。

CLI の概要:

aws iotanalytics update-dataset --dataset-name <value> --actions <value>[--triggers <value>][--content-delivery-rules <value>][--retention-period <value>][--versioning-configuration <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datasetName": "string", "actions": [ { "actionName": "string", "queryAction": { "sqlQuery": "string", "filters": [ { "deltaTime": { "offsetSeconds": "integer", "timeExpression": "string" } } ] }, "containerAction": { "image": "string", "executionRoleArn": "string", "resourceConfiguration": { "computeType": "string", "volumeSizeInGB": "integer" }, "variables": [ { "name": "string", "stringValue": "string",

217

Page 223: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

"doubleValue": "double", "datasetContentVersionValue": { "datasetName": "string" }, "outputFileUriValue": { "fileName": "string" } } ] } } ], "triggers": [ { "schedule": { "expression": "string" }, "dataset": { "name": "string" } } ], "contentDeliveryRules": [ { "entryName": "string", "destination": { "iotEventsDestinationConfiguration": { "inputName": "string", "roleArn": "string" }, "s3DestinationConfiguration": { "bucket": "string", "key": "string", "glueConfiguration": { "tableName": "string", "databaseName": "string" }, "roleArn": "string" } } } ], "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "versioningConfiguration": { "unlimited": "boolean", "maxVersions": "integer" }}

fields:

• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

更新するデータセットの名前。• アクション

型: リストメンバー: DatasetAction

"DatasetAction" オブジェクトのリスト。

218

Page 224: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

• actionName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

データセットコンテンツを自動的に作成するデータセットアクションの名前。• queryAction

型: SqlQueryDatasetAction

自動的にデータセットコンテンツを作成するために SQL クエリを使用する「SqlQueryDatasetAction」オブジェクト。

• sqlQuery

型: 文字列

SQL クエリ文字列。• フィルタ

型: リストメンバー: QueryFilter

メッセージデータには事前フィルターが適用されます。• deltaTime

型: デルタ時間

アクションが最後に実行されてから到着したデータに制限するために使用されます。• offsetSeconds

型: Integer Java クラス: java.lang.Integer

メッセージデータで予測される処理中のラグタイムの秒数。メッセージデータを使用して、指定された時間枠でデータセットのコンテンツを作成するとき、処理の開始時に一部のメッセージデータがまだ処理中であり、処理されるための時間内に到着しない場合があります。このフィールドを使用すると、メッセージデータの処理中時間を考慮できます。これによって、以前の時間枠で処理されなかったデータが次回の時間枠に含まれるようになります。これを使用しない場合、逃したメッセージデータは次回の時間枠中に処理から除外されます。これは、タイムスタンプがこのメッセージデータを前回の時間枠内に配置するためです。

• timeExpression

型: 文字列

メッセージデータの時間が判断されることがある式。これは、タイムスタンプフィールドの名前、あるいは、メッセージデータが生成された時間を得るために使用される SQL 式となります。

• containerAction

型: ContainerDatasetAction

システムがコンテナ化されたアプリケーションを実行して、データセットコンテンツを作成できるようにする情報。アプリケーションは、必要なサポートされるライブラリとともに Docker コンテナに含まれている必要があります。

• イメージ

型: 文字列 (長さ - 最大: 255)

アカウントに保存された Docker コンテナの ARN。Docker コンテナにはアプリケーションと必要なサポートライブラリが含まれ、データセットコンテンツを生成するために使用されます。

• executionRoleArn219

Page 225: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

型: 文字列 (長さ - 最大: 2048 最小: 20)

「containerAction」を実行するために、システムが必要なリソースにアクセスできるためにアクセス許可を付与するロールの ARN。これには、最低限でもコンテナ化されたアプリケーションへの入力であるデータセットコンテンツを取得するアクセス権限がふくまれています。

• resourceConfiguration

型: ResourceConfiguration

「containerAction」を実行するリソースの設定。• computeType

型: 文字列

「containerAction」を実行するために使用されるコンピューティングリソースのタイプ。使用できる値は次のとおりです: ACU_1 (vCPU=4、メモリ=16GiB) あるいは ACU_2 (vCPU=8、メモリ=32GiB)。enum: ACU_1 | ACU_2

• volumeSizeInGB

型: 整数範囲 - 最大:50 最小:1

「containerAction」(最小: 1、最大: 50) を実行するために使用されるリソースインスタンスで利用できる永続的ストレージのサイズ (GB 単位)。

• 変数

型: リストメンバー: 変数

コンテナ化されたアプリケーションの実行のコンテキストで使用される変数の値 (基本的には、アプリケーションにわたされるパラメータ)。各変数には、「stringValue」、「datasetContentVersionValue」あるいは「outputFileUriValue」のいずれか 1 つから与えられた名前と値が必要です。

• name

型: 文字列 (長さ - 最大: 256 最小: 1)

変数の名前。• stringValue

型: 文字列 (長さ - 最大: 1024 最小: 0)

変数の値 (文字列)。• datasetContentVersionValue

型: DatasetContentVersionValue

データセットコンテンツのバージョンを指定する変数の値 (構造体)。• datasetName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

最後のコンテンツがノートブックまたはアプリケーションへの入力として使用されるデータセットの名前。

• outputFileUriValue

型: OutputFileUriValue

出力ファイルの URI を指定する変数の値 (構造体)。• fileName

220

Page 226: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

型: 文字列 (パターン: [w.-]{1,255})

データセットコンテンツが保存されている場所の URI。通常は、S3 バケット内のファイルの URI です。

• トリガー

型: リストメンバー: DatasetTrigger

"DatasetTrigger" オブジェクトのリスト。トリガーのリストは空にすることも、最大 5 個のDataSetTrigger オブジェクトを含むこともできます。

• schedule

型: スケジュール

トリガーが開始される "スケジュール"。• expression

型: 文字列

更新がいつトリガーされるかを定義する式。詳細については、Amazon CloudWatch Events ユーザーガイドの「ルールのスケジュール式」を参照してください。

• データセット

型: TriggeringDataset

このデータセットのコンテンツの作成をトリガーするコンテンツ作成があるデータセット。• name

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

新しいデータセットのコンテンツ生成をトリガーするコンテンツ作成があるデータセットの名前。• contentDeliveryRules

型: list member: DatasetContentDeliveryRule

データセットコンテンツが作成されると、ここで指定した送信先に配信されます。• entryName

型: 文字列

データセットコンテンツ配信ルールのエントリの名前。• 送信先

型: DatasetContentDeliveryDestination

データセットコンテンツが配信される送信先。• iotEventsDestinationConfiguration

型: IotEventsDestinationConfiguration

データセットコンテンツを AWS IoT Events に配信するための設定情報。• inputName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z][a-zA-Z0-9_]*$)

データセットコンテンツが配信される AWS IoT Events 入力の名前。• roleArn

221

Page 227: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して、データセットコンテンツを AWS IoT Events 入力に配信できるようにするロールの ARN。

• s3DestinationConfiguration

型: S3DestinationConfiguration

データセットコンテンツを Amazon S3 に配信するための設定情報。• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データセットコンテンツが配信される Amazon S3 バケットの名前。• key

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*$)

データセットコンテンツのオブジェクトのキー。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります (バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。一意のキーを生成するには、"!{iotanalytics:scheduledTime}" を使用してスケジュールされたSQL クエリ実行の時間を挿入するか、"!{iotanalytics:versioned}" を使用してデータセットを識別する一意のハッシュを挿入します。例: "/DataSet/!{iotanalytics:scheduledTime}/!{iotanalytics:versioned}.csv"

• glueConfiguration

型: GlueConfiguration

AWS Glue ETL (抽出、変換、ロード) サービスと連携するための設定情報。• tableName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

ETL (抽出、変換、ロード) の操作を実行するために使用される AWS Glue データカタログのテーブルの名前。(AWS Glue データカタログのテーブルには、パーティション分割されたデータと、データのソースおよびターゲットの説明が含まれます。)

• databaseName

型: 文字列 (長さ - 最大: 150 最小: 1)、(パターン: [u0020-uD7FFuE000-uFFFDuD800uDC00-uDBFFuDFFFt]*)

テーブルが配置されている AWS Glue データカタログにあるデータベースの名前。(AWS Glue データカタログのデータベースには Glue データテーブルが含まれています。)

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースと AWS Glue リソースを操作できるようにするロールの ARN。

• retentionPeriod

型: RetentionPeriod

データセットのデータセットコンテンツが保持される期間 (日数)。• 無制限

型: ブール

222

Page 228: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDataset

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• versioningConfiguration

型: VersioningConfiguration

[オプション] 保持されるデータセットコンテンツのバージョンの数。指定しない、または null に設定されている場合、最終バージョン、および最後に成功したバージョン (この 2 つが異なる場合)は、"retentionPeriod" パラメータで指定されている期間保持されます。(詳細については、https://docs.aws.amazon.com/iotanalytics/latest/userguide/getting-started.html#aws-iot-analytics-dataset-versions を参照してください)

• 無制限

型: ブール

true の場合、データセットコンテンツの無制限のバージョンが保持されます。• maxVersions

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

保持されるデータセットコンテンツのバージョンの数。"unlimited" パラメータは false であることが必要です。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

223

Page 229: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDatastore

HTTP レスポンスコード: 429

UpdateDatastoreデータストアの設定を更新します。

CLI の概要:

aws iotanalytics update-datastore --datastore-name <value>[--retention-period <value>][--datastore-storage <value>][--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "datastoreName": "string", "retentionPeriod": { "unlimited": "boolean", "numberOfDays": "integer" }, "datastoreStorage": { "serviceManagedS3": { }, "customerManagedS3": { "bucket": "string", "keyPrefix": "string", "roleArn": "string" } }}

fields:

• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

更新されるデータストアの名前。• retentionPeriod

型: RetentionPeriod

データストアのメッセージデータが保持される期間 (日数)。データストアの S3 ストレージがユーザーによって管理されている場合、保持期間は更新できません。

• 無制限

型: ブール

true の場合、メッセージデータは無期限に保持されます。• numberOfDays

型: Integer Java クラス: java.lang.Integer 範囲 - 最小 1

224

Page 230: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdateDatastore

メッセージデータが保持される日数。"unlimited" パラメータは false であることが必要です。• datastoreStorage

型: DatastoreStorage

データストアのデータが保存されている場所。"serviceManagedS3" または "customerManagedS3" ストレージを選択します。指定しない場合、デフォルトは "serviceManagedS3" です。データストアの作成後に変更することはできません。

• serviceManagedS3

型: ServiceManagedDatastoreS3Storage

データストアのデータを AWS IoT Analytics サービスで管理されている S3 バケットに保存する場合に使用します。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

• customerManagedS3

型: CustomerManagedDatastoreS3Storage

データストアのデータをユーザーが管理する S3 バケットに保存する場合に使用します。ユーザー管理のストレージが選択されている場合、"retentionPeriod" パラメータは無視されます。サービスで管理、またはユーザーが管理する S3 ストレージの選択は、データストアの作成後に変更することはできません。

• bucket

型: 文字列 (長さ - 最大: 255 最小: 3)、(パターン: ^[a-zA-Z0-9.-_]*$)

データストアのデータが保存される Amazon S3 バケットの名前。• keyPrefix

型: 文字列 (長さ - 最大: 255 最小: 1)、(パターン: ^[a-zA-Z0-9!_.*'()/{}:-]*/$)

[オプション] データストアのデータオブジェクトのキーを作成するために使用されるプレフィックス。Amazon S3 バケット内の各オブジェクトには、バケット内で一意の識別子であるキーがあります(バケット内の各オブジェクトには、厳密に 1 個のキーがあります)。プレフィックスは '/' で終わる必要があります。

• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

AWS IoT Analytics にアクセス許可を付与して Amazon S3 リソースを操作できるようにするロールのARN。

出力:

なし

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

225

Page 231: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429

UpdatePipelineパイプラインの設定を更新します。チャネルとデータストアのアクティビティの両方を指定する必要があります。また、必要に応じて、pipelineActivities 配列内の最大 23 個のアクティビティを追加で指定します。

CLI の概要:

aws iotanalytics update-pipeline --pipeline-name <value> --pipeline-activities <value>[--cli-input-json <value>][--generate-cli-skeleton]

cli-input-json 形式:

{ "pipelineName": "string", "pipelineActivities": [ { "channel": { "name": "string", "channelName": "string", "next": "string" }, "lambda": { "name": "string", "lambdaName": "string", "batchSize": "integer", "next": "string" }, "datastore": { "name": "string", "datastoreName": "string" }, "addAttributes": { "name": "string", "attributes": { "string": "string" }, "next": "string"

226

Page 232: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

}, "removeAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "selectAttributes": { "name": "string", "attributes": [ "string" ], "next": "string" }, "filter": { "name": "string", "filter": "string", "next": "string" }, "math": { "name": "string", "attribute": "string", "math": "string", "next": "string" }, "deviceRegistryEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" }, "deviceShadowEnrich": { "name": "string", "attribute": "string", "thingName": "string", "roleArn": "string", "next": "string" } } ]}

fields:

• pipelineName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

更新するパイプラインの名前。• pipelineActivities

型: リストメンバー: PipelineActivity

"PipelineActivity" オブジェクトのリスト。アクティビティはメッセージに対して変換を実行します。これには、メッセージ属性の削除/名前変更/追加、属性値に基づくメッセージのフィルタ処理、高度な処理のためのメッセージに対する Lambda 関数の呼び出し、算術変換の実行によるデバイスデータの正規化などが含まれます。このリストには 2~25 個の PipelineActivity オブジェクトを含めることができますが、チャネルとデータストアのアクティビティの両方が含まれている必要があります。リスト内のエントリごとに 1 つのアクティビティのみが含まれている必要があります。例: pipelineActivities =[ { "channel": { ... } }, { "lambda": { ... } }, ... ]

• チャンネル

227

Page 233: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

型: ChannelActivity

処理されるメッセージのソースを決定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"チャネル" アクティビティの名前。• channelName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

メッセージが処理されるチャネルの名前。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• lambda

型: LambdaActivity

メッセージを変更する Lambda 関数を実行します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"lambda" アクティビティの名前。• lambdaName

型: 文字列 (長さ: 1 ~ 64)、(パターン: ^[a-zA-Z0-9_-]+$)

メッセージに対して実行される Lambda 関数の名前。• batchSize

型: Integer Java クラス: java.lang.Integer、範囲: 1 ~ 1000

処理のために Lambda 関数に渡されるメッセージの数。AWS Lambda 関数はこれらのメッセージのすべてを 5 分以内 (Lambda 関数の最大タイムアウト期間内) に処理できる必要があります。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• データストア

型: DatastoreActivity

処理されるメッセージデータを保存する場所を指定します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"データストア" アクティビティの名前。• datastoreName

型: 文字列 (長さ - 最大: 128 最小: 1)、(パターン: ^[a-zA-Z0-9_]+$)

228

Page 234: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

処理されたメッセージが保存されるデータストアの名前。• addAttributes

型: AddAttributesActivity

メッセージの既存の属性に基づいて他の属性を追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"addAttributes" アクティビティの名前。• 個の属性

型: Map キー: AttributeName 値: AttributeName

既存の属性を新しい属性にマップする 1 ~ 50 個の "AttributeNameMapping" オブジェクトのリスト。元のメッセージには既存の属性が残っているため、そのメッセージを削除する場合はRemoveAttributeActivity を使用します。

• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• removeAttributes

型: RemoveAttributesActivity

メッセージから属性を削除します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"removeAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

メッセージから削除する 1 〜 50 個の属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• selectAttributes

型: SelectAttributesActivity

元のメッセージの属性のうち、指定したもののみを使用して、新しいメッセージを作成します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"selectAttributes" アクティビティの名前。• 個の属性

型: リストメンバー: AttributeName

229

Page 235: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

メッセージの選択した属性のリスト。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• フィルター

型: FilterActivity

メッセージをその属性に基づいてフィルタ処理します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"フィルタ" アクティビティの名前。• フィルター

型: 文字列 (長さ - 最大: 256 最小: 1)

ブール値を返す必要のある SQL WHERE 句のような式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• 算術

型: MathActivity

メッセージの属性を使用して算術式を計算し、結果をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"算術" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

算術オペレーションの結果を含む属性の名前。• 算術

型: 文字列 (長さ - 最大: 256 最小: 1)

1 つ以上の既存の属性を使用し、整数値を返す必要のある式。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceRegistryEnrich

型: DeviceRegistryEnrichActivity

AWS IoT デバイスレジストリのデータをメッセージに追加します。• name

230

Page 236: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceRegistryEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

レジストリ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのレジストリ情報へのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。• deviceShadowEnrich

型: DeviceShadowEnrichActivity

AWS IoT Device Shadows サービスの情報をメッセージに追加します。• name

型: 文字列 (長さ - 最大: 128 最小: 1)

"deviceShadowEnrich" アクティビティの名前。• 属性

型: 文字列 (長さ - 最大: 256 最小: 1)

メッセージに追加される属性の名前。• thingName

型: 文字列 (長さ - 最大: 256 最小: 1)

シャドウ情報がメッセージに追加される IoT デバイスの名前。• roleArn

型: 文字列 (長さ - 最大: 2048 最小: 20)

デバイスのシャドウへのアクセスを許可するロールの ARN。• 次へ

型: 文字列 (長さ - 最大: 128 最小: 1)

パイプライン内の次のアクティビティ。

出力:

なし

231

Page 237: AWS IoT Analytics - AWS IoT Analytics ユーザーガイド · AWS IoT Analytics AWS IoT Analytics ユーザーガイド Amazon's trademarks and trade dress may not be used in connection

AWS IoT Analytics AWS IoT Analytics ユーザーガイドUpdatePipeline

エラー:

• InvalidRequestException

リクエストが無効だった。

HTTP レスポンスコード: 400• ResourceNotFoundException

指定した名前のリソースが見つからなかった。

HTTP レスポンスコード: 404• InternalFailureException

内部エラーがあった。

HTTP レスポンスコード: 500• ServiceUnavailableException

サービスが一時的に使用できません

HTTP レスポンスコード: 503• ThrottlingException

リクエストは、制限が必要なために実行が拒否されました。

HTTP レスポンスコード: 429• LimitExceededException

このコマンドが、内部範囲を超える原因となっています。

HTTP レスポンスコード: 410

232