

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administre las implementaciones y los componentes locales
<a name="ipc-local-deployments-components"></a>

**nota**  
Esta característica está disponible para la versión 2.6.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).

Utilice el servicio CLI IPC de Greengrass para administrar las implementaciones locales y los componentes de Greengrass en el dispositivo principal.

Para utilizar estas operaciones de IPC, incluya la versión 2.6.0 o posterior del [componente CLI de Greengrass](greengrass-cli-component.md) como dependencia en su componente personalizado. A continuación, puede utilizar las operaciones de IPC en sus componentes personalizados para hacer lo siguiente:
+ Cree implementaciones locales para modificar y configurar los componentes de Greengrass en el dispositivo principal.
+ Reinicie y detenga los componentes de Greengrass en el dispositivo principal.
+ Genere una contraseña que pueda usar para iniciar sesión en la [consola de depuración local](local-debug-console-component.md).

**Topics**
+ [Versiones mínimas de SDK](#ipc-local-deployments-components-sdk-versions)
+ [Autorización](#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)

## Versiones mínimas de SDK
<a name="ipc-local-deployments-components-sdk-versions"></a>

En la siguiente tabla se enumeran las versiones mínimas de las SDK para dispositivos con AWS IoT que debe utilizar para interactuar con el servicio CLI IPC de Greengrass.


| SDK | Versión mínima | 
| --- | --- | 
|  [SDK para dispositivos con AWS IoT para Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  Versión 1.2.10  | 
|  [SDK para dispositivos con AWS IoT para Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  Versión 1.5.3  | 
|  [SDK para dispositivos con AWS IoT para C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  Versión 1.17.0  | 
|  [SDK para dispositivos con AWS IoT para JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  Versión 1.12.0  | 

## Autorización
<a name="ipc-local-deployments-components-authorization"></a>

Para utilizar el servicio CLI IPC de Greengrass en un componente personalizado, debe definir políticas de autorización que permitan a su componente administrar las implementaciones y los componentes locales. Para obtener información sobre cómo definir las políticas de autorización, consulte [Autorización de los componentes para realizar operaciones de IPC](interprocess-communication.md#ipc-authorization-policies).

Las políticas de autorización de la CLI de Greengrass tienen las siguientes propiedades.

**Identificador de servicio IPC:** `aws.greengrass.Cli`


| Operación | Description (Descripción) | Recursos | 
| --- | --- | --- | 
|  `aws.greengrass#CreateLocalDeployment`  |  Permite que un componente cree una implementación local en el dispositivo principal.  |  `*`  | 
|  `aws.greengrass#ListLocalDeployments`  |  Permite que un componente enumere las implementaciones locales en el dispositivo principal.  |  `*`  | 
|  `aws.greengrass#GetLocalDeploymentStatus`  |  Permite que un componente obtenga el estado de una implementación local en el dispositivo principal.  |  Un ID de implementación local, o `*`, que permita el acceso a todas las implementaciones locales.  | 
|  `aws.greengrass#ListComponents`  |  Permite que un componente enumere los componentes del dispositivo principal.  |  `*`  | 
|  `aws.greengrass#GetComponentDetails`  |  Permite que un componente obtenga detalles sobre un componente del dispositivo principal.  |  Un nombre de componente, por ejemplo: `com.example.HelloWorld` o `*`, que permita el acceso a todos los componentes.  | 
|  `aws.greengrass#RestartComponent`  |  Permite que un componente reinicie un componente del dispositivo principal.  |  Un nombre de componente, por ejemplo: `com.example.HelloWorld` o `*`, que permita el acceso a todos los componentes.  | 
|  `aws.greengrass#StopComponent`  |  Permite que un componente detenga a un componente del dispositivo principal.  |  Un nombre de componente, por ejemplo: `com.example.HelloWorld` o `*`, que permita el acceso a todos los componentes.  | 
|  `aws.greengrass#CreateDebugPassword`  |  Permite que un componente genere una contraseña para iniciar sesión en el [componente de la consola de depuración local](local-debug-console-component.md).  |  `*`  | 

**Example Ejemplo de política de autorización**  
Los siguientes ejemplos de políticas de autorización permiten a un componente crear implementaciones locales, ver todas las implementaciones y componentes locales, además de reiniciar y detener un componente denominado `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>

Cree o actualice una implementación local mediante recetas de componentes, artefactos y argumentos de tiempo de ejecución específicos.

Esta operación ofrece la misma funcionalidad que el [comando crear implementación](gg-cli-deployment.md#deployment-create) de la CLI de Greengrass.

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

Esta solicitud de operación tiene los siguientes parámetros:

`recipeDirectoryPath` (Python: `recipe_directory_path`)  
(Opcional) La ruta absoluta a la carpeta que contiene los archivos de recetas de los componentes.

`artifactDirectoryPath` (Python: `artifact_directory_path`)  
(Opcional) La ruta absoluta a la carpeta que contiene los archivos de artefactos que se incluirán en la implementación. La carpeta de artefactos debe contener la siguiente estructura de carpetas:  

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

`rootComponentVersionsToAdd` (Python: `root_component_versions_to_add`)  
(Opcional) Las versiones de los componentes que se van a instalar en el dispositivo principal. Este objeto, `ComponentToVersionMap`, es un mapa que contiene los siguientes pares clave-valor:    
`key`  
El nombre del componente.  
`value`  
Esta es la versión del componente.

`rootComponentsToRemove` (Python: `root_components_to_remove`)  
(Opcional) Los componentes que se van a desinstalar del dispositivo principal. Especifique una lista en la que cada entrada sea el nombre de un componente.

`componentToConfiguration` (Python: `component_to_configuration`)  
(opcional) La configuración se actualiza para cada componente en la implementación. Este objeto, `ComponentToConfiguration`, es un mapa que contiene los siguientes pares clave-valor:    
`key`  
El nombre del componente.  
`value`  
La configuración actualiza el objeto JSON para el componente. El objeto JSON debe incluir el siguiente formato.  

```
{ 
  "MERGE": {
    "config-key": "config-value"
  },
  "RESET": [
    "path/to/reset/"
  ]
}
```
Para obtener más información acerca de las actualizaciones de configuración, consulte [Actualización de las configuraciones de los componentes](update-component-configurations.md).

`componentToRunWithInfo` (Python: `component_to_run_with_info`)  
(Opcional) La configuración del tiempo de ejecución de cada componente de la implementación. Esta configuración incluye el usuario del sistema que es propietario de los procesos de cada componente y los límites del sistema que se aplican a cada componente. Este objeto, `ComponentToRunWithInfo`, es un mapa que contiene los siguientes pares clave-valor:    
`key`  
El nombre del componente.  
`value`  
La configuración de tiempo de ejecución del componente. Si omite un parámetro de configuración del tiempo de ejecución, el software AWS IoT Greengrass principal utilizará los valores predeterminados que configure en el núcleo de [Greengrass](greengrass-nucleus-component.md). Este objeto, `RunWithInfo`, contiene la siguiente información:    
`posixUser` (Python: `posix_user`)  
(Opcional) <a name="deployment-posix-user-definition"></a>El usuario del sistema POSIX y, opcionalmente, el grupo que se utilizarán para ejecutarse en dispositivos principales de Linux. El usuario y el grupo, si se especifica, deben existir en cada dispositivo principal de Linux. Especifique el usuario y el grupo separados por dos puntos (`:`) con el siguiente formato: `user:group`. El grupo es opcional. Si no especifica un grupo, el software AWS IoT Greengrass Core utiliza el grupo principal para el usuario. Para obtener más información, consulte [Configuración del usuario que ejecuta los componentes](configure-greengrass-core-v2.md#configure-component-user).   
`windowsUser` (Python: `windows_user`)  
(Opcional) <a name="deployment-windows-user-definition"></a>El usuario de Windows que se utilizará para ejecutar este componente en los dispositivos principales de Windows. El usuario debe estar en todos los dispositivos principales de Windows y su nombre y contraseña deben almacenarse en la instancia del administrador de credenciales de la LocalSystem cuenta. Para obtener más información, consulte [Configuración del usuario que ejecuta los componentes](configure-greengrass-core-v2.md#configure-component-user).   
`systemResourceLimits` (Python: `system_resource_limits`)  
(Opcional) <a name="deployment-system-resource-limits-definition"></a>Los límites de recursos del sistema que se aplicarán a los procesos de este componente. Puede aplicar límites de recursos del sistema a los componentes de Lambda genéricos y no contenerizados. Para obtener más información, consulte [Configuración de los límites de recursos del sistema para los componentes](configure-greengrass-core-v2.md#configure-component-system-resource-limits).   
AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows.   
Este objeto, `SystemResourceLimits`, contiene la siguiente información:    
`cpus`  
(Opcional) <a name="system-resource-limits-cpu-definition-this"></a>La cantidad máxima de tiempo de CPU que los procesos de un componente pueden utilizar en el dispositivo principal. El tiempo total de CPU de un dispositivo principal equivale a la cantidad de núcleos de CPU del dispositivo. Por ejemplo, en un dispositivo principal con 4 núcleos de CPU, puede establecer este valor en `2` para limitar los procesos del componente al 50 % de uso de cada núcleo de CPU. En un dispositivo con 1 núcleo de CPU, puede establecer este valor en `0.25` para limitar los procesos del componente al 25 % de uso de la CPU. Si establece este valor en un número superior al número de núcleos de la CPU, el software AWS IoT Greengrass Core no limita el uso de la CPU del componente.   
`memory`  
(Opcional) <a name="system-resource-limits-memory-definition-this"></a>La cantidad máxima de RAM, expresada en kilobytes, que los procesos de un componente pueden utilizar en el dispositivo principal. 

`groupName` (Python: `group_name`)  
(Opcional) El nombre del grupo de elementos al que se va a dirigir esta implementación.

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

Esta respuesta de operación contiene la siguiente información:

`deploymentId` (Python: `deployment_id`)  
El ID de la implementación local que creó la solicitud.

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

Obtiene el estado de las últimas 10 implementaciones locales.

Esta operación ofrece la misma funcionalidad que el [comando enumerar implementación](gg-cli-deployment.md#deployment-list) de la CLI de Greengrass.

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

Esta solicitud de la operación no tiene parámetros.

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

Esta respuesta de operación contiene la siguiente información:

`localDeployments` (Python: `local_deployments`)  
La lista de implementaciones locales. Cada objeto de esta lista es un objeto `LocalDeployment` que contiene la siguiente información:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
El ID de la implementación local.  
`status`  
El estado de la implementación local. Esta enumeración, `DeploymentStatus`, tiene los siguientes valores:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Obtiene el estado de una implementación local.

Esta operación ofrece la misma funcionalidad que el [comando estado de implementación](gg-cli-deployment.md#deployment-status) de la CLI de Greengrass.

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

Esta solicitud de operación tiene los siguientes parámetros:

`deploymentId` (Python: `deployment_id`)  
El ID de la implementación local que se va a obtener.

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

Esta respuesta de operación contiene la siguiente información:

`deployment`  
La implementación local. Este objeto, `LocalDeployment`, contiene la siguiente información:  <a name="ipc-local-deployment-object-shape"></a>  
`deploymentId` (Python: `deployment_id`)  
El ID de la implementación local.  
`status`  
El estado de la implementación local. Esta enumeración, `DeploymentStatus`, tiene los siguientes valores:  
+ `QUEUED`
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`

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

Obtiene el nombre, la versión, el estado y la configuración de cada componente raíz del dispositivo principal. Un *componente raíz* es un componente que se especifica en una implementación. Esta respuesta no incluye los componentes que se instalan como dependencias de otros componentes.

Esta operación ofrece la misma funcionalidad que el [comando component list](gg-cli-component.md#component-list) de la CLI de Greengrass.

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

Esta solicitud de la operación no tiene parámetros.

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

Esta respuesta de operación contiene la siguiente información:

`components`  
La lista de componentes raíz del dispositivo principal. Cada objeto de esta lista es un objeto `ComponentDetails` que contiene la siguiente información:  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
El nombre del componente.  
`version`  
Esta es la versión del componente.  
`state`  
El estado del componente. Este estado puede ser uno de los siguientes:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
La configuración del componente como objeto JSON.

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

Obtiene la versión, el estado y la configuración de un componente del dispositivo principal.

Esta operación ofrece la misma funcionalidad que el [comando detallar implementación](gg-cli-component.md#component-details) de la CLI de Greengrass.

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

Esta solicitud de operación tiene los siguientes parámetros:

`componentName` (Python: `component_name`)  
El nombre del componente que se obtendrá.

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

Esta respuesta de operación contiene la siguiente información:

`componentDetails` (Python: `component_details`)  
Los detalles del componente. Este objeto, `ComponentDetails`, contiene la siguiente información:  <a name="ipc-component-details-object-shape"></a>  
`componentName` (Python: `component_name`)  
El nombre del componente.  
`version`  
Esta es la versión del componente.  
`state`  
El estado del componente. Este estado puede ser uno de los siguientes:  
+ `BROKEN`
+ `ERRORED`
+ `FINISHED`
+ `INSTALLED`
+ `NEW`
+ `RUNNING`
+ `STARTING`
+ `STOPPING`  
`configuration`  
La configuración del componente como objeto JSON.

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

Reinicia un componente en el dispositivo principal.

**nota**  
Si bien puede reiniciar cualquier componente, le recomendamos que reinicie solo los [componentes genéricos](develop-greengrass-components.md#component-types).

Esta operación ofrece la misma funcionalidad que el [comando reiniciar implementación](gg-cli-component.md#component-restart) de la CLI de Greengrass.

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

Esta solicitud de operación tiene los siguientes parámetros:

`componentName` (Python: `component_name`)  
El nombre del componente.

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

Esta respuesta de operación contiene la siguiente información:

`restartStatus` (Python: `restart_status`)  
El estado de la solicitud reiniciada. El estado de la solicitud puede ser uno de los siguientes:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Un mensaje sobre por qué el componente no se pudo reiniciar, si la solicitud falló.

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

En los ejemplos siguientes, se muestra cómo llamar a esta operación en código de componente personalizado.

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

**Example Ejemplo: reiniciar un 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 Ejemplo: reiniciar un 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 Ejemplo: reiniciar un 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>

Detiene los procesos de un componente en el dispositivo principal.

**nota**  
Si bien puede detener cualquier componente, le recomendamos que detenga solo los [componentes genéricos](develop-greengrass-components.md#component-types).

Esta operación ofrece la misma funcionalidad que el [comando detener implementación](gg-cli-component.md#component-stop) de la CLI de Greengrass.

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

Esta solicitud de operación tiene los siguientes parámetros:

`componentName` (Python: `component_name`)  
El nombre del componente.

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

Esta respuesta de operación contiene la siguiente información:

`stopStatus` (Python: `stop_status`)  
El estado de la solicitud de detención. El estado de la solicitud puede ser uno de los siguientes:  
+ `SUCCEEDED`
+ `FAILED`

`message`  
Un mensaje sobre por qué el componente no se pudo detener, si la solicitud falló.

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

Genera una contraseña asignada al azar que puede usar para iniciar sesión en el [componente de la consola de depuración local](local-debug-console-component.md). La contraseña caduca 8 horas después de generarse.

Esta operación proporciona la misma funcionalidad que el [get-debug-password comando](gg-cli-get-debug-password.md) de la CLI de Greengrass.

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

Esta solicitud de la operación no tiene parámetros.

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

Esta respuesta de operación contiene la siguiente información:

`username`  
El nombre de usuario que se utilizará para iniciar sesión.

`password`  
La contraseña que se utilizará para iniciar sesión.

`passwordExpiration` (Python: `password_expiration`)  
La hora en que caduca la contraseña.

`certificateSHA256Hash` (Python: `certificate_sha256_hash`)  
La huella digital SHA-256 del certificado autofirmado que utiliza la consola de depuración local cuando HTTPS está activado. Cuando abra la consola de depuración local, utilice esta huella digital para comprobar que el certificado es legítimo y que la conexión es segura.

`certificateSHA1Hash` (Python: `certificate_sha1_hash`)  
La huella digital SHA-1 del certificado autofirmado que utiliza la consola de depuración local cuando HTTPS está activado. Cuando abra la consola de depuración local, utilice esta huella digital para comprobar que el certificado es legítimo y que la conexión es segura.