

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

# ローカルデプロイおよびコンポーネントの管理
<a name="ipc-local-deployments-components"></a>

**注記**  
この機能は、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の v2.6.0 以降で利用できます。

Greengrass CLI IPC サービスを使用して、コアデバイスのローカルデプロイおよび Greengrass コンポーネントを管理します。

これらの IPC オペレーションを使用するには、カスタムコンポーネントの依存関係として、バージョン 2.6.0 以降の [Greengrass CLI コンポーネント](greengrass-cli-component.md)を含めます。その後、カスタムコンポーネントの IPC オペレーションを使用して、次の操作を行うことができます。
+ ローカルデプロイを作成し、コアデバイスの Greengrass コンポーネントを変更および設定します。
+ コアデバイスの Greengrass コンポーネントを再起動して停止します。
+ [ローカルデバッグコンソール](local-debug-console-component.md)へのサインインに使用できるパスワードを生成します。

**Topics**
+ [最小 SDK バージョン](#ipc-local-deployments-components-sdk-versions)
+ [Authorization](#ipc-local-deployments-components-authorization)
+ [CreateLocalDeployment](#ipc-operation-createlocaldeployment)
+ [ListLocalDeployments](#ipc-operation-listlocaldeployments)
+ [GetLocalDeploymentStatus](#ipc-operation-getlocaldeploymentstatus)
+ [ListComponents](#ipc-operation-listcomponents)
+ [GetComponentDetails](#ipc-operation-getcomponentdetails)
+ [RestartComponent](#ipc-operation-restartcomponent)
+ [StopComponent](#ipc-operation-stopcomponent)
+ [CreateDebugPassword](#ipc-operation-createdebugpassword)

## 最小 SDK バージョン
<a name="ipc-local-deployments-components-sdk-versions"></a>

次の表に、Greengrass CLI IPC サービスとやり取りするために使用 AWS IoT Device SDK する必要がある の最小バージョンを示します。


| SDK | 最小バージョン | 
| --- | --- | 
|  [AWS IoT Device SDK for Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.2.10  | 
|  [AWS IoT Device SDK Python v2 用](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.5.3  | 
|  [AWS IoT Device SDK C\$1\$1 v2 用](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.17.0  | 
|  [AWS IoT Device SDK for JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

## Authorization
<a name="ipc-local-deployments-components-authorization"></a>

Greengrass CLI IPC サービスをカスタムコンポーネントで使用するには、コンポーネントがローカルデプロイとコンポーネントを管理できるように承認ポリシーを定義する必要があります。承認ポリシーの定義については、「[コンポーネントに IPC オペレーションの実行を許可する](interprocess-communication.md#ipc-authorization-policies)」を参照してください。

Greengrass CLI の承認ポリシーには、次のプロパティがあります。

**IPC サービス識別子:** `aws.greengrass.Cli`


| 運用 | 説明 | リソース | 
| --- | --- | --- | 
|  `aws.greengrass#CreateLocalDeployment`  |  コンポーネントがコアデバイスにローカルデプロイを作成できるようにします。  |  `*`  | 
|  `aws.greengrass#ListLocalDeployments`  |  コンポーネントがコアデバイスのローカルデプロイを一覧表示できるようにします。  |  `*`  | 
|  `aws.greengrass#GetLocalDeploymentStatus`  |  コンポーネントがコアデバイスのローカルデプロイのステータスを取得できるようにします。  |  すべてのローカルデプロイへのアクセスを許可するローカルデプロイ ID または `*`。  | 
|  `aws.greengrass#ListComponents`  |  コンポーネントがコアデバイスのコンポーネントを一覧表示できるようにします。  |  `*`  | 
|  `aws.greengrass#GetComponentDetails`  |  コンポーネントがコアデバイスのコンポーネントの詳細を取得できるようにします。  |  すべてのコンポーネントへのアクセスを許可するコンポーネント名 (`com.example.HelloWorld` など) または `*`。  | 
|  `aws.greengrass#RestartComponent`  |  コンポーネントがコアデバイスのコンポーネントを再起動できるようにします。  |  すべてのコンポーネントへのアクセスを許可するコンポーネント名 (`com.example.HelloWorld` など) または `*`。  | 
|  `aws.greengrass#StopComponent`  |  コンポーネントがコアデバイスのコンポーネントを停止できるようにします。  |  すべてのコンポーネントへのアクセスを許可するコンポーネント名 (`com.example.HelloWorld` など) または `*`。  | 
|  `aws.greengrass#CreateDebugPassword`  |  コンポーネントが[ローカルデバッグコンソールコンポーネント](local-debug-console-component.md)へのサインインに使用するパスワードを生成できるようにします。  |  `*`  | 

**Example 承認ポリシーの例**  
次の認可ポリシーの例では、コンポーネントがローカルデプロイを作成し、すべてのローカルデプロイとコンポーネントを表示し、`com.example.HelloWorld`という名前のコンポーネントを再起動および停止できるようにします。  

```
{
  "accessControl": {
    "aws.greengrass.Cli": {
      "com.example.MyLocalManagerComponent:cli:1": {
        "policyDescription": "Allows access to create local deployments and view deployments and components.",
        "operations": [
          "aws.greengrass#CreateLocalDeployment",
          "aws.greengrass#ListLocalDeployments",
          "aws.greengrass#GetLocalDeploymentStatus",
          "aws.greengrass#ListComponents",
          "aws.greengrass#GetComponentDetails"
        ],
        "resources": [
          "*"
        ]
      }
    },
    "aws.greengrass.Cli": {
      "com.example.MyLocalManagerComponent:cli:2": {
        "policyDescription": "Allows access to restart and stop the Hello World component.",
        "operations": [
          "aws.greengrass#RestartComponent",
          "aws.greengrass#StopComponent"
        ],
        "resources": [
          "com.example.HelloWorld"
        ]
      }
    }
  }
}
```

## CreateLocalDeployment
<a name="ipc-operation-createlocaldeployment"></a>

指定されたコンポーネントレシピ、アーティファクト、ランタイム引数を使用して、ローカルデプロイを作成または更新します。

このオペレーションは、Greengrass CLI の[デプロイの create コマンド](gg-cli-deployment.md#deployment-create)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-createlocaldeployment-request"></a>

このオペレーションのリクエストには以下のパラメータがあります。

`recipeDirectoryPath` (Python: `recipe_directory_path`)  
(オプション) コンポーネントレシピファイルを含むフォルダへの絶対パス。

`artifactDirectoryPath` (Python: `artifact_directory_path`)  
(オプション) デプロイに含めるアーティファクトファイルを含むフォルダへの絶対パス。アーティファクトフォルダには、次のフォルダ構造が含まれている必要があります。  

```
/path/to/artifact/folder/component-name/component-version/artifacts
```

`rootComponentVersionsToAdd` (Python: `root_component_versions_to_add`)  
(オプション) コアデバイスにインストールするコンポーネントのバージョン。このオブジェクト `ComponentToVersionMap` は、次のキーと値のペアを含むマップです。    
`key`  
コンポーネントの名前。  
`value`  
コンポーネントのバージョン。

`rootComponentsToRemove` (Python: `root_components_to_remove`)  
(オプション) コアデバイスからアンインストールするコンポーネント。各エントリがコンポーネントの名前となるリストを指定します。

`componentToConfiguration` (Python: `component_to_configuration`)  
(オプション) デプロイ内の各コンポーネントの設定更新。このオブジェクト `ComponentToConfiguration` は、次のキーと値のペアを含むマップです。    
`key`  
コンポーネントの名前。  
`value`  
コンポーネントの設定更新の JSON オブジェクト。JSON オブジェクトは次の形式である必要があります。  

```
{ 
  "MERGE": {
    "config-key": "config-value"
  },
  "RESET": [
    "path/to/reset/"
  ]
}
```
設定の更新の詳細については、「[コンポーネント設定の更新](update-component-configurations.md)」を参照してください。

`componentToRunWithInfo` (Python: `component_to_run_with_info`)  
(オプション) デプロイ内の各コンポーネントのランタイム設定。この設定には、各コンポーネントのプロセスを所有するシステムユーザーと、各コンポーネントに適用するシステム制限が含まれます。このオブジェクト `ComponentToRunWithInfo` は、次のキーと値のペアを含むマップです。    
`key`  
コンポーネントの名前。  
`value`  
コンポーネントのランタイム設定。ランタイム設定パラメータを省略すると、 AWS IoT Greengrass Core ソフトウェアは [Greengrass nucleus ](greengrass-nucleus-component.md)で設定したデフォルト値を使用します。このオブジェクト (`RunWithInfo`) には、次の情報が含まれます。    
`posixUser` (Python: `posix_user`)  
(オプション) <a name="deployment-posix-user-definition"></a>Linux コアデバイスでこのコンポーネントを実行する際に使用する POSIX システムユーザーおよびオプションのグループ。ユーザーまたはグループを指定する場合は、各 Linux コアデバイス上に存在している必要があります。ユーザーとグループを `user:group` の形式に従ってコロン (`:`) で区切って指定します。グループはオプションです。グループを指定しない場合、 AWS IoT Greengrass Core ソフトウェアはユーザーのプライマリグループを使用します。詳細については、「[コンポーネントを実行するユーザーを設定する](configure-greengrass-core-v2.md#configure-component-user)」を参照してください。  
`windowsUser` (Python: `windows_user`)  
(オプション) <a name="deployment-windows-user-definition"></a>Windows コアデバイスでこのコンポーネントを実行する際に使用する Windows ユーザー。ユーザーは各 Windows コアデバイスに存在し、その名前とパスワードが LocalSystem アカウントの認証情報マネージャーインスタンスに格納されている必要があります。詳細については、「[コンポーネントを実行するユーザーを設定する](configure-greengrass-core-v2.md#configure-component-user)」を参照してください。  
`systemResourceLimits` (Python: `system_resource_limits`)  
(オプション) <a name="deployment-system-resource-limits-definition"></a>このコンポーネントのプロセスに適用されるシステムリソースの制限。システムリソースの制限を、ジェネリックおよびコンテナ化されていない Lambda コンポーネントプロセスに適用することができます。詳細については、「[コンポーネントのシステムリソース制限を設定する](configure-greengrass-core-v2.md#configure-component-system-resource-limits)」を参照してください。  
AWS IoT Greengrass は現在、Windows コアデバイスでこの機能をサポートしていません。  
このオブジェクト (`SystemResourceLimits`) には、次の情報が含まれます。    
`cpus`  
(オプション) <a name="system-resource-limits-cpu-definition-this"></a>このコンポーネントのプロセスがコアデバイスで使用できる CPU 時間の最大量。コアデバイスの合計 CPU 時間は、デバイスの CPU コア数と同じです。例えば、4 つの CPU コアを持つコアデバイスの場合は、この値を `2` に設定することで、このコンポーネントのプロセスを各 CPU コアの 50% の使用率に制限することができます。CPU コアが 1 つのデバイスの場合は、この値を `0.25` に設定することで、このコンポーネントのプロセスを CPU の 25% の使用率に制限することができます。この値を CPU コア数より大きい数に設定した場合、 AWS IoT Greengrass Core ソフトウェアはコンポーネントの CPU 使用率を制限しません。  
`memory`  
(オプション) <a name="system-resource-limits-memory-definition-this"></a>このコンポーネントのプロセスがコアデバイスで使用できる RAM の最大量 (キロバイト単位)。

`groupName` (Python: `group_name`)  
(オプション) このデプロイでターゲットにするモノのグループの名前。

### 応答
<a name="ipc-operation-createlocaldeployment-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`deploymentId` (Python: `deployment_id`)  
リクエストによって作成されたローカルデプロイの ID。

## ListLocalDeployments
<a name="ipc-operation-listlocaldeployments"></a>

過去 10 回分のローカルデプロイのステータスを取得します。

このオペレーションは、Greengrass CLI の[デプロイの list コマンド](gg-cli-deployment.md#deployment-list)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-listlocaldeployments-request"></a>

このオペレーションのリクエストはパラメータを持ちません。

### 応答
<a name="ipc-operation-listlocaldeployments-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`localDeployments` (Python: `local_deployments`)  
ローカルデプロイのリスト。このリストの各オブジェクトは、次の情報が含まれる `LocalDeployment` オブジェクトです。  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
ローカルデプロイの ID。  
`status`  
ローカルデプロイのステータス。この列挙型 (`DeploymentStatus`) には以下の値があります。  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

## GetLocalDeploymentStatus
<a name="ipc-operation-getlocaldeploymentstatus"></a>

ローカルデプロイのステータスを取得します。

このオペレーションは、Greengrass CLI の[デプロイの status コマンド](gg-cli-deployment.md#deployment-status)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-getlocaldeploymentstatus-request"></a>

このオペレーションのリクエストには以下のパラメータがあります。

`deploymentId` (Python: `deployment_id`)  
取得するローカルデプロイの ID。

### 応答
<a name="ipc-operation-getlocaldeploymentstatus-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`deployment`  
ローカルデプロイ。このオブジェクト (`LocalDeployment`) には、次の情報が含まれます。  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
ローカルデプロイの ID。  
`status`  
ローカルデプロイのステータス。この列挙型 (`DeploymentStatus`) には以下の値があります。  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

## ListComponents
<a name="ipc-operation-listcomponents"></a>

コアデバイスの各ルートコンポーネントの名前、バージョン、ステータス、および設定を取得します。*ルートコンポーネント*は、デプロイ時に指定するコンポーネントです。このレスポンスには、他のコンポーネントとの依存関係の中でインストールされるコンポーネントは含まれません。

このオペレーションは、Greengrass CLI の[コンポーネントの list コマンド](gg-cli-component.md#component-list)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-listcomponents-request"></a>

このオペレーションのリクエストはパラメータを持ちません。

### 応答
<a name="ipc-operation-listcomponents-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`components`  
コアデバイスのルートコンポーネントのリスト。このリストの各オブジェクトは、次の情報が含まれる `ComponentDetails` オブジェクトです。  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
コンポーネントの名前。  
`version`  
コンポーネントのバージョン。  
`state`  
コンポーネントの状態。これは、次のいずれかの状態になります。  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
JSON オブジェクトとしてのコンポーネントの設定。

## GetComponentDetails
<a name="ipc-operation-getcomponentdetails"></a>

コアデバイスのコンポーネントのバージョン、ステータス、および設定を取得します。

このオペレーションは、Greengrass CLI の[コンポーネントの details コマンド](gg-cli-component.md#component-details)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-getcomponentdetails-request"></a>

このオペレーションのリクエストには以下のパラメータがあります。

`componentName` (Python: `component_name`)  
取得するコンポーネントの名前。

### 応答
<a name="ipc-operation-getcomponentdetails-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`componentDetails` (Python: `component_details`)  
コンポーネントの詳細。このオブジェクト (`ComponentDetails`) には、次の情報が含まれます。  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
コンポーネントの名前。  
`version`  
コンポーネントのバージョン。  
`state`  
コンポーネントの状態。これは、次のいずれかの状態になります。  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
JSON オブジェクトとしてのコンポーネントの設定。

## RestartComponent
<a name="ipc-operation-restartcomponent"></a>

コアデバイスのコンポーネントを再起動します。

**注記**  
どのコンポーネントでも再起動できますが、[ジェネリックコンポーネント](develop-greengrass-components.md#component-types)のみを再起動することをお勧めします。

このオペレーションは、Greengrass CLI の[コンポーネントの restart コマンド](gg-cli-component.md#component-restart)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-restartcomponent-request"></a>

このオペレーションのリクエストには以下のパラメータがあります。

`componentName` (Python: `component_name`)  
コンポーネントの名前。

### 応答
<a name="ipc-operation-restartcomponent-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`restartStatus` (Python: `restart_status`)  
再起動リクエストのステータス。リクエストのステータスは次のいずれかになります。  
+ `SUCCEEDED`
+ `FAILED`

`message`  
リクエストが失敗した際の、コンポーネントが再起動に失敗した理由に関するメッセージ。

### 例
<a name="ipc-operation-restartcomponent-examples"></a>

以下の例では、カスタムコンポーネントコードでこのオペレーションを呼び出す方法を示します。

------
#### [ Rust ]

**Example 例: コンポーネントを再起動する**  

```
use gg_sdk::Sdk;

fn main() {
    let sdk = Sdk::init();
    sdk.connect().expect("Failed to establish IPC connection");

    let component_name = "com.example.HelloWorld";

    sdk.restart_component(component_name)
        .expect("Failed to restart component");

    println!("Successfully requested restart for component: {component_name}");
}
```

------
#### [ C ]

**Example 例: コンポーネントを再起動する**  

```
#include <gg/error.h>
#include <gg/ipc/client.h>
#include <gg/sdk.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    gg_sdk_init();

    GgError err = ggipc_connect();
    if (err != GG_ERR_OK) {
        fprintf(stderr, "Failed to establish IPC connection.\n");
        exit(-1);
    }

    GgBuffer component_name = GG_STR("com.example.HelloWorld");

    err = ggipc_restart_component(component_name);
    if (err != GG_ERR_OK) {
        fprintf(
            stderr,
            "Failed to restart component: %.*s\n",
            (int) component_name.len,
            component_name.data
        );
        exit(-1);
    }

    printf(
        "Successfully requested restart for component: %.*s\n",
        (int) component_name.len,
        component_name.data
    );
}
```

------
#### [ C\$1\$1 (Component SDK) ]

**Example 例: コンポーネントを再起動する**  

```
#include <gg/ipc/client.hpp>
#include <iostream>

int main() {
    auto &client = gg::ipc::Client::get();

    auto error = client.connect();
    if (error) {
        std::cerr << "Failed to establish IPC connection.\n";
        exit(-1);
    }

    std::string_view component_name = "com.example.HelloWorld";

    error = client.restart_component(component_name);
    if (error) {
        std::cerr << "Failed to restart component: " << component_name << "\n";
        exit(-1);
    }

    std::cout << "Successfully requested restart for component: "
              << component_name << "\n";
}
```

------

## StopComponent
<a name="ipc-operation-stopcomponent"></a>

コアデバイスのコンポーネントのプロセスを停止します。

**注記**  
どのコンポーネントも停止できますが、[ジェネリックコンポーネント](develop-greengrass-components.md#component-types)のみを停止することをお勧めします。

このオペレーションは、Greengrass CLI の[コンポーネントの stop コマンド](gg-cli-component.md#component-stop)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-stopcomponent-request"></a>

このオペレーションのリクエストには以下のパラメータがあります。

`componentName` (Python: `component_name`)  
コンポーネントの名前。

### 応答
<a name="ipc-operation-stopcomponent-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`stopStatus` (Python: `stop_status`)  
停止リクエストのステータス。リクエストのステータスは次のいずれかになります。  
+ `SUCCEEDED`
+ `FAILED`

`message`  
リクエストが失敗した際の、コンポーネントが停止に失敗した理由に関するメッセージ。

## CreateDebugPassword
<a name="ipc-operation-createdebugpassword"></a>

[ローカルデバッグコンソールコンポーネント](local-debug-console-component.md)へのサインインに使用できる、ランダムなパスワードを生成します。パスワードは、生成されてから 8 時間後に期限切れになります。

このオペレーションは、Greengrass CLI の [get-debug-password コマンド](gg-cli-get-debug-password.md)と同じ機能を提供します。

### リクエスト
<a name="ipc-operation-createdebugpassword-request"></a>

このオペレーションのリクエストはパラメータを持ちません。

### 応答
<a name="ipc-operation-createdebugpassword-response"></a>

このオペレーションのレスポンスには以下の情報が含まれます。

`username`  
サインインに使用するユーザー名。

`password`  
サインインに使用するパスワード。

`passwordExpiration` (Python: `password_expiration`)  
パスワードの有効期限が切れる時刻。

`certificateSHA256Hash` (Python: `certificate_sha256_hash`)  
HTTPS が有効な場合にローカルデバッグコンソールが使用する自己署名証明書の SHA-256 フィンガープリント。ローカルデバッグコンソールを開く際に、このフィンガープリントを使用して、証明書が正当であり接続が安全であることを確認します。

`certificateSHA1Hash` (Python: `certificate_sha1_hash`)  
HTTPS が有効な場合にローカルデバッグコンソールが使用する自己署名証明書の SHA-1 フィンガープリント。ローカルデバッグコンソールを開く際に、このフィンガープリントを使用して、証明書が正当であり接続が安全であることを確認します。