

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

# サブデプロイを作成する
<a name="create-subdeployments"></a>

**注記**  
サブデプロイ機能は、Greengrass nucleus バージョン 2.9.0 以降で使用できます。Greengrass nucleus の旧コンポーネントバージョンでは、設定をサブデプロイにデプロイすることはできません。

サブデプロイは、親デプロイ内のデバイスのより小さなサブセットをターゲットとするデプロイです。サブデプロイを使用して、デバイスのより小さなサブセットに設定をデプロイできます。サブデプロイを作成して、親デプロイ内の 1 つ以上のデバイスで失敗した場合に、失敗した親デプロイを再試行することもできます。この機能を使用すると、その親デプロイで失敗したデバイスを選択し、サブデプロイを作成して、そのサブデプロイが成功するまで設定をテストできます。サブデプロイが成功したら、その設定を親デプロイに再デプロイできます。

サブデプロイを作成し、そのステータスを確認するには、このセクションのステップに従います。デプロイを作成する方法の詳細については、「[デプロイの作成](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html)」を参照してください。

**サブデプロイを作成するには (AWS CLI)**

1. <a name="create-subdeployments-step1"></a>次のコマンドを実行して、モノのグループの最新のデプロイを取得します。コマンド内の ARN を、クエリするモノグループの ARN に置き換えます。`--history-filter` を **LATEST\$1ONLY** に設定すると、そのモノのグループの最新のデプロイが表示されます。

   ```
   aws greengrassv2 list-deployments --target-arn arn:aws:iot:region:account-id:thinggroup/thingGroupName --history-filter LATEST_ONLY
   ```

1. 次のステップで使用する **list-deployments** コマンドに対するレスポンスから `deploymentId` をコピーします。

1. 次のコマンドを実行し、デプロイのステータスを取得します。`deploymentId` をクエリするデプロイの ID に置き換えます。

   ```
   aws greengrassv2 get-deployment --deployment-id deploymentId
   ```

1. 次のステップで使用する **get-deployment** コマンドに対するレスポンスから `iotJobId` をコピーします。

1. 次のコマンドを実行して、指定されたジョブの実行リストを取得します。*jobID* を前のステップの `iotJobId` に置き換えます。*status* を、フィルタリングするステータスに置き換えます。次のステータスで結果をフィルタリングできます。
   + `QUEUED`
   + `IN_PROGRESS`
   + `SUCCEEDED`
   + `FAILED`
   + `TIMED_OUT`
   + `REJECTED`
   + `REMOVED`
   + `CANCELED`

   ```
   aws iot list-job-executions-for-job --job-id jobID --status status
   ```

1. サブデプロイのために、新しい AWS IoT モノのグループを作成するか、または既存のモノのグループを使用します。その後、このモノのグループに AWS IoT モノを追加します。モノグループを使用して Greengrass コアデバイスのフリートを管理します。ソフトウェアコンポーネントをデバイスにデプロイするとき、個々のデバイスまたはデバイスのグループのいずれかを対象にできます。アクティブな Greengrass デプロイを備えたモノのグループにデバイスを追加できます。追加すると、そのモノのグループのソフトウェアコンポーネントをそのデバイスにデプロイできるようになります。

   新しいモノのグループを作成して、それにデバイスを追加するには、次を実行します。

   1. AWS IoT モノのグループを作成します｡ *MyGreengrassCoreGroup* を新しいモノグループの名前に置き換えます。モノのグループ名にコロン (:) は使用できません。
**注記**  
サブデプロイのモノのグループが 1 つの `parentTargetArn` で使用されている場合、それを別の親フリートで再利用することはできません。あるモノのグループが別のフリートのサブデプロイを作成するために既に使用されている場合、API はエラーを返します。

      ```
      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup
      ```

      リクエストが正常に処理された場合、レスポンスは次の例のようになります。

      ```
      {
        "thingGroupName": "MyGreengrassCoreGroup",
        "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup",
        "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa"
      }
      ```

   1. プロビジョンド Greengrass コアをモノのグループに追加します。次のパラメータを使用して次のコマンドを実行します。
      + *MyGreengrassCore* を、プロビジョンド Greengrass コアの名前に置き換えます。
      + *MyGreengrassCoreGroup* をモノグループの名前に置き換えます。

      ```
      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup
      ```

      要求が正常に処理された場合、コマンドは出力されません。

1. `deployment.json` という名前のファイルを作成して、次の JSON オブジェクトをファイルにコピーします。*targetArn* をサブデプロイがターゲットとする AWS IoT モノのグループの ARN に置き換えます。サブデプロイのターゲットにできるのは、モノのグループのみです。モノのグループの ARN の形式は、次のとおりです。
   + **モノのグループ** – `arn:aws:iot:region:account-id:thinggroup/thingGroupName`

   ```
   {
     "targetArn": "targetArn"
   }
   ```

1. 次のコマンドを再度実行して、元のデプロイの詳細を取得します。これらの詳細には、メタデータ、コンポーネント、ジョブ構成が含まれます。*deploymentId* を [Step 1](#create-subdeployments-step1) の ID に置き換えます。このデプロイ設定を使用してサブデプロイを設定し、必要に応じて変更できます。

   ```
   aws greengrassv2 get-deployment --deployment-id deploymentId
   ```

   レスポンスには、デプロイの詳細が含まれています。**get-deployment** コマンドのレスポンスにある次のキーと値のペアを `deployment.json` にコピーします。これらの値を、サブデプロイ向けに変更することができます。このコマンドの詳細については、「[GetDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetDeployment.html)」を参照してください。
   + `components` - デプロイのコンポーネント。コンポーネントをアンインストールする場合は、このオブジェクトから削除してください。
   + `deploymentName` - デプロイの名前。
   + `deploymentPolicies` - デプロイのポリシー。
   + `iotJobConfiguration` - デプロイのジョブ設定。
   + `parentTargetArn` – 親デプロイのターゲット。
   + `tags` - デプロイのタグ。

1. 次のコマンドを実行して、`deployment.json` からサブデプロイを作成します。*subdeploymentName* をサブデプロイの名前に置き換えます。

   ```
   aws greengrassv2 create-deployment --deployment-name subdeploymentName --cli-input-json file://deployment.json
   ```

   レスポンスには、このサブデプロイを識別する `deploymentId` が含まれます。デプロイ ID を使用して、デプロイのステータスを確認できます。詳細については、「[デプロイのステータスを確認する](https://docs.aws.amazon.com/greengrass/v2/developerguide/check-deployment-status.html#check-cloud-deployment-status)」を参照してください。

1. サブデプロイが成功した場合は、その設定を使用して親デプロイを修正できます。前のステップで使用した `deployment.json` をコピーします。JSON ファイルの `targetArn` を親デプロイの ARN に置き換え、次のコマンドを実行してこの新しい設定で親デプロイを作成します。
**注記**  
親フリートの新しいデプロイリビジョンを作成すると、その親デプロイのすべてのデプロイリビジョンとサブデプロイが置き換えられます。詳細については、「[デプロイの変更](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html)」を参照してください。

   ```
   aws greengrassv2 create-deployment --cli-input-json file://deployment.json
   ```

   <a name="check-new-deployment-status"></a>レスポンスには、このデプロイを識別する `deploymentId` が含まれます。デプロイ ID を使用して、デプロイのステータスを確認できます。詳細については、「[デプロイのステータスを確認する](check-deployment-status.md#check-cloud-deployment-status)」を参照してください。