

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengelola penerapan dan komponen lokal
<a name="ipc-local-deployments-components"></a>

**catatan**  
[Fitur ini tersedia untuk v2.6.0 dan yang lebih baru dari komponen inti Greengrass.](greengrass-nucleus-component.md)

Gunakan layanan Greengrass CLI IPC untuk mengelola penerapan lokal dan komponen Greengrass pada perangkat inti.

Untuk menggunakan operasi IPC ini, sertakan versi 2.6.0 atau yang lebih baru dari komponen [CLI Greengrass sebagai ketergantungan dalam komponen kustom](greengrass-cli-component.md) Anda. Anda kemudian dapat menggunakan operasi IPC di komponen kustom Anda untuk melakukan hal berikut:
+ Buat penerapan lokal untuk memodifikasi dan mengonfigurasi komponen Greengrass pada perangkat inti.
+ Mulai ulang dan hentikan komponen Greengrass pada perangkat inti.
+ Buat kata sandi yang dapat Anda gunakan untuk masuk ke [konsol debug lokal](local-debug-console-component.md).

**Topics**
+ [SDK (Versi Minimum)](#ipc-local-deployments-components-sdk-versions)
+ [Otorisasi](#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 (Versi Minimum)
<a name="ipc-local-deployments-components-sdk-versions"></a>

Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk berinteraksi dengan layanan Greengrass CLI IPC.


| SDK | Versi minimum | 
| --- | --- | 
|  [AWS IoT Device SDK untuk Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.2.10  | 
|  [AWS IoT Device SDK untuk Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.5.3  | 
|  [AWS IoT Device SDK untuk C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.17.0  | 
|  [AWS IoT Device SDK untuk JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

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

Untuk menggunakan layanan Greengrass CLI IPC dalam komponen kustom, Anda harus menentukan kebijakan otorisasi yang memungkinkan komponen Anda mengelola penerapan dan komponen lokal. Untuk informasi tentang cara menentukan kebijakan otorisasi, lihat [Otorisasi komponen untuk melakukan operasi IPC](interprocess-communication.md#ipc-authorization-policies).

Kebijakan otorisasi untuk CLI Greengrass memiliki properti berikut.

**Pengenal layanan IPC:** `aws.greengrass.Cli`


| Operasi | Deskripsi | Sumber daya | 
| --- | --- | --- | 
|  `aws.greengrass#CreateLocalDeployment`  |  Memungkinkan komponen untuk membuat penyebaran lokal pada perangkat inti.  |  `*`  | 
|  `aws.greengrass#ListLocalDeployments`  |  Memungkinkan komponen untuk mencantumkan penerapan lokal pada perangkat inti.  |  `*`  | 
|  `aws.greengrass#GetLocalDeploymentStatus`  |  Memungkinkan komponen untuk mendapatkan status penyebaran lokal pada perangkat inti.  |  ID penyebaran lokal, atau `*` untuk mengizinkan akses ke semua penerapan lokal.  | 
|  `aws.greengrass#ListComponents`  |  Memungkinkan komponen untuk daftar komponen pada perangkat inti.  |  `*`  | 
|  `aws.greengrass#GetComponentDetails`  |  Memungkinkan komponen untuk mendapatkan detail tentang komponen pada perangkat inti.  |  Nama komponen, seperti`com.example.HelloWorld`, atau `*` untuk memungkinkan akses ke semua komponen.  | 
|  `aws.greengrass#RestartComponent`  |  Memungkinkan komponen untuk me-restart komponen pada perangkat inti.  |  Nama komponen, seperti`com.example.HelloWorld`, atau `*` untuk memungkinkan akses ke semua komponen.  | 
|  `aws.greengrass#StopComponent`  |  Memungkinkan komponen untuk menghentikan komponen pada perangkat inti.  |  Nama komponen, seperti`com.example.HelloWorld`, atau `*` untuk memungkinkan akses ke semua komponen.  | 
|  `aws.greengrass#CreateDebugPassword`  |  Mengizinkan komponen menghasilkan kata sandi yang akan digunakan untuk masuk ke [komponen konsol debug lokal](local-debug-console-component.md).  |  `*`  | 

**Example Contoh kebijakan otorisasi**  
Contoh kebijakan otorisasi berikut memungkinkan komponen untuk membuat penerapan lokal, melihat semua penerapan dan komponen lokal, dan memulai ulang dan menghentikan komponen bernama. `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>

Buat atau perbarui deployment lokal menggunakan resep komponen tertentu, artefak, dan argumen waktu aktif.

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah deployment create](gg-cli-deployment.md#deployment-create) di Greengrass CLI.

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

Permintaan operasi ini memiliki parameter berikut:

`recipeDirectoryPath`(Python:) `recipe_directory_path`  
(Opsional) Jalur absolut ke folder yang berisi file resep komponen.

`artifactDirectoryPath`(Python:) `artifact_directory_path`  
(Opsional) Jalur absolut ke folder yang berisi file artefak untuk disertakan dalam penerapan. Folder artefak harus berisi struktur folder berikut:  

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

`rootComponentVersionsToAdd`(Python:) `root_component_versions_to_add`  
(Opsional) Versi komponen yang akan diinstal pada perangkat inti. Objek ini,`ComponentToVersionMap`, adalah peta yang berisi pasangan kunci-nilai berikut:    
`key`  
Nama komponen.  
`value`  
Versi komponen.

`rootComponentsToRemove`(Python:) `root_components_to_remove`  
(Opsional) Komponen yang akan dihapus dari perangkat inti. Tentukan daftar di mana setiap entri adalah nama komponen.

`componentToConfiguration`(Python:) `component_to_configuration`  
(Opsional) Pembaruan konfigurasi untuk setiap komponen dalam penerapan. Objek ini,`ComponentToConfiguration`, adalah peta yang berisi pasangan kunci-nilai berikut:    
`key`  
Nama komponen.  
`value`  
Konfigurasi memperbarui objek JSON untuk komponen. Objek JSON harus memiliki format berikut.  

```
{ 
  "MERGE": {
    "config-key": "config-value"
  },
  "RESET": [
    "path/to/reset/"
  ]
}
```
Untuk informasi selengkapnya tentang pembaruan konfigurasi, lihat [Perbarui konfigurasi komponen](update-component-configurations.md).

`componentToRunWithInfo`(Python:) `component_to_run_with_info`  
(Opsional) Konfigurasi runtime untuk setiap komponen dalam penerapan. Konfigurasi ini mencakup pengguna sistem yang memiliki proses masing-masing komponen dan batas sistem untuk diterapkan pada setiap komponen. Objek ini,`ComponentToRunWithInfo`, adalah peta yang berisi pasangan kunci-nilai berikut:    
`key`  
Nama komponen.  
`value`  
Konfigurasi runtime untuk komponen. [Jika Anda menghilangkan parameter konfigurasi runtime, perangkat lunak AWS IoT Greengrass Core menggunakan nilai default yang Anda konfigurasikan pada inti Greengrass.](greengrass-nucleus-component.md) Objek ini, `RunWithInfo`, berisi informasi berikut:    
`posixUser`(Python:) `posix_user`  
(Opsional) <a name="deployment-posix-user-definition"></a>Pengguna sistem POSIX dan, secara opsional, grup untuk digunakan untuk menjalankan komponen ini pada perangkat inti Linux. Pengguna, dan grup jika ditentukan, harus ada di setiap perangkat inti Linux. Tentukan pengguna dan grup yang dipisahkan dengan titik dua (`:`) dalam format berikut: `user:group`. Grup ini opsional. Jika Anda tidak menentukan grup, perangkat lunak AWS IoT Greengrass Core menggunakan grup utama untuk pengguna. Untuk informasi selengkapnya, lihat [Konfigurasikan pengguna yang menjalankan komponen](configure-greengrass-core-v2.md#configure-component-user).   
`windowsUser`(Python:) `windows_user`  
(Opsional) <a name="deployment-windows-user-definition"></a>Pengguna Windows yang digunakan untuk menjalankan komponen ini pada perangkat inti Windows. Pengguna harus ada di setiap perangkat inti Windows, dan nama serta kata sandinya harus disimpan dalam instance Credentials Manager LocalSystem akun. Untuk informasi selengkapnya, lihat [Konfigurasikan pengguna yang menjalankan komponen](configure-greengrass-core-v2.md#configure-component-user).   
`systemResourceLimits`(Python:) `system_resource_limits`  
(Opsional) <a name="deployment-system-resource-limits-definition"></a>Batas sumber daya sistem untuk diterapkan pada proses komponen ini. Anda dapat menerapkan batas sumber daya sistem ke komponen Lambda generik dan non-kontainer. Untuk informasi selengkapnya, lihat [Konfigurasikan batas sumber daya sistem untuk komponen](configure-greengrass-core-v2.md#configure-component-system-resource-limits).   
AWS IoT Greengrass saat ini tidak mendukung fitur ini di perangkat inti Windows.   
Objek ini, `SystemResourceLimits`, berisi informasi berikut:    
`cpus`  
(Opsional) <a name="system-resource-limits-cpu-definition-this"></a>Jumlah maksimum waktu CPU yang dapat digunakan proses komponen ini pada perangkat inti. Total waktu CPU perangkat inti setara dengan jumlah inti CPU perangkat. Misalnya, pada perangkat inti dengan 4 core CPU, Anda dapat mengatur nilai ini `2` untuk membatasi proses komponen ini hingga 50 persen penggunaan setiap inti CPU. Pada perangkat dengan 1 inti CPU, Anda dapat mengatur nilai ini `0.25` untuk membatasi proses komponen ini hingga 25 persen penggunaan CPU. Jika Anda menetapkan nilai ini ke angka yang lebih besar dari jumlah inti CPU, perangkat lunak AWS IoT Greengrass Core tidak membatasi penggunaan CPU komponen.   
`memory`  
(Opsional) <a name="system-resource-limits-memory-definition-this"></a>Jumlah maksimum RAM (dalam kilobyte) yang dapat digunakan proses komponen ini pada perangkat inti. 

`groupName`(Python:) `group_name`  
(Opsional) Nama grup hal yang akan ditargetkan dengan penerapan ini.

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

Tanggapan operasi ini memiliki informasi berikut:

`deploymentId`(Python:) `deployment_id`  
ID penyebaran lokal yang dibuat oleh permintaan.

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

Mendapat status 10 penerapan lokal terakhir.

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah daftar penerapan](gg-cli-deployment.md#deployment-list) di CLI Greengrass.

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

Operasi ini tidak memiliki parameter apa pun.

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

Tanggapan operasi ini memiliki informasi berikut:

`localDeployments`(Python:) `local_deployments`  
Daftar penyebaran lokal. Setiap objek dalam daftar ini adalah `LocalDeployment` objek, yang berisi informasi berikut:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId`(Python:) `deployment_id`  
ID penyebaran lokal.  
`status`  
Status penyebaran lokal. Enum ini, `DeploymentStatus`, memiliki nilai-nilai berikut:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Mendapat status penyebaran lokal.

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah status penerapan](gg-cli-deployment.md#deployment-status) di CLI Greengrass.

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

Permintaan operasi ini memiliki parameter berikut:

`deploymentId`(Python:) `deployment_id`  
ID penyebaran lokal untuk mendapatkan.

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

Tanggapan operasi ini memiliki informasi berikut:

`deployment`  
Penyebaran lokal. Objek ini, `LocalDeployment`, berisi informasi berikut:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId`(Python:) `deployment_id`  
ID penyebaran lokal.  
`status`  
Status penyebaran lokal. Enum ini, `DeploymentStatus`, memiliki nilai-nilai berikut:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Mendapat nama, versi, status, dan konfigurasi setiap komponen root pada perangkat inti. *Komponen root* adalah komponen yang Anda tentukan dalam penerapan. Respons ini tidak termasuk komponen yang diinstal sebagai dependensi komponen lain.

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah daftar komponen](gg-cli-component.md#component-list) di CLI Greengrass.

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

Operasi ini tidak memiliki parameter apa pun.

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

Tanggapan operasi ini memiliki informasi berikut:

`components`  
Daftar komponen root pada perangkat inti. Setiap objek dalam daftar ini adalah `ComponentDetails` objek, yang berisi informasi berikut:  <a name="ipc-component-details-object-shape"></a>  
`componentName`(Python:) `component_name`  
Nama komponen.  
`version`  
Versi komponen.  
`state`  
Keadaan komponen. Keadaan ini dapat menjadi salah satu dari yang berikut:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
Konfigurasi komponen sebagai objek JSON.

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

Mendapat versi, status, dan konfigurasi komponen pada perangkat inti.

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah detail komponen](gg-cli-component.md#component-details) di CLI Greengrass.

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

Permintaan operasi ini memiliki parameter berikut:

`componentName`(Python:) `component_name`  
Nama komponen yang akan didapat.

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

Tanggapan operasi ini memiliki informasi berikut:

`componentDetails`(Python:) `component_details`  
Detail komponen. Objek ini, `ComponentDetails`, berisi informasi berikut:  <a name="ipc-component-details-object-shape"></a>  
`componentName`(Python:) `component_name`  
Nama komponen.  
`version`  
Versi komponen.  
`state`  
Keadaan komponen. Keadaan ini dapat menjadi salah satu dari yang berikut:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
Konfigurasi komponen sebagai objek JSON.

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

Memulai ulang komponen pada perangkat inti.

**catatan**  
Meskipun Anda dapat me-restart komponen apa pun, kami sarankan Anda hanya me-restart [komponen generik](develop-greengrass-components.md#component-types).

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah restart komponen](gg-cli-component.md#component-restart) di CLI Greengrass.

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

Permintaan operasi ini memiliki parameter berikut:

`componentName`(Python:) `component_name`  
Nama komponen.

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

Tanggapan operasi ini memiliki informasi berikut:

`restartStatus`(Python:) `restart_status`  
Status permintaan restart. Status permintaan dapat berupa salah satu dari yang berikut:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Pesan tentang mengapa komponen gagal memulai ulang, jika permintaan gagal.

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

Contoh-contoh berikut ini menunjukkan cara memanggil operasi ini dalam kode komponen kustom.

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

**Example Contoh: Mulai ulang komponen**  

```
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 Contoh: Mulai ulang komponen**  

```
#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 Contoh: Mulai ulang komponen**  

```
#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>

Menghentikan proses komponen pada perangkat inti.

**catatan**  
Meskipun Anda dapat menghentikan komponen apa pun, kami sarankan Anda menghentikan hanya [komponen generik](develop-greengrass-components.md#component-types).

Operasi ini menyediakan fungsionalitas yang sama dengan [perintah stop komponen](gg-cli-component.md#component-stop) di CLI Greengrass.

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

Permintaan operasi ini memiliki parameter berikut:

`componentName`(Python:) `component_name`  
Nama komponen.

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

Tanggapan operasi ini memiliki informasi berikut:

`stopStatus`(Python:) `stop_status`  
Status permintaan berhenti. Status permintaan dapat berupa salah satu dari yang berikut:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Pesan tentang mengapa komponen gagal berhenti, jika permintaan gagal.

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

Menghasilkan kata sandi acak yang dapat Anda gunakan untuk masuk ke [komponen konsol debug lokal](local-debug-console-component.md). Kata sandi kedaluwarsa 8 jam setelah dibuat.

Operasi ini menyediakan fungsionalitas yang sama dengan [get-debug-password perintah](gg-cli-get-debug-password.md) di CLI Greengrass.

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

Operasi ini tidak memiliki parameter apa pun.

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

Tanggapan operasi ini memiliki informasi berikut:

`username`  
Nama pengguna yang digunakan untuk masuk.

`password`  
Kata sandi yang digunakan untuk masuk.

`passwordExpiration`(Python:) `password_expiration`  
Waktu ketika kata sandi kedaluwarsa.

`certificateSHA256Hash`(Python:) `certificate_sha256_hash`  
Sidik jari SHA-256 untuk sertifikat yang ditandatangani sendiri yang digunakan konsol debug lokal saat HTTPS diaktifkan. Saat Anda membuka konsol debug lokal, gunakan sidik jari ini untuk memverifikasi bahwa sertifikat tersebut sah dan koneksi aman.

`certificateSHA1Hash`(Python:) `certificate_sha1_hash`  
Sidik jari SHA-1 untuk sertifikat yang ditandatangani sendiri yang digunakan konsol debug lokal saat HTTPS diaktifkan. Saat Anda membuka konsol debug lokal, gunakan sidik jari ini untuk memverifikasi bahwa sertifikat tersebut sah dan koneksi aman.