

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.

# API de descubrimiento de Greengrass RESTful
<a name="greengrass-discover-api"></a>

AWS IoT Greengrass proporciona la operación de `Discover` API que los dispositivos cliente pueden usar para identificar los dispositivos principales de Greengrass a los que se pueden conectar. Los dispositivos cliente utilizan esta operación de plano de datos para recuperar la información necesaria para conectarse a los dispositivos principales de Greengrass, donde se asocian a la operación de la [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html)API. Cuando un dispositivo cliente se conecta a Internet, puede conectarse al servicio AWS IoT Greengrass en la nube y usar la API de detección para encontrar:
+ La dirección IP y el puerto de cada dispositivo principal de Greengrass asociado.
+ El certificado de CA del dispositivo principal, que los dispositivos de cliente pueden utilizar para autenticar el dispositivo principal de Greengrass.

**nota**  
Los dispositivos cliente también pueden usar el cliente de detección SDK para dispositivos con AWS IoT para descubrir la información de conectividad de los dispositivos principales de Greengrass. El cliente de detección utiliza la API de detección. Para obtener más información, consulte los siguientes temas:  
[Prueba de las comunicaciones del dispositivo de cliente](test-client-device-communications.md)
[Greengrass Discovery RESTful API](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) en la Guía para *AWS IoT Greengrass Version 1 desarrolladores*.

Para utilizar esta operación de API, envíe solicitudes HTTP a la API de detección en el punto de conexión del plano de datos de Greengrass. Este punto de conexión de la API tiene el siguiente formato.

```
https://greengrass-ats.iot.region.amazonaws.com:port/greengrass/discover/thing/thing-name
```

Para obtener una lista de los puntos finales Regiones de AWS y los puntos de conexión compatibles con la API de AWS IoT Greengrass descubrimiento, consulte los [AWS IoT Greengrass V2 puntos finales y las cuotas](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html) en. *Referencia general de AWS* Esta operación de la API solo está disponible en el punto de conexión del plano de datos de Greengrass. El punto de conexión del plano de control que se utiliza para administrar los componentes y las implementaciones es diferente del punto de conexión del plano de datos.

**nota**  
La API de descubrimiento es la misma para AWS IoT Greengrass V1 y. AWS IoT Greengrass V2 Si tiene dispositivos cliente que se conectan a un AWS IoT Greengrass V1 núcleo, puede conectarlos a los dispositivos AWS IoT Greengrass V2 principales sin cambiar el código de los dispositivos cliente. Para obtener más información, consulte [Greengrass Discovery RESTful API](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) en la Guía para *AWS IoT Greengrass Version 1 desarrolladores*.

**Topics**
+ [Autenticación y autorización de detección](#greengrass-discover-auth)
+ [Solicitud](#greengrass-discover-request)
+ [Respuesta](#greengrass-discover-response)
+ [Prueba de la API de detección con cURL](#greengrass-discover-test-request)

## Autenticación y autorización de detección
<a name="greengrass-discover-auth"></a>

Para usar la API de detección para recuperar información de conectividad, un dispositivo de cliente debe utilizar la autenticación mutua TLS con un certificado de cliente X.509 para autenticarse. Para obtener más información, consulte [Certificados de cliente X.509](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) en la *Guía para desarrolladores de AWS IoT Core *.

Un dispositivo de cliente también debe tener permiso para ejecutar la acción `greengrass:Discover`. El siguiente ejemplo AWS IoT de política permite AWS IoT que una cosa llamada `MyClientDevice1` funcione `Discover` por sí misma.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "greengrass:Discover",
      "Resource": [
        "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1"
      ]
    }
  ]
}
```

------

**importante**  
<a name="thing-policy-variable-not-supported"></a>[Las variables de política de objetos](https://docs.aws.amazon.com/iot/latest/developerguide/thing-policy-variables.html) (`iot:Connection.Thing.*`) no son compatibles con las políticas de AWS IoT para dispositivos principales ni operaciones del plano de datos de Greengrass. En su lugar, puede utilizar un comodín que haga coincidir varios dispositivos con nombres similares. Por ejemplo, puede especificar `MyGreengrassDevice*` para que coincida con `MyGreengrassDevice1`, `MyGreengrassDevice2`, etc. 

Para obtener más información, consulte [Políticas de AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html) en la *Guía para desarrolladores de AWS IoT Core *.

## Solicitud
<a name="greengrass-discover-request"></a>

La solicitud contiene los encabezados HTTP estándar y se envía al punto de conexión de detección de Greengrass, como se muestra en los ejemplos siguientes.

El número de puerto depende de si el dispositivo principal está configurado para enviar el tráfico HTTPS a través del puerto 8443 o el puerto 443. Para obtener más información, consulte [Realizar la conexión en el puerto 443 o a través de un proxy de red](configure-greengrass-core-v2.md#configure-alpn-network-proxy).

**nota**  
Estos ejemplos utilizan el punto de conexión de Amazon Trust Services (ATS), que se utiliza con los certificados de CA raíz de ATS recomendados. Los puntos de enlace deben coincidir con el tipo de certificado de CA raíz.

Puerto 8443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:8443/greengrass/discover/thing/thing-name
```

Puerto 443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:443/greengrass/discover/thing/thing-name
```
Los clientes que se conecten por el puerto 443 deben implementar la extensión TLS de [Negociación de Protocolo de Capa de Aplicación (ALPN)](https://tools.ietf.org/html/rfc7301) y pasar `x-amzn-http-ca` como el `ProtocolName` en el `ProtocolNameList`. Para obtener más información, consulte [Protocolos](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) en la *Guía para desarrolladores de AWS IoT *.

## Respuesta
<a name="greengrass-discover-response"></a>

En caso de éxito, el encabezado de la respuesta incluye el código de estado HTTP 200 y el cuerpo de la respuesta contiene el documento de respuesta de la detección.

**nota**  
Como AWS IoT Greengrass V2 utiliza la misma API de descubrimiento que AWS IoT Greengrass V1, la respuesta organiza la información según AWS IoT Greengrass V1 conceptos, como los grupos de Greengrass. La respuesta contiene una lista de grupos de Greengrass. En AWS IoT Greengrass V2, cada dispositivo principal está en su propio grupo, donde el grupo contiene solo ese dispositivo principal y su información de conectividad.

### Ejemplo de documentos de respuesta de detección
<a name="greengrass-discover-response-examples"></a>

En el siguiente documento, se muestran la respuesta de un dispositivo de cliente que está asociado a un dispositivo principales de Greengrass. El dispositivo principal tiene un punto de conexión y un certificado de la CA.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

En el siguiente documento, se muestra la respuesta de un dispositivo de cliente que está asociado a dos dispositivos principales. Los dispositivos principales tienen varios puntos de conexión y varios certificados de la CA del grupo.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-connection-1-description"
            },
            {
              "id": "core-device-01-connection-id-2",
              "hostAddress": "core-device-01-address-2",
              "portNumber": core-device-01-port-2,
              "metadata": "core-device-01-connection-2-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    },
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-02-thing-name",
      "Cores": [
        {
          "thingArn":"core-device-02-thing-arn",
          "Connectivity" : [
            {
              "id": "core-device-02-connection-id",
              "hostAddress": "core-device-02-address",
              "portNumber": core-device-02-port,
              "metadata": "core-device-02-connection-1-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

## Prueba de la API de detección con cURL
<a name="greengrass-discover-test-request"></a>

Si instaló `cURL`, puede probar la API de detección. En el siguiente ejemplo, se especifican los certificados de un dispositivo de cliente para autenticar una solicitud en el punto de conexión de la API de detección de Greengrass.

```
curl -i \
  --cert 1a23bc4d56.cert.pem \
  --key 1a23bc4d56.private.key \
  https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
```

**nota**  
El argumento `-i` especifica la salida de los encabezados de respuesta HTTP. Puede utilizar esta opción para ayudar a identificar los errores.

Si la solicitud tiene éxito, este comando genera una respuesta similar al siguiente ejemplo.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-MyGreengrassCore",
      "Cores": [
        {
          "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
          "Connectivity": [
            {
              "Id": "AUTOIP_192.168.1.4_1",
              "HostAddress": "192.168.1.5",
              "PortNumber": 8883,
              "Metadata": ""
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----\ncert-contents\n-----END CERTIFICATE-----\n"
      ]
    }
  ]
}
```

Si el comando genera un error, consulte [Solución de problemas de detección de Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).