

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

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

# AWS IoT Greengrass コアに AWS IoT Greengrass グループをデプロイする
<a name="deployments"></a>

 AWS IoT Greengrass グループを使用して、エッジ環境でエンティティを整理します。また、グループ内のエンティティ同士のやり取りや、 AWS クラウドとのやり取りを制御する用途にも使用します。例えば、グループ内の Lambda 関数のみをローカルでの実行用にデプロイし、グループ内のデバイスのみがローカル MQTT サーバーを使用して通信できます。

グループには、 [Core](gg-core.md) ソフトウェアを実行する AWS IoT デバイスである AWS IoT Greengrass Core を含める必要があります。コアはエッジゲートウェイとして機能し、エッジ環境で AWS IoT Core 機能を提供します。ビジネスニーズに応じて、次のエンティティをグループに追加することもできます。
+ **クライアントデバイス**。 AWS IoT レジストリでモノとして表されます。Greengrass デバイスは [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-lib-gg-connectivity.html) を実行するか、[AWS IoT Device SDK](what-is-gg.md#iot-device-sdk) または [AWS IoT Greengrass Discovery API](gg-discover-api.md) を使用して、コアの接続情報を取得します。グループのメンバーであるクライアントデバイスのみが Core に接続できます。
+ **Lambda 関数**。コアでコードを実行する、ユーザー定義のサーバーレスアプリケーションです。Lambda 関数は Greengrass グループで作成 AWS Lambda され、Greengrass グループから参照されます。詳細については、「[AWS IoT Greengrass コアで Lambda 関数を実行する](lambda-functions.md)」を参照してください。
+ **コネクタ**。コアでコードを実行する事前定義されたサーバーレスアプリケーションです。コネクタは、ローカルインフラストラクチャ、デバイスプロトコル AWS、およびその他のクラウドサービスとの統合を組み込みます。詳細については、「[Greengrass コネクタを使用したサービスおよびプロトコルとの統合](connectors.md)」を参照してください。
+ **サブスクリプション**。MQTT 通信が承認されている発行者、受信者、および MQTT トピック（またはサブジェクトなど）を定義します。
+ **リソース**。ローカルの[デバイスとボリューム](access-local-resources.md)、[機械学習モデル](ml-inference.md)、[シークレット](secrets.md)を参照し、Greengrass Lambda 関数およびコネクタによるアクセス制御に使用されます。
+ **ログ**。 AWS IoT Greengrass システムコンポーネントと Lambda 関数の設定のログ記録。詳細については、「[AWS IoT Greengrass ログによるモニタリング](greengrass-logs-overview.md)」を参照してください。

で Greengrass グループを管理し AWS クラウド 、コアにデプロイします。デプロイは、グループ設定を Core デバイスの `group.json` ファイルにコピーします。このファイルは `greengrass-root/ggc/deployments/group` にあります。

![\[コアデバイスにデプロイされた Greengrass グループのクラウド定義。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/group-deploy.png)


**注記**  
デプロイ中、コアデバイスの Greengrass デーモンプロセスは停止し、再起動します。

## AWS IoT コンソールからのグループのデプロイ
<a name="manage-deployments-console"></a>

 AWS IoT コンソールのグループの設定ページから、グループをデプロイし、そのデプロイを管理できます。

**注記**  
コンソールでこのページを開くには、**[Greengrass]**を選択してから、**[Groups (V1)]** (グループ 〔V1〕) を選択し、**[Greengrass groups]** (Greengrass グループ) からグループを選択します。

**グループの現在のバージョンをデプロイするには**  
+ グループ設定ページで、**[Deploy]** (デプロイ) を選択します。

**グループのデプロイ履歴を表示するには**  
グループのデプロイ履歴には、各デプロイの試行の日時、グループバージョン、ステータスが含まれます。  

1. グループ設定ページで、**[Deployment]** (デプロイ) タブを選択します。

1. エラーメッセージなど、デプロイに関する詳細を表示するには、**Greengrass デバイスの** AWS IoT コンソールから**デプロイ**を選択します。

**グループのデプロイを再デプロイするには**  
現在のデプロイが失敗した場合、または別のグループバージョンに戻した場合は、デプロイを再デプロイできます。  

1.  AWS IoT コンソールから **Greengrass デバイス**を選択し、**グループ (V1)** を選択します。

1. **[Deployment]** (デプロイ) タブを選択します。

1. 再デプロイするデプロイを選択し、**[Redeploy]** (再デプロイ) を選択します。

**グループのデプロイをリセットするには**  
グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「[デプロイのリセット](reset-deployments-scenario.md)」を参照してください。  

1.  AWS IoT コンソールから **Greengrass デバイス**を選択し、**グループ (V1)** を選択します。

1. **[Deployment]** (デプロイ) タブを選択します。

1. リセットするデプロイを選択し、**[Reset deployments]** (デプロイのリセット) を選択します。

## AWS IoT Greengrass API を使用したグループのデプロイ
<a name="manage-deployments-api"></a>

 AWS IoT Greengrass API には、 AWS IoT Greengrass グループをデプロイし、グループデプロイを管理するための以下のアクションが用意されています。これらのアクションは、、 AWS IoT Greengrass API AWS CLI、または AWS SDK から呼び出すことができます。


| アクション | 説明 | 
| --- | --- | 
| [CreateDeployment](https://docs.aws.amazon.com/greengrass/v1/apireference/createdeployment-post.html) |  `NewDeployment` または `Redeployment` デプロイを作成します。 現在のデプロイが失敗した場合は、デプロイを再デプロイできます。または、再デプロイして別のグループバージョンに戻すこともできます。 | 
| [GetDeploymentStatus](https://docs.aws.amazon.com/greengrass/v1/apireference/getdeploymentstatus-get.html) |  デプロイのステータス、`Building`、`InProgress`、`Success`、または `Failure` を返します。 デプロイ通知を受信するように Amazon EventBridge イベントを設定できます。詳細については、「[デプロイ通知の取得](deployment-notifications.md)」を参照してください。 | 
| [ListDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/listdeployments-get.html) | グループのデプロイ履歴を返します。 | 
| [ResetDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/resetdeployments-post.html) |  グループのデプロイをリセットします。 グループデプロイをリセットして、グループを移動または削除したり、デプロイ情報を削除したりできます。詳細については、「[デプロイのリセット](reset-deployments-scenario.md)」を参照してください。 | 

**注記**  
一括デプロイオペレーションの詳細については、「[グループの一括デプロイを作成する](bulk-deploy-cli.md)」を参照してください。

### グループ ID の取得
<a name="api-get-group-id"></a>

グループ ID は、API アクションで共通して使用されます。 [ListGroups](https://docs.aws.amazon.com/greengrass/v1/apireference/listgroups-get.html) アクションを使用して、グループのリストからターゲットグループの ID を検索できます。たとえば、 で AWS CLIコマンドを使用します`list-groups`。

```
aws greengrass list-groups
```

結果をフィルタリングする `query` オプションを含めることもできます。例:
+ 最後に作成されたグループを取得するには、次の操作を行います。

  ```
  aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
  ```
+ 名前によりグループを取得するには:

  ```
  aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
  ```

  グループ名は一意である必要はないため、複数のグループが返されることがあります。

以下に、`list-groups` 応答の例を示します。各グループの情報には、グループの ID (`Id` プロパティ) と最新のグループバージョンの ID (`LatestVersion` プロパティ) が含まれます。グループの他のバージョン ID を取得するには、[ListGroupVersions](https://docs.aws.amazon.com/greengrass/v1/apireference/listgroupversions-get.html) とともにグループ ID を使用します。

**注記**  
<a name="find-group-ids-console"></a>これらの値は、 AWS IoT コンソールでも確認できます。グループ ID は、グループの [**設定**] ページに表示されます。グループバージョン ID は、グループの **[デプロイ]** タブに表示されます。

```
{
    "Groups": [
        {
            "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE",
            "Name": "MyFirstGroup",
            "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z",
            "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE",
            "CreationTimestamp": "2019-11-11T05:47:31.435Z",
            "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE",
            "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE"
        },
        {
            "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE",
            "Name": "GreenhouseSensors",
            "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z",
            "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE",
            "CreationTimestamp": "2020-01-07T19:58:36.774Z",
            "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE",
            "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE"
        },
        ...
    ]
}
```

を指定しない場合 AWS リージョン、 AWS CLI コマンドはプロファイルのデフォルトリージョンを使用します。別のリージョンのグループを返すには、*リージョン*オプションを含めます。以下に例を示します。

```
aws greengrass list-groups --region us-east-1
```

## AWS IoT Greengrass グループオブジェクトモデルの概要
<a name="api-overview"></a>

 AWS IoT Greengrass API を使用してプログラミングする場合、Greengrass グループオブジェクトモデルを理解すると便利です。

### グループ
<a name="api-overview-groups"></a>

 AWS IoT Greengrass API では、最上位`Group`オブジェクトはメタデータと`GroupVersion`オブジェクトのリストで構成されます。 `GroupVersion` オブジェクトは ID `Group`によって に関連付けられます。

![\[メタデータとグループバージョンのリストで構成されるグループの図。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/om-group.png)


### グループバージョン
<a name="api-overview-versions"></a>

`GroupVersion` オブジェクトは、グループメンバーシップを定義します。各 `GroupVersion` は、ARN によって `CoreDefinitionVersion` およびその他のコンポーネントバージョンを参照します。これらの参照は、グループに含めるエンティティを決定します。

![\[ARN で他のバージョンタイプを参照するグループバージョンの図。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/om-groupversion.png)


例えば、グループに 3 つの Lambda 関数、1 つのデバイス、2 つのサブスクリプションを含めるには、`GroupVersion` で次を参照します。
+ 必要なコアを含む `CoreDefinitionVersion`。
+ 3 つの関数を含む `FunctionDefinitionVersion`。
+ クライアントデバイスを含む `DeviceDefinitionVersion` デバイス。
+ 2 つのサブスクリプションを含む `SubscriptionDefinitionVersion`。

コアデバイスにデプロイされた `GroupVersion` によって、ローカル環境で使用できるエンティティと、それらのエンティティがどのようにやり取りできるかが決まります。

### グループコンポーネント
<a name="api-overview-group-components"></a>

グループに追加するコンポーネントには、3 つのレベルの階層があります。
+ 定義は特定のタイプの *DefinitionVersion* オブジェクトのリストを参照します。例えば、`DeviceDefinition` は `DeviceDefinitionVersion` オブジェクトのリストを参照します。
+ 特定のタイプのエンティティのセットを含む *DefinitionVersion*。例えば、`DeviceDefinitionVersion` には、`Device` オブジェクトのリストが含まれています。
+ プロパティと動作を定義する個々のエンティティ。たとえば、 は、 AWS IoT レジストリ内の対応するクライアントデバイスの ARN、デバイス証明書の ARN、およびローカルシャドウがクラウドと自動的に同期するかどうか`Device`を定義します。

  グループには、次のタイプのエンティティを追加できます。
  + [コネクタ](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-connector.html)
  + [コア](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-core.html)
  + [デバイス](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-device.html)
  + [関数](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-function.html)
  + [ロガー](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-logger.html)
  + [リソース](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resource.html)
  + [サブスクリプション](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-subscription.html)

次の例では、`DeviceDefinition` は、それぞれに複数の `Device` オブジェクトを含む 3 つの `DeviceDefinitionVersion` オブジェクトを参照します。グループでは、一度に 1 つの `DeviceDefinitionVersion` のみが使用されます。

![\[DeviceDefinition、DeviceDefinitionVersion、Device オブジェクトで構成されるデバイス階層の図。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/om-devicedefinition.png)


### グループの更新
<a name="api-update-groups"></a>

 AWS IoT Greengrass API では、バージョンを使用してグループの設定を更新します。バージョンは変更不可であるため、グループコンポーネントを追加、削除、または変更するには、新規または更新されたエンティティを含む *DefinitionVersion* オブジェクトを作成する必要があります。

新しい *DefinitionVersions* オブジェクトを新規または既存の*定義*オブジェクトに関連付けることができます。例えば、 `CreateFunctionDefinition` アクションを使用して、`FunctionDefinitionVersion` を初期バージョンとして含む `FunctionDefinition` を作成したり、 `CreateFunctionDefinitionVersion` アクションを使用して既存の `FunctionDefinition` を参照したりできます。

グループコンポーネントを作成したら、そのグループのメンバーにする、すべての DefinitionVersion オブジェクトを含む `GroupVersion` を作成します。次に、`GroupVersion` をデプロイします。

`GroupVersion` をデプロイするには、1 つだけ `Core` を含む `CoreDefinitionVersion` を参照する必要があります。参照されるエンティティはすべて、グループのメンバーである必要があります。また、[Greengrass サービスロール](service-role.md)は、 をデプロイ AWS リージョン する AWS アカウント の に関連付ける必要があります`GroupVersion`。

**注記**  
API の `Update` アクションは、 `Group` またはコンポーネント*定義*オブジェクトの名前を変更するために使用されます。

** AWS リソースを参照するエンティティの更新**

Greengrass Lambda 関数と[シークレットリソース](secrets.md)は、Greengrass 固有のプロパティを定義し、対応する AWS リソースも参照します。これらのエンティティを更新するには、Greengrass オブジェクトではなく、対応する AWS リソースに変更を加えることができます。たとえば、Lambda 関数は で関数を参照 AWS Lambda し、Greengrass グループに固有のライフサイクルやその他のプロパティも定義します。
+ Lambda 関数コードまたはパッケージ化された依存関係を更新するには、 AWS Lambdaで変更を加えます。次のグループのデプロイ時に、これらの変更は から取得 AWS Lambda され、ローカル環境にコピーされます。
+ [Greengrass 固有のプロパティ](lambda-group-config.md)を更新するには、更新された `Function` プロパティを含む `FunctionDefinitionVersion` を作成します。

**注記**  
Greengrass Lambda 関数は、エイリアス ARN またはバージョン ARN で Lambda 関数を参照できます。エイリアス ARN を参照する場合 (推奨)、 AWS Lambdaで新しい関数バージョンを作成するときに `FunctionDefinitionVersion` (または `SubscriptionDefinitionVersion`) を更新する必要はありません。詳細については、「[エイリアスまたはバージョンによる Lambda 関数のリファレンス](lambda-functions.md#lambda-versions-aliases)」を参照してください。

## 関連情報
<a name="deployments-see-also"></a>
+ [デプロイ通知の取得](deployment-notifications.md)
+ [デプロイのリセット](reset-deployments-scenario.md)
+ [グループの一括デプロイを作成する](bulk-deploy-cli.md)
+ [デプロイの問題のトラブルシューティング](gg-troubleshooting.md#gg-troubleshooting-deploymentissues)<a name="see-also-gg-api-cli"></a>
+ [AWS IoT Greengrass Version 1 API リファレンス](https://docs.aws.amazon.com/greengrass/v1/apireference/)
+ <a name="see-also-gg-cli"></a>コマンドリファレンス[AWS IoT Greengrass](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html)の コマンド *AWS CLI *

# デプロイ通知の取得
<a name="deployment-notifications"></a>

Amazon EventBridge イベントルールを使用して、Greengrass グループのデプロイの状態変更に関する通知を受け取ることができます。EventBridge は、 AWS リソースの変更を説明するシステムイベントのほぼリアルタイムのストリームを配信します。 は、これらのイベントを少なくとも *1 回* EventBridge AWS IoT Greengrass に送信します。つまり、 は、配信を確実にするために、特定のイベントの複数のコピーを送信する AWS IoT Greengrass 可能性があります。さらに、イベントリスナーは、イベントが発生した順序でイベントを受信しない場合があります。

**注記**  
Amazon EventBridge は、アプリケーションを [Greengrass Core デバイス](telemetry.md)やデプロイ通知などのさまざまなソースのデータに接続するために使用できるイベントバスサービスです。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」を参照してください。

AWS IoT Greengrass グループデプロイの状態が変わると、 はイベントを発行します。すべての状態遷移または指定した状態への移行に対して実行される EventBridge ルールを作成できます。デプロイがルールを開始する状態になると、EventBridge はルールで定義されたターゲットアクションを呼び出します。これにより、通知を送信したり、イベント情報をキャプチャしたり、修正アクションを実行したり、状態の変更に応じて他のイベントを開始したりできます。例えば、次のユースケースのルールを作成できます。
+ アセットのダウンロードや担当者の通知など、デプロイ後のオペレーションを開始します。
+ デプロイの成功または失敗時に通知を送信します。
+ デプロイイベントに関するカスタムメトリクスを発行します。

AWS IoT Greengrass は、デプロイが `Building`、`InProgress`、、`Success`および の状態になるとイベントを発行します`Failure`。

**注記**  
[一括デプロイ](bulk-deploy-cli.md) オペレーションのステータスのモニタリングは、現在サポートされていません。ただし、 は、一括デプロイの一部である個々のグループデプロイの状態変更イベント AWS IoT Greengrass を発行します。

## グループデプロイステータスの変更イベント
<a name="events-message-format"></a>

デプロイ状態変更の[イベント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)では、次の形式を使用します。

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass Deployment Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "time":"2018-03-22T00:38:11Z",
    "region":"us-west-2",
    "resources":[],
    "detail":{    
        "group-id": "284dcd4e-24bc-4c8c-a770-EXAMPLEf03b8",
        "deployment-id": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681",
        "deployment-type": "NewDeployment|Redeployment|ResetDeployment|ForceResetDeployment",
        "status": "Building|InProgress|Success|Failure"
    }
}
```

1 つ以上のグループに適用するルールを作成できます。次の 1 つ以上のデプロイタイプとデプロイの状態でルールをフィルタリングできます。

**デプロイタイプ**  
+ `NewDeployment`。グループバージョンの最初のデプロイ。
+ `ReDeployment`。グループバージョンの再デプロイ。
+ `ResetDeployment`。 AWS クラウド および AWS IoT Greengrass コアに保存されているデプロイ情報を削除します。詳細については、「[デプロイのリセット](reset-deployments-scenario.md)」を参照してください。
+ `ForceResetDeployment`。 AWS クラウド に保存されているデプロイ情報を削除し、コアが応答するのを待たずに成功を報告します。また、コアが接続されている場合、または次に接続するときに、コアに保存されているデプロイ情報も削除します。

**デプロイの状態**  
+ `Building`. AWS IoT Greengrass はグループ設定を検証し、デプロイアーティファクトを構築しています。
+ `InProgress`。 デプロイは AWS IoT Greengrass コアで進行中です。
+ `Success`。デプロイに成功しました。
+ `Failure`。デプロイに失敗しました。

イベントが重複したり、順序が順不同である可能性があります。イベントの順序を特定するには、`time` プロパティを使用します。

**注記**  
AWS IoT Greengrass は `resources`プロパティを使用しないため、常に空です。

## EventBridge ルールを作成するための前提条件
<a name="create-events-rule-prereqs"></a>

の EventBridge ルールを作成する前に AWS IoT Greengrass、次の操作を行います。
+ EventBridge のイベント、ルール、ターゲットに精通しておいてください。
+ EventBridge ルールによって呼び出されるターゲットを作成して設定します。ルールは、以下のようなさまざまなタイプのターゲットを呼び出すことができます。
  + Amazon Simple Notiﬁcation Service (Amazon SNS)
  + AWS Lambda 関数
  + Amazon Kinesis Video Streams
  + Amazon Simple Queue Service (Amazon SQS) キュー

詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」および「[Amazon EventBridge の開始方法](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)」を参照してください。

## デプロイ通知の設定 (コンソール)
<a name="create-events-rule-console"></a>

グループのデプロイ状態が変更されたときに Amazon SNS トピックを発行する EventBridge ルールを作成するには、次のステップを使用します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。詳細については、「Amazon [ EventBridge ユーザーガイド」の「Creating a EventBridge rule that triggers on an event from an AWS resource](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)」を参照してください。 * EventBridge *

1. [Amazon EventBridge コンソール](https://console.aws.amazon.com/events/)を開きます。

1. ナビゲーションペインで **[ルール]** を選択します。

1. **[ルールの作成]** を選択します。

1. ルールの名前と説明を入力します。

   ルールには同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

1. **[イベントバス]** で、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、**AWS のデフォルトのイベントバス**を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに送られます。

1. **[ルールタイプ]** で、**[イベントパターンを持つルール]** を選択してください。

1. [**次へ**] を選択します。

1. **[イベントソース]** で、**[AWS のサービス]** を選択します。

1. **[イベントパターン]** で、**[AWS のサービス]** を選択します。

1. **[AWS のサービス]** で、[Greengrass] を選択します。

1. **[イベントタイプ]** で、**[Greengrass デプロイステータスの変更]** を選択します。
**注記**  
**AWS CloudTrail イベントタイプを介した API コール**は、 と AWS IoT Greengrass の統合に基づいています AWS CloudTrail。このオプションを使用して、 AWS IoT Greengrass API への読み取りまたは書き込み呼び出しによって開始されるルールを作成できます。詳細については、「[を使用した AWS IoT Greengrass API コールのログ記録 AWS CloudTrail](logging-using-cloudtrail.md)」を参照してください。

1. 通知を開始するデプロイ状態を選択します。
   + すべての状態変更イベントの通知を受信するには、[**Any state (すべての状態)**] を選択します。
   + 一部の状態変更イベントの通知のみを受信するには、**[特定の状態]** を選択してから、対象とする状態を選択します。

1. 通知を開始するデプロイタイプを選択します。
   + すべてのデプロイタイプの通知を受信するには、**[すべての状態]** を選択します。
   + 一部のデプロイタイプの通知のみを受信するには、**[特定の状態]** を選択してから、対象とするデプロイタイプを選択します。

1. [**次へ**] を選択します。

1. **[ターゲットタイプ]** で、**[AWS のサービス]** を選択します。

1. **[ターゲットの選択]** で、ターゲットを設定します。この例では Amazon SNS トピックを使用していますが、通知を送信するターゲットタイプには他のトピックも設定できます。

   1. [**Target (ターゲット)**] で [**SNS topic (SNS トピック)**] を選択します。

   1. **[トピック]** で、ターゲットトピックを選択します。

   1. [**次へ**] を選択します。

1. **[Tags]** (タグ) で、ルールのタグを定義するか、フィールドを空のままにします。

1. **[次へ]** を選択します。

1. ルールの詳細を確認し、**ルールの作成** を選択します。

## デプロイ通知の設定 (CLI)
<a name="create-events-rule-cli"></a>

グループのデプロイ状態が変更されたときに Amazon SNS トピックを発行する EventBridge ルールを作成するには、次のステップを使用します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。

1. ルールを作成します。
   + *group-id* を AWS IoT Greengrass グループの ID に置き換えます。

   ```
   aws events put-rule \
     --name TestRule \
     --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"group-id\": [\"group-id\"]}}"
   ```

   パターンで省略されたプロパティは無視されます。

1. トピックをルールターゲットとして追加します。
   + *topic-arn* を Amazon SNS トピックの ARN に置き換えます。

   ```
   aws events put-targets \
     --rule TestRule \
     --targets "Id"="1","Arn"="topic-arn"
   ```
**注記**  
Amazon EventBridge にターゲットトピックの呼び出しを許可するには、トピックにリソースベースのポリシーを追加する必要があります。詳細については、*Amazon EventBridge ユーザーガイド*の「[Amazon SNS のアクセス許可](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions)」を参照してください。

詳細については、「*Amazon EventBridge ユーザーガイド*」の「[EventBridge のイベントとイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)」を参照してください。

## デプロイ通知の設定 (CloudFormation)
<a name="create-events-rule-cloudformation"></a>

 CloudFormation テンプレートを使用して、Greengrass グループデプロイの状態変更に関する通知を送信する EventBridge ルールを作成します。詳細については、「*AWS CloudFormation ユーザーガイド*」の「[Amazon EventBridge resource type reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Events.html)」を参照してください。

## 関連情報
<a name="deployment-notifications-see-also"></a>
+ [AWS IoT Greengrass コアに AWS IoT Greengrass グループをデプロイする](deployments.md)
+ 「*Amazon EventBridge ユーザーガイド*」の「[What is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)」

# デプロイのリセット
<a name="reset-deployments-scenario"></a>

この機能は AWS IoT Greengrass Core v1.1 以降で使用できます。

グループのデプロイを次のようにリセットできます。
+ グループのコアを別のグループに移動する場合や、グループのコアのイメージが再作成されている場合などに、グループを削除します。別の Greengrass グループでコアを使用するには、グループを削除する前に、グループのデプロイをリセットする必要があります。
+ グループのコアを別のグループに移動する。
+ すべてのデプロイ前の状態にグループを戻す。
+ コアデバイスからデプロイの設定を削除する。
+ コアデバイスあるいはクラウドから機密データを削除する。
+ 現在のグループのコアを別のものに置き換えることなく、新規グループの設定をコアにデプロイする。

**注記**  
デプロイのリセット機能は、 AWS IoT Greengrass Core ソフトウェア v1.0.0 では使用できません。v1.0.0 を使用してデプロイされたグループを削除することはできません。

デプロイのリセットオペレーションは、まず、特定のグループのクラウドに保存されているすべてのデプロイ情報をクリーンアップします。そして、グループのコアデバイスにデプロイ関連のすべての情報を消去するよう指示します (ユーザー定義の `config.json` や Greengrass コア証明書を除く、Lambda 関数、ユーザーログ、シャドウデータベース、サーバー証明書)。グループに現在 `In Progress` あるいは `Building` 状態のデプロイがある場合には、このグループのデプロイのリセットを開始できません。

## AWS IoT コンソールからデプロイをリセットする
<a name="reset-deployments-console"></a>

グループデプロイは、 AWS IoT コンソールのグループ設定ページからリセットできます。

1. <a name="console-gg-groups"></a> AWS IoT コンソールナビゲーションペインの**「管理**」で **Greengrass デバイス**を展開し、**「グループ (V1)**」を選択します。

1. ターゲットグループを選択します。

1. **[Deployments]** (デプロイ) タブから、**[Reset deployments]** (デプロイのリセット) を選択します。

1. **[Reset deployments for this Greengrass Group]** (この Greengrass グループのデプロイをリセットする) ダイアログボックスで、**confirm** と入力して同意し、**[Reset deployment]** (デプロイのリセット) を選択します。

## AWS IoT Greengrass API を使用してデプロイをリセットする
<a name="reset-deployments-api"></a>

デプロイをリセットするには AWS CLI、、 AWS IoT Greengrass API、または AWS SDK で `ResetDeployments`アクションを使用できます。このトピックの例では、CLI を使用しています。

```
aws greengrass reset-deployments --group-id GroupId [--force]
```CLI コマンド `reset-deployments` の引数

`--group-id`  
グループ ID。この値を取得するには、`list-groups` コマンドを使用します。

`--force`  
オプション。グループのコアデバイスが紛失、盗難または破壊された場合には、このパラメータを使用します。このオプションでは、コアデバイスのレスポンスを待たずに、すべてのデプロイ情報がクラウドから消去された後でデプロイリセットプロセスから成功の報告を行います。ただし、コアデバイスがアクティブであるか、アクティブになった場合は、クリーンアップオペレーションも実行します。

CLI コマンド `reset-deployments` の出力は次のようになります。

```
{
    "DeploymentId": "4db95ef8-9309-4774-95a4-eea580b6ceef",
    "DeploymentArn": "arn:aws:greengrass:us-west-2:106511594199:/greengrass/groups/b744ed45-a7df-4227-860a-8d4492caa412/deployments/4db95ef8-9309-4774-95a4-eea580b6ceef"
}
```

デプロイのリセット状態は、CLI コマンド `get-deployment-status` で確認できます。

```
aws greengrass get-deployment-status --deployment-id DeploymentId --group-id GroupId
```CLI コマンド `get-deployment-status` の引数

`--deployment-id`  
デプロイ ID。

`--group-id`  
グループ ID。

CLI コマンド `get-deployment-status` の出力は次のようになります。

```
{
    "DeploymentStatus": "Success",
    "UpdatedAt": "2017-04-04T00:00:00.000Z"
}
```

デプロイのリセット準備中は、`DeploymentStatus` が `Building` に設定されます。リセットデプロイの準備ができたが、 AWS IoT Greengrass コアがリセットデプロイを取得していない場合、 `DeploymentStatus`は です`InProgress`。

リセットオペレーションが失敗すると、エラー情報がレスポンスで返されます。

## 関連情報
<a name="reset-deployments-see-also"></a>
+ [AWS IoT Greengrass コアに AWS IoT Greengrass グループをデプロイする](deployments.md)
+ 「AWS IoT Greengrass Version 1 API リファレンス」の「[ResetDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/resetdeployments-post.html)」
+ 「AWS IoT Greengrass Version 1 API リファレンス」の「[GetDeploymentStatus](https://docs.aws.amazon.com/greengrass/v1/apireference/getdeploymentstatus-get.html)」

# グループの一括デプロイを作成する
<a name="bulk-deploy-cli"></a>

 シンプルな API コールを使用して、多数の Greengrass グループを一度にデプロイできます。これらのデプロイは、上限が固定された適応レートでトリガーされます。

 このチュートリアルでは、 を使用して AWS CLI で一括グループデプロイを作成およびモニタリングする方法について説明します AWS IoT Greengrass。このチュートリアルの一括デプロイ例には、複数のグループが含まれています。この例をお客様の実装に使用して、必要な数のグループを追加できます。

 このチュートリアルのおおまかな手順は以下のとおりです。

1. [一括デプロイ入力ファイルを作成してアップロードする](#bulk-deploy-cli-create-input-file)

1. [一括デプロイ用の IAM 実行ロールを作成および設定する](#bulk-deploy-cli-create-role)

1. [実行ロールに S3 バケットへのアクセスを許可する](#bulk-deploy-cli-modify-bucket)

1. [グループをデプロイする](#bulk-deploy-cli-start-bulk-deployments)

1. [デプロイをテストする](#bulk-deploy-cli-test)

## 前提条件
<a name="bulk-deploy-cli-prerequisites"></a>

 このチュートリアルを完了するには、以下が必要です。
+  1 つ以上のデプロイ可能な Greengrass グループ。 AWS IoT Greengrass のグループと Core の作成の詳細については、「[の開始方法 AWS IoT Greengrass](gg-gs.md)」を参照してください。
+  マシンに AWS CLI インストールおよび設定されている 。詳細については、「[AWS CLI ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」を参照してください。
+  AWS リージョン と同じ で作成された S3 バケット AWS IoT Greengrass。新しいバケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[Amazon S3 バケットの作成、設定、操作](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-configure-bucket.html)」を参照してください。
**注記**  
 現在、SSE KMS 対応バケットはサポートされていません。

## ステップ 1: 一括デプロイ入力ファイルを作成してアップロードする
<a name="bulk-deploy-cli-create-input-file"></a>

 このステップでは、デプロイ入力ファイルを作成し、Amazon S3 バケットにアップロードします。このファイルは、一括デプロイの各グループに関する情報を含むシリアル化された行区切りの JSON ファイルです。 AWS IoT Greengrass は、一括グループのデプロイを初期化するときに、この情報を使用してユーザーに代わって各グループをデプロイします。

1.  以下のコマンドを実行して、デプロイするグループごとに `groupId` を取得します。デプロイする各グループが AWS IoT Greengrass によって識別されるように、`groupId` を一括デプロイ入力ファイルに入力します。
**注記**  
<a name="find-group-ids-console"></a>これらの値は AWS IoT コンソールでも確認できます。グループ ID は、グループの [**設定**] ページに表示されます。グループバージョン ID は、グループの **[デプロイ]** タブに表示されます。

   ```
   aws greengrass list-groups
   ```

    レスポンスには、 AWS IoT Greengrass アカウント内の各グループに関する情報が含まれます。

   ```
   {
     "Groups": [
       {
         "Name": "string",
         "Id": "string",
         "Arn": "string",
         "LastUpdatedTimestamp": "string",
         "CreationTimestamp": "string",
         "LatestVersion": "string",
         "LatestVersionArn": "string"
       }
     ],
     "NextToken": "string"
   }
   ```

    以下のコマンドを実行して、デプロイするグループごとに `groupVersionId` を取得します。

   ```
   list-group-versions --group-id groupId
   ```

    レスポンスには、グループのすべてのバージョンに関する情報が含まれています。使用するグループバージョンの `Version` の値を記録します。

   ```
   {
     "Versions": [
       {
         "Arn": "string",
         "Id": "string",
         "Version": "string",
         "CreationTimestamp": "string"
       }
     ],
     "NextToken": "string"
   }
   ```

1.  使用しているコンピュータのターミナルまたはエディタで、以下の例の *MyBulkDeploymentInputFile* というファイルを作成します。このファイルには、一括デプロイに含める各 AWS IoT Greengrass グループに関する情報が含まれています。この例では複数のグループを定義していますが、このチュートリアルでは 1 つのグループを定義するだけでもかまいません。
**注記**  
 このファイルのサイズは 100 MB 未満であることが必要です。

   ```
   {"GroupId":"groupId1", "GroupVersionId":"groupVersionId1", "DeploymentType":"NewDeployment"}
   {"GroupId":"groupId2", "GroupVersionId":"groupVersionId2", "DeploymentType":"NewDeployment"}
   {"GroupId":"groupId3", "GroupVersionId":"groupVersionId3", "DeploymentType":"NewDeployment"}
   ...
   ```

    各レコード (行) には、グループオブジェクトが含まれています。各グループオブジェクトには、対応する `GroupId` と `GroupVersionId`、および `DeploymentType` が含まれています。現在、 は`NewDeployment`一括デプロイタイプのみ AWS IoT Greengrass をサポートしています。

    このファイルを保存して閉じます。ファイルの場所を記録します。

1.  ターミナルで以下のコマンドを使用して、入力ファイルを Amazon S3 バケットにアップロードします。ファイルパスを先ほどのファイルの場所と名前に置き換えます。詳細については、「[バケットへのオブジェクトの追加](https://docs.aws.amazon.com/AmazonS3/latest/gsg/PuttingAnObjectInABucket.html)」を参照してください。

   ```
   aws s3 cp path/MyBulkDeploymentInputFile s3://amzn-s3-demo-bucket/
   ```

## ステップ 2: IAM 実行ロールを作成して設定する
<a name="bulk-deploy-cli-create-role"></a>

 このステップでは、IAM コンソールを使用してスタンドアロンの実行ロールを作成します。次に、ロールと の間に信頼関係を確立 AWS IoT Greengrass し、IAM ユーザーに実行ロールに対する`PassRole`権限があることを確認します。これにより、 AWS IoT Greengrass は実行ロールを引き受け、ユーザーに代わってデプロイを作成できます。

1.  以下のポリシーを使用して、実行ロールを作成します。このポリシードキュメントでは、お客様に代わって各デプロイを作成するときに一括デプロイ入力ファイルにアクセスすることを AWS IoT Greengrass に許可します。

    IAM ロールの作成とアクセス許可の委任の詳細については、「[IAM ロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": "greengrass:CreateDeployment",
               "Resource": [
               "arn:aws:greengrass:us-east-1:123456789012:/greengrass/groups/groupId1",
       "arn:aws:greengrass:us-east-1:123456789012:/greengrass/groups/groupId2",
       "arn:aws:greengrass:us-east-1:123456789012:/greengrass/groups/groupId3"
               ]
           }
       ]
   }
   ```

------
**注記**  
 このポリシーでは、 AWS IoT Greengrassによってデプロイされる一括デプロイ入力ファイル内の各グループまたはグループバージョン用にリソースが必要です。すべてのグループにアクセスを許可するには、`Resource` でアスタリスクを指定します。  

   ```
   "Resource": ["*"]
   ```

1.  AWS IoT Greengrassを含めるように実行ロールの信頼関係を変更します。これにより、 AWS IoT Greengrass は実行ロールとそれにアタッチされたアクセス許可を使用できます。詳細については、「[既存のロールの信頼関係の編集](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/edit_trust.html)」を参照してください。

   また、`aws:SourceArn` と `aws:SourceAccount` のグローバル条件コンテキストキーを信頼ポリシーに加えることで、「混乱した代理」によるセキュリティ上の問題への対策にすることをお勧めします。条件コンテキストキーを使用すると、指定したアカウントと Greengrass ワークスペースからのリクエストのみを許可するようにアクセスを制限できます。「混乱した代理」問題の詳細については、「[サービス間の混乱した代理の防止](cross-service-confused-deputy-prevention.md)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "greengrass.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "StringEquals": {
           "aws:SourceAccount": "123456789012"
           },
           "ArnLike": {
             "aws:SourceArn": "arn:aws:greengrass:us-east-1:123456789012:*"
           }
         }
       }
     ]
   }
   ```

------

1.  実行ロールの IAM `PassRole` アクセス許可を IAM ユーザーに付与します。この IAM ユーザーは、一括デプロイを開始するために使用されます。`PassRole` アクセス許可により、IAM ユーザーは実行ロールを AWS IoT Greengrass に渡せるようになります。詳細については、[「 AWS サービスにロールを渡すアクセス許可をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

    次の例を参考にして、実行ロールにアタッチされた IAM ポリシーを更新します。必要に応じて、この例を変更します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt1508193814000",
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::123456789012:user/executionRoleArn"
               ],
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": "greengrass.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

## ステップ 3: 実行ロールに S3 バケットへのアクセスを許可する
<a name="bulk-deploy-cli-modify-bucket"></a>

 一括デプロイを開始するには、実行ロールが Amazon S3 バケットから一括デプロイ入力ファイルを読み取ることができる必要があります。以下のポリシー例を Amazon S3 バケットにアタッチして、そのバケットに対する `GetObject` アクセス許可が実行ロールに付与されるようにします。

 詳細については、「[S3 バケットポリシーを追加する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "examplePolicy",
    "Statement": [
        {
            "Sid": "Stmt1535408982966",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "executionRoleArn"
                ]
            },
            "Action": "s3:GetObject",
            "Resource":
            "arn:aws:s3:::amzn-s3-demo-bucket/objectKey"
        }
    ]
}
```

------

 ターミナルで以下のコマンドを使用して、バケットのポリシーを確認できます。

```
aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket
```

**注記**  
 代わりに、Amazon S3 バケットに対する `GetObject` アクセス許可が実行ロールに付与されるように、そのロールを直接変更することもできます。そのためには、以下のポリシー例を実行ロールにアタッチします。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/objectKey"
        }
    ]
}
```

## ステップ 4: グループをデプロイする
<a name="bulk-deploy-cli-start-bulk-deployments"></a>

 このステップでは、一括デプロイ入力ファイルで設定したすべてのグループバージョンに対して一括デプロイオペレーションを開始します。各グループバージョンに対するデプロイアクションのタイプは `NewDeploymentType` です。

**注記**  
 同じアカウントの別の一括デプロイがまだ実行されている間は、**StartBulkDeployment** を呼び出すことはできません。リクエストは却下されました。

1.  以下のコマンドを使用して、一括デプロイを開始します。

    各 **StartBulkDeployment** リクエストに `X-Amzn-Client-Token` トークンを含めることをお勧めします。これらのリクエストは、トークンおよびリクエストパラメータに対してべき等です。このトークンは、最大 64 バイトの ASCII 文字で、大文字と小文字を区別する一意の文字列です。

   ```
   aws greengrass start-bulk-deployment --cli-input-json "{
             "InputFileUri":"URI of file in S3 bucket", 
             "ExecutionRoleArn":"ARN of execution role",
             "AmznClientToken":"your Amazon client token"
             }"
   ```

    このコマンドを実行した結果、成功ステータスコード `200` が以下のレスポンスと共に返されます。

   ```
   {
     "bulkDeploymentId": UUID
   }
   ```

    一括デプロイ ID を記録します。この ID は、一括デプロイのステータスの確認に使用します。
**注記**  
一括デプロイオペレーションは現在サポートされていませんが、Amazon EventBridge イベントルールを作成して、個々のグループのデプロイステータスの変更通知を受け取ることができます。詳細については、「[デプロイ通知の取得](deployment-notifications.md)」を参照してください。

1.  以下のコマンドを使用して、一括デプロイのステータスを確認します。

   ```
   aws greengrass get-bulk-deployment-status --bulk-deployment-id 1234567
   ```

    このコマンドを実行した結果、成功ステータスコード `200` が情報の JSON ペイロードと共に返されます。

   ```
    {
     "BulkDeploymentStatus": Running,
     "Statistics": {
        "RecordsProcessed": integer,
        "InvalidInputRecords": integer,
        "RetryAttempts": integer
     },
     "CreatedAt": "string",
     "ErrorMessage": "string",
     "ErrorDetails": [
       {
         "DetailedErrorCode": "string",
         "DetailedErrorMessage": "string"
       }
     ]
   }
   ```

    `BulkDeploymentStatus` には、一括実行の現在のステータスが含まれています。実行は 以下の 6 つの異なるステータスのいずれかになります。
   + `Initializing`。一括デプロイリクエストが受け取られ、デプロイの実行を開始する準備中です。
   + `Running`。一括デプロイの実行が開始されました。
   + `Completed`。一括デプロイの実行により、すべてのレコードの処理が完了しました。
   + `Stopping`。一括デプロイの実行は停止コマンドを受け取り、間もなく終了します。前のデプロイが `Stopping` 状態になっている間は、新しい一括デプロイを開始できません。
   + `Stopped`。一括デプロイの実行は手動で停止されました。
   + `Failed`。一括デプロイの実行中にエラーが発生し、デプロイの実行は終了しました。エラーの詳細は、`ErrorDetails` フィールドで確認できます。

    JSON ペイロードには、一括デプロイの進行状況に関する統計情報も含まれています。この情報を使用して、処理されたグループの数と失敗したグループの数を判断できます。統計情報は以下のとおりです。
   +  `RecordsProcessed`: 試行されたグループレコードの数。
   +  `InvalidInputRecords`: 再試行不可のエラーを返したレコードの合計数。例えば、入力ファイルのグループレコードで無効な形式を使用している場合や、存在しないグループバージョンを指定している場合、デプロイの実行によりグループまたはグループバージョンをデプロイするアクセス許可が付与されない場合に、このエラーが発生します。
   +  `RetryAttempts`: 再試行可能なエラーを返したデプロイ試行の回数。例えば、グループをデプロイしようとしてスロットリングエラーが返された場合は、再試行がトリガーされます。グループデプロイは 5 回まで再試行できます。

    一括デプロイの実行に失敗した場合、このペイロードには、トラブルシューティングに使用できる `ErrorDetails` セクションも含まれています。このセクションに、実行失敗の原因に関する情報が含まれています。

    一括デプロイの状態を定期的にチェックして、デプロイが想定どおりに進行していることを確認できます。デプロイが完了したら、`RecordsProcessed` は、一括デプロイの入力ファイルで指定したデプロイグループの数と一致しています。これは、各レコードが処理されたことを示します。

## ステップ 5: デプロイをテストする
<a name="bulk-deploy-cli-test"></a>

 **ListBulkDeployments** コマンドを使用して、一括デプロイの ID を見つけます。

```
aws greengrass list-bulk-deployments
```

 このコマンドは、最も新しいものから古いものまですべての一括デプロイのリストを `BulkDeploymentId` も含めて返します。

```
{
  "BulkDeployments": [
    {
      "BulkDeploymentId": 1234567,
      "BulkDeploymentArn": "string",
      "CreatedAt": "string"
    }
  ],
  "NextToken": "string"
}
```

 次に、**ListBulkDeploymentDetailedReports** コマンドを呼び出して、各デプロイに関する詳細情報を収集します。

```
aws greengrass list-bulk-deployment-detailed-reports --bulk-deployment-id 1234567 
```

 このコマンドを実行した結果、成功ステータスコード `200` が情報の JSON ペイロードと共に返されます。

```
{ 
  "BulkDeploymentResults": [
    {
      "DeploymentId": "string",
      "GroupVersionedArn": "string",
      "CreatedAt": "string",
      "DeploymentStatus": "string",
      "ErrorMessage": "string",
      "ErrorDetails": [
        {
          "DetailedErrorCode": "string",
          "DetailedErrorMessage": "string"
        }
      ]
    }
  ],
  "NextToken": "string"
}
```

 このペイロードには通常、最も新しいものから古いものまで各デプロイとそのデプロイステータスのページ分割されたリストが含まれています。また、一括デプロイの実行に失敗した場合の詳細情報も含まれています。先ほど説明したように、リストに示されたデプロイの合計数は、一括デプロイの入力ファイルで指定したグループの数と一致しています。

 返される情報は、デプロイが終了状態 (成功または失敗) になるまで変わります。それまでは、このコマンドを定期的に呼び出すことができます。

## 一括デプロイのトラブルシューティング
<a name="bulk-deploy-cli-troubleshooting"></a>

 一括デプロイに成功しなかった場合は、以下のトラブルシューティング手順を試すことができます。ターミナルで以下のコマンドを実行します。

### 入力ファイルのエラーのトラブルシューティングを行う
<a name="bulk-deploy-cli-troubleshooting-input-file-errors"></a>

 一括デプロイ入力ファイルに構文エラーがある場合、一括デプロイは失敗する可能性があります。これにより、一括デプロイステータス `Failed` が、最初の検証エラーの行番号を示すエラーメッセージと共に返されます。以下の 4 つのエラーが考えられます。
+ 

  ```
  InvalidInputFile: Missing GroupId at line number: line number
  ```

   このエラーは、指定された入力ファイル行で、指定されたパラメータを登録できないことを示します。パラメータ `GroupId` と `GroupVersionId` が指定されていない可能性があります。
+ 

  ```
  InvalidInputFile: Invalid deployment type at line number : line number. Only valid type is 'NewDeployment'.
  ```

   このエラーは、指定された入力ファイル行で無効なデプロイタイプが指定されていることを示します。現時点でサポートされているデプロイタイプは `NewDeployment` のみです。
+ 

  ```
  Line %s is too long in S3 File. Valid line is less than 256 chars.
  ```

   このエラーは、指定された入力ファイルの行が長すぎるため、短くする必要があることを示します。
+ 

  ```
  Failed to parse input file at line number: line number
  ```

   このエラーは、指定された入力ファイル行が有効な JSON とみなされないことを示します。

### 同時一括デプロイがないことを確認する
<a name="bulk-deploy-cli-troubleshooting-concurrent-bulk-deployments"></a>

 新しい一括デプロイは、別の一括デプロイが実行中など終了以外の状態では開始できません。この場合、`Concurrent Deployment Error` になります。**ListBulkDeployments** コマンドを使用して、一括デプロイが現在実行中ではないことを確認できます。このコマンドは、最も新しいものから古いものまで一括デプロイを一覧表示します。

```
{
  "BulkDeployments": [
    {
      "BulkDeploymentId": BulkDeploymentId,
      "BulkDeploymentArn": "string",
      "CreatedAt": "string"
    }
  ],
  "NextToken": "string"
}
```

 **GetBulkDeploymentStatus** コマンドを実行するには、最初に一覧表示された一括デプロイの `BulkDeploymentId` を使用します。最も新しい一括デプロイが実行状態 (`Initializing` または `Running`) である場合は、以下のコマンドを使用して一括デプロイを停止します。

```
aws greengrass stop-bulk-deployment --bulk-deployment-id BulkDeploymentId
```

 このアクションを実行した結果、デプロイのステータスは `Stopped` になるまで `Stopping` になります。デプロイのステータスが `Stopped` になったら、新しい一括デプロイを開始できます。

### ErrorDetails を確認する
<a name="bulk-deploy-cli-troubleshooting-check-error-details"></a>

 `GetBulkDeploymentStatus` コマンドを実行すると、一括デプロイの実行の失敗に関する情報を含む JSON ペイロードが返されます。

```
  "Message": "string",
  "ErrorDetails": [
    {
      "DetailedErrorCode": "string",
      "DetailedErrorMessage": "string"
    }
  ]
```

 エラーで終了すると、この呼び出しによって返された `ErrorDetails` JSON ペイロードには、一括デプロイの実行の失敗に関する詳細が含まれています。例えば、`400` 番台のエラーステータスコードは、入力パラメータまたは呼び出し元依存関係の入力エラーを示します。

### AWS IoT Greengrass コアログを確認する
<a name="bulk-deploy-cli-troubleshooting-check-core-log"></a>

 AWS IoT Greengrass コアログを表示することで、問題をトラブルシューティングできます。`runtime.log` を表示するには、以下のコマンドを使用します。

```
cd /greengrass/ggc/var/log
sudo cat system/runtime.log | more
```

 AWS IoT Greengrass ログ記録の詳細については、「」を参照してください[AWS IoT Greengrass ログによるモニタリング](greengrass-logs-overview.md)。

## 関連情報
<a name="bulk-deploy-cli-see-also"></a>

詳細については、以下のリソースを参照してください。
+ [AWS IoT Greengrass コアに AWS IoT Greengrass グループをデプロイする](deployments.md)
+ 「AWS CLI コマンドリファレンス」の [Amazon S3 API コマンド](https://docs.aws.amazon.com/cli/latest/reference/s3api)
+ <a name="see-also-gg-cli"></a>[AWS IoT Greengrass コマンド](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html)*AWS CLI リファレンスの コマンド*