

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

# ジョブの管理
<a name="create-manage-jobs"></a>

ジョブを使用して、ソフトウェアまたはファームウェアの更新をデバイスに通知します。[AWS IoT コンソール](https://console.aws.amazon.com/iot/)、[ジョブ管理と制御の API オペレーション](jobs-management-control-api.md#jobs-http-api)、[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/iot/index.html)、または [AWS SDK](https://aws.amazon.com/tools/#sdk) を使用して、ジョブを作成し管理することができます。

## ジョブのコード署名
<a name="create-manage-jobs-code-signing"></a>

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

詳細については、[「コード署名とは AWS IoT](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html)」を参照してください。

## ジョブドキュメント
<a name="create-manage-jobs-job-doc"></a>

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

**ヒント**  
ジョブドキュメントの例については、 AWS IoT SDK for JavaScript の [jobs-agent.js](https://www.npmjs.com/package/aws-iot-device-sdk#jobs-agentjs) の例を参照してください。

## 署名付き URL
<a name="create-manage-jobs-presigned-URLs"></a>

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

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

各パラメータの意味は次のとおりです。
+ {{bucket}} は、コードファイルが含まれる Amazon S3 バケットです。
+ {{code file}} は、コードファイルの Amazon S3 キーです。

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

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

オプションで､署名付き URL のタイムアウトを指定することもできます。詳細については、「[CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)」を参照してください。

**ロールを引き受けるアクセス許可を AWS IoT ジョブに付与する**

1. [[Roles hub of the IAM console]](https://console.aws.amazon.com/iamv2/home#/roles) (IAM コンソールのロールハブ) に移動して、ロールを選択します。

1. **[Trust Relationships]** (信頼関係) タブで、**[Edit Trust Relationship]** (信頼関係の編集) を選択し、ポリシードキュメントを以下の JSON に置き換えます。**信頼ポリシーの更新** を選択します。  
****  

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

1. Confused Deputy Problem (混乱した代理の問題) から保護するために、グローバル条件コンテキストキー [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) と [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) をポリシーに追加します。
**重要**  
`aws:SourceArn` は、`arn:aws:iot:{{region}}:{{account-id}}:*` の形式に従う必要があります。{{リージョン}}がお客様の AWS IoT リージョンと一致し、{{account-id}} がお客様のアカウント ID と一致していることを確認します。詳細については、[クロスサービスでの混乱した代理処理を防止する](cross-service-confused-deputy-prevention.md)を参照してください。

   ```
   {
     "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/*"
            }
          }
        }
      ]
   }
   ```

1. ジョブが Amazon S3 オブジェクトであるジョブドキュメントを使用している場合は、**[アクセス許可]** を選択し、次の JSON を使用してください。これにより、Amazon S3 バケットからファイルをダウンロードするためのアクセス許可を付与するポリシーが追加されます。  
****  

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

## ファイルアップロード用の署名付き URL
<a name="create-manage-jobs-presigned-URLs-upload"></a>

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

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

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

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

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

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

## Amazon S3 バージョニングを使用した署名付き URL
<a name="create-manage-jobs-presigned-URLs-versioning"></a>

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

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

`versionId` を使用したジョブドキュメントでの Amazon S3 署名付き URL のジョブのデプロイ前とデプロイ中の例については、以下を参照してください。

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

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

//Path-style URL
${aws:iot:s3-presigned-url-v2:https://s3.{{region-code}}.amazonaws.com/{{bucket-name}}/{{key-name}}%3FversionId%3D{{version-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%3D{{version1}}}

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

Amazon S3 仮想ホストおよびパススタイルのオブジェクト URL の詳細については、「[仮想ホスト形式のリクエスト](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access)」および「[パス形式のリクエスト](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#path-style-access)」を参照してください。

**注記**  
Amazon S3 署名付き URL に `versionId` を追加する場合は、 AWS SDK for Java 2.xをサポートする URL エンコーディングに準拠する必要があります。詳細については、「[Changes in parsing Amazon S3 URIs from version 1 to version 2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-s3-uri-parser.html#migration-3-uri-parser-api-changes)」を参照してください。

**Amazon S3 の署名付き URL プレースホルダーのバージョンの違い**

次のリストは、Amazon S3 の署名付き URL プレースホルダー `${aws:iot:s3-presigned-url-v1` (バージョン 1) と `${aws:iot:s3-presigned-url-v2` (バージョン 2) の違いの概要を示しています。
+  Amazon S3 の署名付き URL プレースホルダー `${aws:iot:s3-presigned-url-v1` は、`version-id` をサポートしていません。
+ Amazon S3 の署名付き URL プレースホルダー `${aws:iot:s3-presigned-url-v1` は、Amazon S3 URL をエンコードされていないものとして受け取ります。Amazon S3 の署名付き URL プレースホルダー `${aws:iot:s3-presigned-url-v2` では、Amazon S3 SDK 標準に準拠するように Amazon S3 URL をエンコードする必要があります。

**Topics**
+ [ジョブのコード署名](#create-manage-jobs-code-signing)
+ [ジョブドキュメント](#create-manage-jobs-job-doc)
+ [署名付き URL](#create-manage-jobs-presigned-URLs)
+ [ファイルアップロード用の署名付き URL](#create-manage-jobs-presigned-URLs-upload)
+ [Amazon S3 バージョニングを使用した署名付き URL](#create-manage-jobs-presigned-URLs-versioning)
+ [を使用してジョブを作成および管理する AWS マネジメントコンソール](manage-job-console.md)
+ [を使用してジョブを作成および管理する AWS CLI](manage-job-cli.md)