

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciar implantações e componentes locais
<a name="ipc-local-deployments-components"></a>

**nota**  
Esse recurso está disponível para a versão 2.6.0 e posterior do [componente de núcleo do Greengrass](greengrass-nucleus-component.md).

Use o serviço Greengrass CLI IPC para gerenciar implantações locais e componentes do Greengrass no dispositivo principal.

Para usar essas operações de IPC, inclua a versão 2.6.0 ou posterior do componente [Greengrass CLI](greengrass-cli-component.md) como uma dependência em seu componente personalizado. Em seguida, você pode usar as operações de IPC em seus componentes personalizados para fazer o seguinte:
+ Crie implantações locais para modificar e configurar os componentes do Greengrass no dispositivo principal.
+ Reinicie e interrompa os componentes do Greengrass no dispositivo principal.
+ Gere uma senha que você possa usar para entrar no [console de depuração local](local-debug-console-component.md).

**Topics**
+ [Versões mínimas do SDK](#ipc-local-deployments-components-sdk-versions)
+ [Autorização](#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)

## Versões mínimas do SDK
<a name="ipc-local-deployments-components-sdk-versions"></a>

A tabela a seguir lista as versões mínimas do AWS IoT Device SDK que você deve usar para interagir com o serviço Greengrass CLI IPC.


| SDK | Versão mínima | 
| --- | --- | 
|  [AWS IoT Device SDK para Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.2.10  | 
|  [AWS IoT Device SDK para Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.5.3  | 
|  [AWS IoT Device SDK para C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.17.0  | 
|  [AWS IoT Device SDK para JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

## Autorização
<a name="ipc-local-deployments-components-authorization"></a>

Para usar o serviço Greengrass CLI IPC em um componente personalizado, você deve definir políticas de autorização que permitam que seu componente gerencie implantações e componentes locais. Para obter informações sobre a definição de políticas de autorização, consulte [Autorizar componentes a realizar operações de IPC](interprocess-communication.md#ipc-authorization-policies).

As políticas de autorização da CLI do Greengrass têm as seguintes propriedades.

**Identificador de serviço IPC:** `aws.greengrass.Cli`


| Operation | Description | Recursos | 
| --- | --- | --- | 
|  `aws.greengrass#CreateLocalDeployment`  |  Permite que um componente crie uma implantação local no dispositivo principal.  |  `*`  | 
|  `aws.greengrass#ListLocalDeployments`  |  Permite que um componente liste implantações locais no dispositivo principal.  |  `*`  | 
|  `aws.greengrass#GetLocalDeploymentStatus`  |  Permite que um componente obtenha o status de uma implantação local no dispositivo principal.  |  Um ID de implantação local ou `*` para permitir o acesso a todas as implantações locais.  | 
|  `aws.greengrass#ListComponents`  |  Permite que um componente liste componentes no dispositivo principal.  |  `*`  | 
|  `aws.greengrass#GetComponentDetails`  |  Permite que um componente obtenha detalhes sobre um componente no dispositivo principal.  |  Um nome de componente, como `com.example.HelloWorld`, ou `*` para permitir o acesso a todos os componentes.  | 
|  `aws.greengrass#RestartComponent`  |  Permite que um componente reinicie um componente no dispositivo principal.  |  Um nome de componente, como `com.example.HelloWorld`, ou `*` para permitir o acesso a todos os componentes.  | 
|  `aws.greengrass#StopComponent`  |  Permite que um componente interrompa um componente no dispositivo principal.  |  Um nome de componente, como `com.example.HelloWorld`, ou `*` para permitir o acesso a todos os componentes.  | 
|  `aws.greengrass#CreateDebugPassword`  |  Permite que um componente gere uma senha para usar para entrar no [componente do console de depuração local](local-debug-console-component.md).  |  `*`  | 

**Example Exemplo de política de autorização**  
O exemplo de políticas de autorização a seguir permite que um componente crie implantações locais, visualize todas as implantações e componentes locais e reinicie e interrompa um componente chamado. `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>

Crie ou atualize uma implantação local usando fórmulas de componentes, artefatos e argumentos de runtime especificados.

Essa operação fornece a mesma funcionalidade do [comando deployment create](gg-cli-deployment.md#deployment-create) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-createlocaldeployment-request"></a>

A solicitação dessa operação tem os seguintes parâmetros:

`recipeDirectoryPath` (Python: `recipe_directory_path`)  
(Opcional) O caminho absoluto para a pasta que contém arquivos de fórmulas de componentes.

`artifactDirectoryPath` (Python: `artifact_directory_path`)  
(Opcional) O caminho absoluto para a pasta que contém os arquivos de artefato a serem incluídos na implantação. A pasta de artefatos deve conter a seguinte estrutura de pastas:  

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

`rootComponentVersionsToAdd` (Python: `root_component_versions_to_add`)  
(Opcional) As versões dos componentes a serem instaladas no dispositivo principal. Esse objeto, `ComponentToVersionMap`, é um mapa que contém os seguintes pares de chave-valor:    
`key`  
O nome do componente.  
`value`  
A versão do componente.

`rootComponentsToRemove` (Python: `root_components_to_remove`)  
(Opcional) Os componentes a serem desinstalados do dispositivo principal. Especifique uma lista em que cada entrada seja o nome de um componente.

`componentToConfiguration` (Python: `component_to_configuration`)  
(Opcional) As atualizações de configuração para cada componente na implantação. Esse objeto, `ComponentToConfiguration`, é um mapa que contém os seguintes pares de chave-valor:    
`key`  
O nome do componente.  
`value`  
O objeto JSON da atualização de configuração do componente. O objeto JSON deve ter o seguinte formato.  

```
{ 
  "MERGE": {
    "config-key": "config-value"
  },
  "RESET": [
    "path/to/reset/"
  ]
}
```
Para obter mais informações sobre atualizações de configuração, consulte [Atualizar configurações do componente](update-component-configurations.md).

`componentToRunWithInfo` (Python: `component_to_run_with_info`)  
(Opcional) A configuração de runtime para cada componente na implantação. Essa configuração inclui o usuário do sistema que possui os processos de cada componente e os limites do sistema a serem aplicados a cada componente. Esse objeto, `ComponentToRunWithInfo`, é um mapa que contém os seguintes pares de chave-valor:    
`key`  
O nome do componente.  
`value`  
A configuração de runtime do componente. Se você omitir um parâmetro de configuração de tempo de execução, o software AWS IoT Greengrass Core usará os valores padrão que você configura no núcleo do [Greengrass](greengrass-nucleus-component.md). Esse objeto, `RunWithInfo`, contém as seguintes informações:    
`posixUser` (Python: `posix_user`)  
(Opcional) <a name="deployment-posix-user-definition"></a>O usuário do sistema POSIX e, como opção, o grupo a ser usado para executar este componente em dispositivos principais do Linux. O usuário e o grupo, se especificados, devem existir em cada dispositivo principal do Linux. Especifique o usuário e o grupo separando-os por dois pontos (`:`), no seguinte formato: `user:group`. O grupo é opcional. Se você não especificar um grupo, o software AWS IoT Greengrass Core usará o grupo primário para o usuário. Para obter mais informações, consulte [Configurar o usuário que executa os componentes](configure-greengrass-core-v2.md#configure-component-user).   
`windowsUser` (Python: `windows_user`)  
(Opcional) <a name="deployment-windows-user-definition"></a>O usuário do Windows a ser usado para executar esse componente nos dispositivos essenciais do Windows. O usuário deve existir em cada dispositivo principal do Windows, e seu nome e senha devem ser armazenados na instância do Gerenciador de Credenciais da LocalSystem conta. Para obter mais informações, consulte [Configurar o usuário que executa os componentes](configure-greengrass-core-v2.md#configure-component-user).   
`systemResourceLimits` (Python: `system_resource_limits`)  
(Opcional) <a name="deployment-system-resource-limits-definition"></a>Os limites de recursos do sistema a serem aplicados aos processos desse componente. Você pode aplicar limites de recursos do sistema a componentes Lambda genéricos e não conteinerizados. Para obter mais informações, consulte [Configurar limites de recursos do sistema para componentes](configure-greengrass-core-v2.md#configure-component-system-resource-limits).   
AWS IoT Greengrass atualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.   
Esse objeto, `SystemResourceLimits`, contém as seguintes informações:    
`cpus`  
(Opcional) <a name="system-resource-limits-cpu-definition-this"></a>A quantidade máxima de tempo de CPU que os processos deste componente podem usar no dispositivo principal. O tempo total da CPU de um dispositivo essencial é equivalente ao número de núcleos da CPU do dispositivo. Por exemplo, em um dispositivo principal com quatro núcleos da CPU, é possível definir esse valor como `2` a fim de limitar os processos do componente para 50% de uso em cada núcleo da CPU. Em um dispositivo com um núcleo da CPU, você pode definir esse valor como `0.25` a fim de limitar os processos do componente para 25% de uso da CPU. Se você definir esse valor como um número maior que o número de núcleos de CPU, o software AWS IoT Greengrass Core não limitará o uso da CPU do componente.   
`memory`  
(Opcional) <a name="system-resource-limits-memory-definition-this"></a>A quantidade máxima de RAM (em kilobytes) que os processos desse componente podem usar no dispositivo principal. 

`groupName` (Python: `group_name`)  
(Opcional) O nome do grupo de objetos a ser direcionado com essa implantação.

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

A resposta dessa operação tem as seguintes informações:

`deploymentId` (Python: `deployment_id`)  
O ID da implantação local que a solicitação criou.

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

Obtém o status das últimas 10 implantações locais.

Essa operação fornece a mesma funcionalidade do [comando de lista de implantação](gg-cli-deployment.md#deployment-list) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-listlocaldeployments-request"></a>

A solicitação dessa operação não tem nenhum parâmetro.

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

A resposta dessa operação tem as seguintes informações:

`localDeployments` (Python: `local_deployments`)  
A lista de implantações locais. Cada objeto nessa lista é um objeto `LocalDeployment`, que contém as seguintes informações:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
O ID da implantação local.  
`status`  
O status da implantação local. Esse enumerador, `DeploymentStatus`, tem os seguintes valores:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Obtém o status de uma implantação local.

Essa operação fornece a mesma funcionalidade do [comando de status de implantação](gg-cli-deployment.md#deployment-status) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-getlocaldeploymentstatus-request"></a>

A solicitação dessa operação tem os seguintes parâmetros:

`deploymentId` (Python: `deployment_id`)  
O ID da implantação local a ser obtida.

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

A resposta dessa operação tem as seguintes informações:

`deployment`  
A implantação local. Esse objeto, `LocalDeployment`, contém as seguintes informações:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
O ID da implantação local.  
`status`  
O status da implantação local. Esse enumerador, `DeploymentStatus`, tem os seguintes valores:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Obtém o nome, a versão, o status e a configuração de cada componente raiz no dispositivo principal. Um *componente raiz* é um componente que você especifica em uma implantação. Essa resposta não inclui componentes que são instalados como dependências de outros componentes.

Essa operação fornece a mesma funcionalidade do [comando de lista de componentes](gg-cli-component.md#component-list) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-listcomponents-request"></a>

A solicitação dessa operação não tem nenhum parâmetro.

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

A resposta dessa operação tem as seguintes informações:

`components`  
A lista de componentes raiz no dispositivo essencial. Cada objeto nessa lista é um objeto `ComponentDetails`, que contém as seguintes informações:  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
O nome do componente.  
`version`  
A versão do componente.  
`state`  
O estado do componente. Esse estado pode ser um dos seguintes:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
A configuração do componente como um objeto JSON.

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

Obtém a versão, o status e a configuração de um componente no dispositivo principal.

Essa operação fornece a mesma funcionalidade do [comando de detalhes do componente](gg-cli-component.md#component-details) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-getcomponentdetails-request"></a>

A solicitação dessa operação tem os seguintes parâmetros:

`componentName` (Python: `component_name`)  
O nome do componente a ser obtido.

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

A resposta dessa operação tem as seguintes informações:

`componentDetails` (Python: `component_details`)  
Os detalhes do componente. Esse objeto, `ComponentDetails`, contém as seguintes informações:  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
O nome do componente.  
`version`  
A versão do componente.  
`state`  
O estado do componente. Esse estado pode ser um dos seguintes:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
A configuração do componente como um objeto JSON.

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

Reinicia um componente no dispositivo essencial.

**nota**  
Embora você possa reiniciar qualquer componente, recomendamos que você reinicie somente [componentes genéricos](develop-greengrass-components.md#component-types).

Essa operação fornece a mesma funcionalidade do [comando de reinicialização do componente](gg-cli-component.md#component-restart) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-restartcomponent-request"></a>

A solicitação dessa operação tem os seguintes parâmetros:

`componentName` (Python: `component_name`)  
O nome do componente.

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

A resposta dessa operação tem as seguintes informações:

`restartStatus` (Python: `restart_status`)  
O status da solicitação de reinicialização. O status da solicitação pode ser um dos seguintes:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Uma mensagem sobre por que o componente falhou na reinicialização, se a solicitação falhou.

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

Os exemplos a seguir demonstram como chamar essa operação no código do componente personalizado.

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

**Example Exemplo: reiniciar um componente**  

```
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 Exemplo: reiniciar um componente**  

```
#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 Exemplo: reiniciar um componente**  

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

Interrompe os processos de um componente no dispositivo essencial.

**nota**  
Embora você possa interromper qualquer componente, recomendamos que você interrompa somente [os componentes genéricos](develop-greengrass-components.md#component-types).

Essa operação fornece a mesma funcionalidade do [comando de parada do componente](gg-cli-component.md#component-stop) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-stopcomponent-request"></a>

A solicitação dessa operação tem os seguintes parâmetros:

`componentName` (Python: `component_name`)  
O nome do componente.

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

A resposta dessa operação tem as seguintes informações:

`stopStatus` (Python: `stop_status`)  
O status da solicitação de interrupção. O status da solicitação pode ser um dos seguintes:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Uma mensagem sobre o motivo pelo qual o componente não foi interrompido, se a solicitação falhou.

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

Gera uma senha aleatória que você pode usar para entrar no [componente local do console de depuração](local-debug-console-component.md). A senha expira 8 horas depois de ser gerada.

Essa operação fornece a mesma funcionalidade do [get-debug-password comando](gg-cli-get-debug-password.md) na CLI do Greengrass.

### Solicitação
<a name="ipc-operation-createdebugpassword-request"></a>

A solicitação dessa operação não tem nenhum parâmetro.

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

A resposta dessa operação tem as seguintes informações:

`username`  
O nome de usuário a ser usado para fazer login.

`password`  
A senha a ser usada para fazer login.

`passwordExpiration` (Python: `password_expiration`)  
A hora em que a senha expira.

`certificateSHA256Hash` (Python: `certificate_sha256_hash`)  
A impressão digital SHA-256 do certificado autoassinado que o console de depuração local usa quando o HTTPS está ativado. Ao abrir o console de depuração local, use essa impressão digital para verificar se o certificado é legítimo e se a conexão é segura.

`certificateSHA1Hash` (Python: `certificate_sha1_hash`)  
A impressão digital SHA-1 do certificado autoassinado que o console de depuração local usa quando o HTTPS está ativado. Ao abrir o console de depuração local, use essa impressão digital para verificar se o certificado é legítimo e se a conexão é segura.