

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

# Berinteraksilah dengan siklus hidup komponen
<a name="ipc-component-lifecycle"></a>

Gunakan layanan IPC siklus hidup komponen untuk:
+ Perbarui status komponen pada perangkat inti.
+ Berlangganan pembaruan status komponen.
+ Mencegah nukleus menghentikan komponen untuk menerapkan pembaruan selama penerapan.
+ Jeda dan lanjutkan proses komponen.

**Topics**
+ [SDK (Versi Minimum)](#ipc-component-lifecycle-sdk-versions)
+ [Otorisasi](#ipc-component-lifecycle-authorization)
+ [UpdateState](#ipc-operation-updatestate)
+ [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates)
+ [DeferComponentUpdate](#ipc-operation-defercomponentupdate)
+ [PauseComponent](#ipc-operation-pausecomponent)
+ [ResumeComponent](#ipc-operation-resumecomponent)

## SDK (Versi Minimum)
<a name="ipc-component-lifecycle-sdk-versions"></a>

Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk berinteraksi dengan siklus hidup komponen.


| 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-component-lifecycle-authorization"></a>

Untuk menjeda atau melanjutkan komponen lain dari komponen kustom, Anda harus menentukan kebijakan otorisasi yang memungkinkan komponen Anda mengelola komponen lain. Untuk informasi tentang cara menentukan kebijakan otorisasi, lihat [Otorisasi komponen untuk melakukan operasi IPC](interprocess-communication.md#ipc-authorization-policies).

Kebijakan otorisasi untuk manajemen siklus hidup komponen memiliki properti berikut.

**Pengenal layanan IPC:** `aws.greengrass.ipc.lifecycle`


| Operasi | Deskripsi | Sumber daya | 
| --- | --- | --- | 
|  `aws.greengrass#PauseComponent`  |  Memungkinkan komponen untuk menjeda komponen yang Anda tentukan.  |  Nama komponen, atau `*` untuk mengizinkan akses ke semua komponen.  | 
|  `aws.greengrass#ResumeComponent`  |  Memungkinkan komponen untuk melanjutkan komponen yang Anda tentukan.  |  Nama komponen, atau `*` untuk mengizinkan akses ke semua komponen.  | 
|  `*`  |  Memungkinkan komponen untuk menjeda dan melanjutkan komponen yang Anda tentukan.  |  Nama komponen, atau `*` untuk mengizinkan akses ke semua komponen.  | 

### Contoh kebijakan otorisasi
<a name="ipc-component-lifecycle-authorization-policy-examples"></a>

Anda dapat mereferensikan contoh kebijakan otorisasi berikut untuk membantu Anda mengonfigurasi kebijakan otorisasi untuk komponen Anda.

**Example Contoh kebijakan otorisasi**  
Contoh kebijakan otorisasi berikut memungkinkan komponen untuk menjeda dan melanjutkan semua komponen.  

```
{
  "accessControl": {
    "aws.greengrass.ipc.lifecycle": {
      "com.example.MyLocalLifecycleComponent:lifecycle:1": {
        "policyDescription": "Allows access to pause/resume all components.",
        "operations": [
          "aws.greengrass#PauseComponent",
          "aws.greengrass#ResumeComponent"
        ],
        "resources": [
          "*"
        ]
      }
    }
  }
}
```

## UpdateState
<a name="ipc-operation-updatestate"></a>

Memperbarui keadaan komponen pada perangkat inti.

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

Permintaan operasi ini memiliki parameter berikut:

`state`  
Keadaan yang akan diatur. Enum ini, `LifecycleState`, memiliki nilai-nilai berikut:  
+ `RUNNING`
+ `ERRORED`

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

Operasi ini tidak memberikan informasi apa pun dalam tanggapannya.

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

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

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

**Example Contoh: Perbarui status**  

```
use gg_sdk::{ComponentState, Sdk};

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

    // Update component state to RUNNING
    sdk.update_state(ComponentState::Running)
        .expect("Failed to update component state");

    println!("Successfully updated component state to RUNNING.");
}
```

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

**Example Contoh: Perbarui status**  

```
#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);
    }

    // Update component state to RUNNING
    err = ggipc_update_state(GG_COMPONENT_STATE_RUNNING);
    if (err != GG_ERR_OK) {
        fprintf(stderr, "Failed to update component state.\n");
        exit(-1);
    }

    printf("Successfully updated component state to RUNNING.\n");
}
```

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

**Example Contoh: Perbarui status**  

```
#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);
    }

    // Update component state to RUNNING
    error = client.update_component_state(GG_COMPONENT_STATE_RUNNING);
    if (error) {
        std::cerr << "Failed to update component state.\n";
        exit(-1);
    }

    std::cout << "Successfully updated component state to RUNNING.\n";
}
```

------

## SubscribeToComponentUpdates
<a name="ipc-operation-subscribetocomponentupdates"></a>

Berlangganan untuk menerima pemberitahuan sebelum perangkat lunak AWS IoT Greengrass Core memperbarui komponen. Notifikasi tersebut menentukan apakah nukleus akan di-restart sebagai bagian dari pembaruan.

Inti tersebut mengirimkan notifikasi pembaruan hanya jika komponen kebijakan pembaruan komponen deployment menentukan untuk menotifikasi komponen. Perilaku defaultnya adalah menotifikasi komponen. Untuk informasi selengkapnya, lihat [Buat deployment](create-deployments.md) dan [DeploymentComponentUpdatePolicy](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_DeploymentComponentUpdatePolicy.html)objek yang dapat Anda berikan saat Anda memanggil [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)operasi.

**penting**  
Deployment lokal tidak menotifikasi komponen sebelum pembaruan.

<a name="ipc-subscribe-operation-note"></a>Operasi ini adalah operasi berlangganan di mana Anda berlangganan aliran pesan peristiwa. Untuk menggunakan operasi ini, tentukan bagian yang menangani respons aliran dengan fungsi yang menangani pesan peristiwa, kesalahan, dan penutupan aliran. Untuk informasi selengkapnya, lihat [Berlangganan pengaliran peristiwa IPC](interprocess-communication.md#ipc-subscribe-operations).

**Jenis pesan peristiwa:** `ComponentUpdatePolicyEvents`

**Tip**  
Anda dapat mengikuti tutorial untuk mempelajari cara mengembangkan komponen yang secara kondisional menunda pembaruan komponen. Untuk informasi selengkapnya, lihat [Tutorial: Mengembangkan komponen Greengrass yang menunda pembaruan komponen](defer-component-updates-tutorial.md).

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

Operasi ini tidak memiliki parameter apa pun.

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

Tanggapan operasi ini memiliki informasi berikut:

`messages`  
Aliran pesan notifikasi. Objek ini, `ComponentUpdatePolicyEvents`, berisi informasi berikut:    
`preUpdateEvent`(Python:) `pre_update_event`  
(Opsional) Sebuah peristiwa yang menunjukkan bahwa inti ingin memperbarui komponen. Anda dapat merespons dengan operasi [DeferComponentUpdate](#ipc-operation-defercomponentupdate) untuk mengakui atau menunda pembaruan sampai komponen Anda siap untuk memulai ulang. Objek ini, `PreComponentUpdateEvent`, berisi informasi berikut:    
`deploymentId`(Python:) `deployment_id`  
ID AWS IoT Greengrass penyebaran yang memperbarui komponen.  
`isGgcRestarting`(Python:) `is_ggc_restarting`  
Apakah nukleus perlu me-restart untuk menerapkan pembaruan.  
`postUpdateEvent`(Python:) `post_update_event`  
(Opsional) Sebuah peristiwa yang menunjukkan bahwa inti telah memperbarui komponen. Objek ini, `PostComponentUpdateEvent`, berisi informasi berikut:    
`deploymentId`(Python:) `deployment_id`  
ID AWS IoT Greengrass penyebaran yang memperbarui komponen.  
Fitur ini membutuhkan v2.7.0 atau yang lebih baru dari komponen inti Greengrass.

## DeferComponentUpdate
<a name="ipc-operation-defercomponentupdate"></a>

Mengakui atau menunda pembaruan komponen yang Anda temukan dengan [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates). Anda menentukan jumlah waktu untuk menunggu sebelum nukleus memeriksa lagi apakah komponen Anda siap untuk membiarkan pembaruan komponen dilanjutkan. Anda juga dapat menggunakan operasi ini untuk memberi tahu nukleus bahwa komponen Anda siap untuk pembaruan.

Jika komponen tidak menanggapi notifikasi pembaruan komponen, inti tersebut akan menunggu sejumlah waktu yang Anda tentukan dalam kebijakan pembaruan komponen deployment. Setelah batas waktu itu, nukleus akan melanjutkan deployment. Pembaruan komponen default adalah 60 detik. Untuk informasi selengkapnya, lihat [Buat deployment](create-deployments.md) dan [DeploymentComponentUpdatePolicy](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_DeploymentComponentUpdatePolicy.html)objek yang dapat Anda berikan saat Anda memanggil [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)operasi.

**Tip**  
Anda dapat mengikuti tutorial untuk mempelajari cara mengembangkan komponen yang secara kondisional menunda pembaruan komponen. Untuk informasi selengkapnya, lihat [Tutorial: Mengembangkan komponen Greengrass yang menunda pembaruan komponen](defer-component-updates-tutorial.md).

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

Permintaan operasi ini memiliki parameter berikut:

`deploymentId`(Python:) `deployment_id`  
ID AWS IoT Greengrass penyebaran untuk menunda.

`message`  
(Opsional) Nama komponen untuk menunda pembaruan.  
Default untuk nama komponen yang membuat permintaan.

`recheckAfterMs`(Python:) `recheck_after_ms`  
Jumlah waktu dalam milidetik untuk menunda pembaruan. Nukleus menunggu selama jumlah waktu ini dan kemudian mengirimkan `PreComponentUpdateEvent` lainnya yang dapat Anda temukan dengan [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates).  
Tentukan `0` untuk membenarkan pembaruan. Hal ini akan memberi tahu nukleus bahwa komponen Anda siap untuk diperbarui.  
Default nol milidetik, yang berarti mengakui pembaruan.

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

Operasi ini tidak memberikan informasi apa pun dalam tanggapannya.

## PauseComponent
<a name="ipc-operation-pausecomponent"></a>

[Fitur ini tersedia untuk v2.4.0 dan yang lebih baru dari komponen inti Greengrass.](greengrass-nucleus-component.md) AWS IoT Greengrass saat ini tidak mendukung fitur ini di perangkat inti Windows. 

Menjeda proses komponen pada perangkat inti. Untuk melanjutkan komponen, gunakan [ResumeComponent](#ipc-operation-resumecomponent)operasi.

Anda hanya dapat menjeda komponen generik. Jika Anda mencoba menjeda jenis komponen lainnya, operasi ini akan menampilkan file. `InvalidRequestError`

**catatan**  
Operasi ini tidak dapat menjeda proses kontainer, seperti kontainer Docker. [Untuk menjeda dan melanjutkan container Docker, Anda dapat menggunakan perintah docker [pause dan docker unpause](https://docs.docker.com/engine/reference/commandline/pause/).](https://docs.docker.com/engine/reference/commandline/unpause/)

Operasi ini tidak menjeda dependensi komponen atau komponen yang bergantung pada komponen yang Anda jeda. Pertimbangkan perilaku ini ketika Anda menjeda komponen yang merupakan ketergantungan komponen lain, karena komponen dependen mungkin mengalami masalah saat ketergantungannya dijeda.

Saat Anda memulai ulang atau mematikan komponen yang dijeda, seperti melalui penerapan, inti Greengrass melanjutkan komponen dan menjalankan siklus hidup shutdown-nya. Untuk informasi selengkapnya tentang memulai ulang komponen, lihat. [RestartComponent](ipc-local-deployments-components.md#ipc-operation-restartcomponent)

**penting**  
Untuk menggunakan operasi ini, Anda harus menentukan kebijakan otorisasi yang memberikan izin untuk menggunakan operasi ini. Untuk informasi selengkapnya, lihat [Otorisasi](#ipc-component-lifecycle-authorization).

### SDK (Versi Minimum)
<a name="ipc-operation-pausecomponent-sdk-versions"></a>

Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk menjeda dan melanjutkan komponen.


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

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

Permintaan operasi ini memiliki parameter berikut:

`componentName`(Python:) `component_name`  
Nama komponen untuk jeda, yang harus menjadi komponen generik. Untuk informasi selengkapnya, lihat [Jenis komponen](develop-greengrass-components.md#component-types).

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

Operasi ini tidak memberikan informasi apa pun dalam tanggapannya.

## ResumeComponent
<a name="ipc-operation-resumecomponent"></a>

[Fitur ini tersedia untuk v2.4.0 dan yang lebih baru dari komponen inti Greengrass.](greengrass-nucleus-component.md) AWS IoT Greengrass saat ini tidak mendukung fitur ini di perangkat inti Windows. 

Melanjutkan proses komponen pada perangkat inti. Untuk menjeda komponen, gunakan [PauseComponent](#ipc-operation-pausecomponent)operasi.

Anda hanya dapat melanjutkan komponen yang dijeda. Jika Anda mencoba melanjutkan komponen yang tidak dijeda, operasi ini akan menampilkan file. `InvalidRequestError`

**penting**  
Untuk menggunakan operasi ini, Anda harus menentukan kebijakan otorisasi yang memberikan izin untuk melakukannya. Untuk informasi selengkapnya, lihat [Otorisasi](#ipc-component-lifecycle-authorization).

### SDK (Versi Minimum)
<a name="ipc-operation-resumecomponent-sdk-versions"></a>

Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk menjeda dan melanjutkan komponen.


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

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

Permintaan operasi ini memiliki parameter berikut:

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

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

Operasi ini tidak memberikan informasi apa pun dalam tanggapannya.