ジョブの管理 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ジョブの管理

ジョブを使用して、ソフトウェアまたはファームウェアの更新をデバイスに通知します。AWS IoT コンソールジョブの管理と制御APIオペレーションAWS Command Line Interface、または を使用してAWS SDKs、ジョブを作成および管理できます。

ジョブのコード署名

デバイスにコードを送信するときに、コードが転送中に変更されたかどうかをデバイスが検出できるように、 AWS CLIを使用してコードファイルに署名することをお勧めします。手順については、「AWS CLIを使用したジョブの作成および管理」を参照してください。

詳細については、「 コード署名とは AWS IoT」を参照してください。

ジョブドキュメント

ョブを作成する前に、ジョブドキュメントを作成する必要があります。コード署名を使用している場合は AWS IoT、バージョニングされた Amazon S3 バケットにジョブドキュメントをアップロードする必要があります。Amazon S3 バケットの作成とファイルのアップロードの詳細については、Amazon S3 開始方法のガイドAmazon Simple Storage Service の開始方法を参照してください。

ヒント

ジョブドキュメントの例については、 の AWS IoT SDK「jobs-agent.js」の例を参照してください JavaScript。

署名付き URLs

ジョブドキュメントには、コードファイル (または他のファイル) を指す署名URL付き Amazon S3 を含めることができます。署名付き Amazon S3 URLsは限られた期間のみ有効で、デバイスがジョブドキュメントをリクエストしたときに生成されます。署名付き URLはジョブドキュメントの作成時に作成されないため、代わりにジョブドキュメントURLのプレースホルダーを使用します。プレースホルダーURLは次のようになります。

${aws:iot:s3-presigned-url-v2:https://s3.region.amazonaws.com/<bucket>/<code file>}

各パラメータの意味は次のとおりです。

  • bucket は、コードファイルを含む Amazon S3 バケットです。

  • code file はコードファイルの Amazon S3 キーです。

デバイスがジョブドキュメントをリクエストすると、 は署名付き AWS IoT を生成URLし、プレースホルダーを署名付き URLに置き換えますURL。それからジョブドキュメントは、デバイスに送信されます。

IAM S3 からファイルをダウンロードするアクセス許可を付与する ロール

署名付き Amazon S3 を使用するジョブを作成するときはURLs、 IAMロールを指定する必要があります。ロールは、データまたはアップデートが保管されている Amazon S3 バケットからファイルをダウンロードするアクセス許可を付与する必要があります。ロールは、 AWS IoT がロールを引き受けるための権限も付与する必要があります。

署名付き にオプションのタイムアウトを指定できますURL。詳細については、「CreateJob」を参照してください。

ロールを引き受けるアクセス許可を AWS IoT ジョブに付与する
  1. IAM コンソールのロールハブに移動し、ロールを選択します。

  2. 信頼関係 タブで、信頼関係の編集 を選択し、ポリシードキュメントを次の に置き換えますJSON。信頼ポリシーの更新 を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. Confused Deputy Problem (混乱した代理の問題) から保護するために、グローバル条件コンテキストキー aws:SourceArnaws:SourceAccount をポリシーに追加します。

    重要

    aws:SourceArn は、arn:aws:iot:region:account-id:* の形式に従う必要があります。がregionお客様の AWS IoT リージョンと一致し、 がお客様のアカウント ID account-idと一致していることを確認します。詳細については、クロスサービスでの混乱した代理処理を防止するを参照してください。

    { "Effect": "Allow", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*" } } } ] }
  4. ジョブが Amazon S3 オブジェクトであるジョブドキュメントを使用している場合は、アクセス許可を選択し、次の を使用しますJSON。これにより、Amazon S3 バケットからファイルをダウンロードするためのアクセス許可を付与するポリシーが追加されます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your_S3_bucket/*" } ] }

ファイルアップロードURL用の署名付き

ジョブのデプロイ中にデバイスが Amazon S3 バケットにファイルをアップロードする必要がある場合は、ジョブドキュメントに次の署名付きURLプレースホルダーを含めることができます。

${aws:iot:s3-presigned-url-v2-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

ジョブドキュメントURLにあるファイルアップロードプレースホルダーの key 属性では${thingName}、、${jobId}、および のそれぞれ最大 2 つの${executionNumber}予約キーワードを使用できます。key 属性内のこれらの予約キーワードを表すローカルプレースホルダーは、ジョブ実行の作成時に解析され、置き換えられます。各デバイスに固有の予約キーワードを持つローカルプレースホルダーを使用すると、デバイスからアップロードされた各ファイルがそのデバイスに固有であり、同じジョブデプロイの対象となる別のデバイスからアップロードされた同様のファイルによって上書きされないようにします。ジョブのデプロイ中にファイルをアップロードするための署名付きプレースホルダー内のローカルURLプレースホルダーのトラブルシューティングについては、「」を参照してくださいエラーメッセージの一般的なトラブルシューティング

注記

Amazon S3 バケット名には、アップロードされたファイルの予約済みドキーワードを表すローカルプレースホルダーを含めることはできません。ローカルプレースホルダーは key 属性に配置する必要があります。

この署名付きURLプレースホルダーは、デバイスがURLジョブドキュメントを受信するとAmazon S3 の署名付きアップロードに変換されます。デバイスはこれを使用して、送信先の Amazon S3 バケットにファイルをアップロードします。

注記

上記のプレースホルダー で Amazon S3 バケットとキーが指定されていない場合URL、 AWS IoT Jobs は、${thingName}、、および のそれぞれ最大 2 つの を使用して${jobId}、デバイスごとにキーを自動的に生成します${executionNumber}

Amazon S3 バージョニングURLを使用した署名付き

Amazon S3 バケットに保存されているファイルの整合性を保護することは、そのファイルを使用してデバイスフリートに安全なジョブデプロイを確保するために不可欠です。Amazon S3 バージョニングを使用すると、Amazon S3 バケットに保存されているファイルの各バリアントのバージョン識別子を追加して、ファイルの各バージョンを追跡できます。これにより、 AWS IoT ジョブを使用してデバイスフリートにデプロイされるファイルのバージョンに関するインサイトが得られます。Amazon S3 バケットでのバージョニングを使用に関する詳細については、「Amazon S3 バケットでのバージョニングの使用」を参照してください。

ファイルが Amazon S3 に保存され、ジョブドキュメントに署名済みURLプレースホルダーが含まれている場合、 AWS IoT Jobs は Amazon S3 バケットURL、バケットキー、および Amazon S3 バケットに保存されているファイルのバージョンを使用して、ジョブドキュメントに署名済みの を生成します。ジョブドキュメントでURL生成されたこの署名付きプレースホルダーは、ジョブドキュメントの元々の署名付きURLプレースホルダーを置き換えます。Amazon S3 バケットに保存されているファイルを更新すると、新しいバージョンのファイルとそれ以降の versionId が作成され、更新が行われたことを知らせて、将来のジョブデプロイでその特定のファイルをターゲットにする機能が提供されます。

を使用してジョブドキュメントURLsで署名された Amazon S3 を確認する前と確認中に、次の例を参照してくださいversionId

Amazon S3 署名付きURLプレースホルダー (ジョブデプロイ前)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url-v2:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

Amazon S3 の署名付き URL (ジョブのデプロイ中)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url-v2:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url-v2:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

Amazon S3 仮想ホストおよびパス形式のオブジェクト の詳細についてはURLs、「 Virtual-hosted-style リクエスト」および「 パス形式のリクエスト」を参照してください。

注記

Amazon S3 の署名付き versionIdに を追加する場合はURL、URLエンコーディングのサポートに準拠する必要があります AWS SDK for Java 2.x。詳細については、Amazon S3URIsからバージョン 2 への変更」を参照してください。