

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

# AWS マネージドテンプレートを使用して一般的なリモートオペレーションをデプロイする
<a name="job-templates-managed"></a>

AWS マネージドテンプレートは、 が提供するジョブテンプレートです AWS。これは、再起動、ファイルのダウンロード、デバイスへのアプリケーションのインストールなど、頻繁に実行されるリモートオペレーションのために使用されます。これらのテンプレートには、リモートアクションごとに事前定義されたジョブドキュメントがあるため、独自のジョブドキュメントを作成する必要はありません。

事前定義された設定のセットから選択し、追加のコードを記述しなくても、これらのテンプレートを使用してジョブを作成できます。管理テンプレートを使用すると、フリートにデプロイされたジョブドキュメントを表示できます。これらのテンプレートを使用してジョブを作成し、リモートオペレーションで再利用できるカスタムジョブテンプレートを作成できます。

## 管理テンプレートには何が含まれていますか。
<a name="job-template-managed-contains"></a>

各 AWS マネージドテンプレートには、以下が含まれています。
+ ジョブドキュメントでコマンドを実行するための環境。
+ オペレーションの名前とそのパラメータを指定するジョブドキュメント。例えば、**Download file** テンプレートの場合、オペレーション名は *Download file* で、パラメータは次のとおりです。
  + デバイスにダウンロードするファイルの URL。インターネットリソースか、パブリックまたは署名付き Simple Storage Service (Amazon S3) の URL です。
  + ダウンロードしたファイルを保存するデバイス上のローカルファイルパス。

  ジョブドキュメントとそのパラメータの詳細については、「[管理テンプレートのリモートアクションとジョブドキュメント](#job-template-manage-actions)」を参照してください。

## 前提条件
<a name="job-template-managed-prereq"></a>

管理テンプレートジョブドキュメントで指定されたリモートアクションをデバイスで実行するには、次の操作を行う必要があります。
+ **デバイスに特定のソフトウェアをインストールする**

  独自のデバイスソフトウェアとジョブハンドラー、または AWS IoT Device Client を使用します。ビジネスケースによっては、両方を実行して異なる機能を実行することもできます。
  +  **独自のデバイスソフトウェアとジョブハンドラーを使用する**

    リモートオペレーションをサポートする AWS IoT Device SDK とそのハンドラーのライブラリを使用して、デバイス用の独自のコードを書き込むことができます。ジョブをデプロイして実行するには、デバイスエージェントライブラリが正しくインストールされ、デバイスで実行されていることを検証します。

    リモートオペレーションをサポートする独自のハンドラーを使用することもできます。詳細については、 AWS IoT Device Client GitHub リポジトリの[「サンプルジョブハンドラー](https://github.com/awslabs/aws-iot-device-client/tree/main/sample-job-handlers)」を参照してください。
  +  ** AWS IoT Device Client を使用する**

    または、デバイス上に AWS IoT Device Client をインストールして実行することもできます。これは、デフォルトですべてのマネージドテンプレートをコンソールから直接使用できるためです。

    Device Client は C\$1\$1 で書かれたオープンソースソフトウェアで、組み込み Linux ベースの IoT デバイスにコンパイルしてインストールできます。Device Client には、*ベースクライアント*と個別の*クライアント側の機能*があります。ベースクライアントは MQTT プロトコル AWS IoT 経由で との接続を確立し、さまざまなクライアント側の機能に接続できます。

    デバイスでリモートオペレーションを行うには、Device Client の *クライアント側の Jobs 機能*を使用します。この機能には、ジョブドキュメントを受信するためのパーサーと、ジョブドキュメントで指定されたリモートアクションを実装するジョブハンドラーが含まれます。Device Client とその機能の詳細については、[「AWS IoT Device Client」](https://github.com/awslabs/aws-iot-device-client#readme)を参照してください。

    デバイス上で実行すると、Device Client はジョブドキュメントを受信し、ドキュメント内のコマンドを実行するために使用するプラットフォーム固有の実装ができるようになります。Device Client のセットアップおよび Jobs 機能の使用の詳細については、「[AWS IoT のチュートリアル](https://docs.aws.amazon.com/iot/latest/developerguide/iot-tutorials.html)」を参照してください。
+  **サポートされている環境を使用する**

  管理テンプレートごとに、リモートアクションの実行に使用できる環境に関する情報が表示されます。テンプレートで指定されているように、サポートされている Linux 環境でテンプレートを使用することをお勧めします。 AWS IoT Device Client を使用してマネージドテンプレートのリモートアクションを実行します。これは、Debian や Ubuntu などの一般的なマイクロプロセッサと Linux 環境をサポートするためです。

## 管理テンプレートのリモートアクションとジョブドキュメント
<a name="job-template-manage-actions"></a>

次のセクションでは、 AWS IoT ジョブのさまざまな AWS マネージドテンプレートを一覧表示し、デバイスで実行できるリモートアクションについて説明します。次のセクションでは、ジョブドキュメントに関する情報と、各リモートアクションのジョブドキュメントパラメータの説明が記載されています。デバイス側のソフトウェアは、テンプレート名とパラメータを使用してリモートアクションを実行します。

AWS マネージドテンプレートは、テンプレートを使用してジョブを作成するときに値を指定する入力パラメータを受け入れます。すべての管理テンプレートには、共通して次の 2 つのオプションの入力パラメータ (`runAsUser` および `pathToHandler`) があります。`AWS-Reboot` 以外のテンプレートには、追加の入力パラメータが必要です。このパラメータには、テンプレートを使用してジョブを作成するときに値を指定する必要があります。これらの必須入力パラメータは、選択したテンプレートによって異なります。たとえば、`AWS-Download-File` テンプレートを選択する場合、インストールするパッケージのリストと、ファイルのダウンロード元の URL を指定する必要があります。

 AWS IoT コンソールまたは AWS Command Line Interface (AWS CLI) を使用してマネージドテンプレートを使用するジョブを作成するときに、入力パラメータの値を指定します。CLI を使用する場合は、`document-parameters` オブジェクトを使用してこれらの値を指定します。詳細については、「[documentParameters](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html#iot-CreateJob-request-documentParameters)」を参照してください。

**注記**  
`document-parameters` は、 AWS 管理テンプレートからジョブを作成する場合にのみ使用します。このパラメータは、カスタムジョブテンプレートで使用したり、カスタムジョブテンプレートからジョブを作成したりすることはできません。

次に、一般的なオプションの入力パラメータについて説明します。各管理テンプレートが必要とするその他の入力パラメータについては、次のセクションを参照してください。

`runAsUser`  
このパラメータは、ジョブハンドラーを別のユーザーとして実行するかどうかを指定します。ジョブ作成時に指定されていない場合、ジョブハンドラーは Device Client と同じユーザーとして実行されます。ジョブハンドラーを別のユーザーとして実行する場合は、256 文字以下の文字列で値を指定します。

`pathToHandler`  
デバイスで実行されているジョブハンドラーへのパス。ジョブの作成時に指定されなかった場合、Device Client は現在の作業ディレクトリを使用します。

以下に、さまざまなリモートアクション、それらのジョブドキュメント、およびそれらが受け入れるパラメータを示します。これらのテンプレートはすべて、デバイス上でリモートオペレーションを実行するための Linux 環境をサポートしています。

### AWS–Download–File
<a name="download-managed-template"></a>

**[テンプレート名]**  
`AWS–Download–File`

**テンプレートの説明**  
ファイルをダウンロード AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータがあります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

`downloadUrl`  
ファイルのダウンロード元の URL。これは、インターネットリソース、パブリックにアクセスできる Amazon S3 内のオブジェクト、またはお客様のデバイスだけが署名付き URL を使用してアクセスできる Amazon S3 内のオブジェクトです。署名付き URL の使用およびアクセス許可の付与の詳細については、[署名付き URL](create-manage-jobs.md#create-manage-jobs-presigned-URLs) を参照してください。

`filePath`  
ダウンロードしたファイルを保存するデバイス内の場所を示すローカルファイルパス。

**デバイスの動作**  
デバイスは、指定された場所からファイルをダウンロードし、ダウンロードが完了したことを確認し、ローカルに保存します。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラへのパスとシェルスクリプト `download-file.sh` が表示されます。ファイルをダウンロードするには、ジョブハンドラでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `downloadUrl` および `filePath` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Download-File",
        "type": "runHandler",
        "input": {
          "handler": "download-file.sh",
          "args": [
            "${aws:iot:parameter:downloadUrl}",
            "${aws:iot:parameter:filePath}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Install–Application
<a name="install-managed-template"></a>

**[テンプレート名]**  
`AWS–Install–Application`

**テンプレートの説明**  
1 つ以上のアプリケーションをインストール AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `packages` があります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

`packages`

インストールされる 1 つ以上のアプリケーションのスペース区切りのリスト。

**デバイスの動作**  
デバイスは、ジョブドキュメントで指定されたとおりにアプリケーションをインストールします。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `install-packages.sh` が表示されます。ファイルをダウンロードするには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `packages` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Install-Application",
        "type": "runHandler",
        "input": {
          "handler": "install-packages.sh",
          "args": [
            "${aws:iot:parameter:packages}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Reboot
<a name="reboot-managed-template"></a>

**[テンプレート名]**  
`AWS–Reboot`

**テンプレートの説明**  
デバイスを再起動 AWS するために が提供する マネージドテンプレート。

**入力パラメータ**  
このテンプレートには必須パラメータはありません。`runAsUser` および `pathToHandler` のオプションパラメータを指定できます。

**デバイスの動作**  
デバイスは正常に再起動します。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `reboot.sh` が表示されます。デバイスを再起動するには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Reboot",
        "type": "runHandler",
        "input": {
          "handler": "reboot.sh",
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Remove–Application
<a name="uninstall-managed-template"></a>

**[テンプレート名]**  
`AWS–Remove–Application`

**テンプレートの説明**  
1 つ以上のアプリケーションをアンインストール AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `packages` があります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

`packages`

アンインストールされる 1 つ以上のアプリケーションのスペース区切りのリスト。

**デバイスの動作**  
デバイスは、ジョブドキュメントで指定されたとおりにアプリケーションをアンインストールします。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `remove-packages.sh` が表示されます。ファイルをダウンロードするには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `packages` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Remove-Application",
        "type": "runHandler",
        "input": {
          "handler": "remove-packages.sh",
          "args": [
            "${aws:iot:parameter:packages}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Restart–Application
<a name="restartsvs-managed-template"></a>

**[テンプレート名]**  
`AWS–Restart–Application`

**テンプレートの説明**  
1 つ以上のサービスを停止および再起動 AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `services` があります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

**サービス**  
再起動される 1 つ以上のアプリケーションのスペース区切りのリスト。

**デバイスの動作**  
指定されたアプリケーションが停止し、その後デバイスで再起動されます。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `restart-services.sh` が表示されます。システムサービスを再起動するには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `services` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Restart-Application",
        "type": "runHandler",
        "input": {
          "handler": "restart-services.sh",
          "args": [
            "${aws:iot:parameter:services}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Start–Application
<a name="startsvs-managed-template"></a>

**[テンプレート名]**  
`AWS-Start-Application`

**テンプレートの説明**  
1 つ以上のサービスを開始 AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `services` があります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

`services`

起動される 1 つ以上のアプリケーションのスペース区切りのリスト。

**デバイスの動作**  
指定されたアプリケーションがデバイス上で実行を開始します。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `start-services.sh` が表示されます。システムサービスを起動するには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `services` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Start-Application",
        "type": "runHandler",
        "input": {
          "handler": "start-services.sh",
          "args": [
            "${aws:iot:parameter:services}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS–Stop–Application
<a name="stopsvs-managed-template"></a>

**[テンプレート名]**  
`AWS–Stop–Application`

**テンプレートの説明**  
1 つ以上のサービスを停止 AWS するために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `services` があります。`runAsUser` および `pathToHandler` のオプションパラメータを指定することもできます。

`services`

停止される 1 つ以上のアプリケーションのスペース区切りのリスト。

**デバイスの動作**  
指定されたアプリケーションは、デバイスでの実行を停止します。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、ジョブハンドラーへのパスとシェルスクリプト `stop-services.sh` が表示されます。システムサービスを停止するには、ジョブハンドラーでこのシェルスクリプトを実行する必要があります。また、必須パラメータ `services` も表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Stop-Application",
        "type": "runHandler",
        "input": {
          "handler": "stop-services.sh",
          "args": [
            "${aws:iot:parameter:services}"
          ],
          "path": "${aws:iot:parameter:pathToHandler}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

### AWS Run Command
<a name="runsvs-command-managed-template"></a>

**[テンプレート名]**  
`AWS–Run–Command`

**テンプレートの説明**  
シェルコマンドを実行する AWS ために が提供するマネージドテンプレート。

**入力パラメータ**  
このテンプレートには以下の必須パラメータ `command` があります。`runAsUser` のオプションパラメータを指定することもできます。

`command`

コンマで区切られたコマンドの文字列。コマンド自体に含まれるカンマはすべてエスケープする必要があります。

**デバイスの動作**  
デバイスでは、ジョブドキュメントで指定されたとおりにシェルコマンドを実行します。

**ジョブドキュメント**  
以下は、ジョブドキュメントとその最新バージョンを示しています。テンプレートには、デバイスで実行されるジョブコマンドと、提供されたコマンドへのパスが表示されます。

```
{
  "version": "1.0",
  "steps": [
    {
      "action": {
        "name": "Run-Command",
        "type": "runCommand",
        "input": {
          "command": "${aws:iot:parameter:command}"
        },
        "runAsUser": "${aws:iot:parameter:runAsUser}"
      }
    }
  ]
}
```

**Topics**
+ [管理テンプレートには何が含まれていますか。](#job-template-managed-contains)
+ [前提条件](#job-template-managed-prereq)
+ [管理テンプレートのリモートアクションとジョブドキュメント](#job-template-manage-actions)
+ [を使用して AWS マネージドテンプレートからジョブを作成する AWS マネジメントコンソール](job-template-manage-console-create.md)
+ [を使用して AWS マネージドテンプレートからジョブを作成する AWS CLI](job-template-manage-cli-create.md)