Descargar IDT para V2 AWS IoT Greengrass - AWS IoT Greengrass

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.

Descargar IDT para V2 AWS IoT Greengrass

En este tema se describen las opciones de descarga AWS IoT Device Tester para la AWS IoT Greengrass versión 2. Puede utilizar uno de los siguientes enlaces de descarga de software o seguir las instrucciones para descargar IDT mediante programación.

Al descargar el software, aceptas el contrato AWS IoT Device Tester de licencia.

nota

IDT no admite la ejecución por parte de varios usuarios desde una ubicación compartida, como un directorio NFS o una carpeta compartida de red de Windows. Le recomendamos que extraiga el paquete IDT en una unidad local y ejecute el binario IDT en su estación de trabajo local.

Descarga de IDT manualmente

En este tema se enumeran las versiones compatibles de IDT para AWS IoT Greengrass V2. Como práctica recomendada, le recomendamos que utilice la última versión de IDT para AWS IoT Greengrass V2 que sea compatible con la versión de destino de la AWS IoT Greengrass V2. Las nuevas versiones de AWS IoT Greengrass pueden requerir la descarga de una nueva versión de IDT para AWS IoT Greengrass V2. Cuando inicie una prueba, recibirá una notificación si IDT para AWS IoT Greengrass V2 no es compatible con la versión AWS IoT Greengrass que está utilizando.

IDT v4.9.4 para AWS IoT Greengrass
Versiones compatibles: AWS IoT Greengrass
Descargas del software IDT:
Notas de la versión:
  • Permite la validación y calificación de dispositivos que ejecutan las versiones de software AWS IoT Greengrass Core 2.12.0, 2.11.0, 2.10.0 y 2.9.5.

  • Elimina los grupos de pruebas del administrador de transmisiones y el aprendizaje automático.

Notas adicionales:
  • Si su dispositivo usa un HSM y usted usa nucleus 2.10.x, migre a Greengrass nucleus versión 2.11.0 o posterior.

Versión del conjunto de pruebas:
GGV2Q_2.5.4
  • Publicado el 03 de mayo de 2022

Descarga de IDT mediante programación

IDT proporciona una operación de API que puede utilizar para recuperar una URL desde la que descargar IDT mediante programación. También puede usar esta operación de API para comprobar si tiene la última versión de IDT. Esta operación de API tiene el siguiente punto de conexión.

https://download.devicetester.iotdevicesecosystem.amazonaws.com/latestidt

Para llamar a esta operación de API, debe tener el permiso para realizar la acción iot-device-tester:LatestIdt. Incluya su AWS firma y utilícela iot-device-tester como nombre del servicio.

Solicitud de API

HostOs — El sistema operativo de la máquina host. Puede elegir entre las siguientes opciones:
  • mac

  • linux

  • windows

TestSuiteType — El tipo de conjunto de pruebas. Elija la opción siguiente:

GGV2— IDT para V2 AWS IoT Greengrass

ProductVersion

(Opcional) La versión del núcleo de Greengrass. El servicio devuelve la última versión compatible de IDT para esa versión del núcleo de Greengrass. Si no especifica esta opción, el servicio devuelve la última versión de IDT.

Respuesta de la API

La respuesta de la API tiene el siguiente formato. DownloadURL incluye un archivo zip.

{ "Success": True or False, "Message": Message, "LatestBk": { "Version": The version of the IDT binary, "TestSuiteVersion": The version of the test suite, "DownloadURL": The URL to download the IDT Bundle, valid for one hour } }

Ejemplos

Puede hacer referencia a los siguientes ejemplos para descargar IDT mediante programación. En estos ejemplos se utilizan las credenciales que almacena en las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY. Para seguir las mejores prácticas recomendadas, no almacene las credenciales en el código.

ejemplo Ejemplo: descarga con cURL 7.75.0 o posterior (Mac y Linux)

Si tiene la versión 7.75.0 o posterior de cURL, puede usar el indicador aws-sigv4 para firmar la solicitud de API. En este ejemplo se usa jq para analizar la URL de descarga de la respuesta.

aviso

El aws-sigv4 indicador requiere que los parámetros de consulta de la solicitud CURL GET estén en el orden de o. HostOs/ProductVersion/TestSuiteType HostOs/TestSuiteType Los órdenes que no se ajusten, provocarán un error al obtener firmas no coincidentes para la cadena canónica de la puerta de enlace de la API.

Si ProductVersion se incluye el parámetro opcional, debe utilizar una versión de producto compatible, tal como se indica en la sección Versiones compatibles de la AWS IoT Device Tester versión AWS IoT Greengrass 2.

  • Sustituya us-west-2 por su. Región de AWS Para obtener la lista de códigos de región, consulte Puntos de conexión regionales.

  • Sustituya linux por el sistema operativo de su máquina host.

  • Sustituya la 2.5.3 por su versión de nucleus. AWS IoT Greengrass

url=$(curl --request GET "https://download.devicetester.iotdevicesecosystem.amazonaws.com/latestidt?HostOs=linux&ProductVersion=2.5.3&TestSuiteType=GGV2" \ --user $AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY \ --aws-sigv4 "aws:amz:us-west-2:iot-device-tester" \ | jq -r '.LatestBk["DownloadURL"]') curl $url --output devicetester.zip
ejemplo Ejemplo: descarga con una versión anterior de cURL (Mac y Linux)

Puede usar el siguiente comando cURL con una AWS firma que firme y calcule. Para obtener más información sobre cómo firmar y calcular una AWS firma, consulta Firmar solicitudes de AWS API.

  • Sustituya linux por el sistema operativo de su máquina host.

  • Sustituya Timestamp por la fecha y la hora, por ejemplo, 20220210T004606Z.

  • Sustituya Date por la fecha, por ejemplo, 20220210.

  • AWSRegionSustitúyala por tu Región de AWS. Para obtener la lista de códigos de región, consulte Puntos de conexión regionales.

  • AWSSignatureSustitúyala por la AWS firma que generes.

curl --location --request GET 'https://download.devicetester.iotdevicesecosystem.amazonaws.com/latestidt?HostOs=linux&TestSuiteType=GGV2' \ --header 'X-Amz-Date: Timestamp \ --header 'Authorization: AWS4-HMAC-SHA256 Credential=$AWS_ACCESS_KEY_ID/Date/AWSRegion/iot-device-tester/aws4_request, SignedHeaders=host;x-amz-date, Signature=AWSSignature'
ejemplo Ejemplo: descarga mediante un script de Python

En este ejemplo se utiliza la biblioteca de solicitudes de Python. Este ejemplo está adaptado del ejemplo de Python para firmar una solicitud de AWS API en la Referencia AWS general.

  • Sustituya us-west-2 por su región. Para obtener la lista de códigos de región, consulte Puntos de conexión regionales.

  • Sustituya linux por el sistema operativo de su máquina host.

# Copyright 2010-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # This file is licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. A copy of the #License is located at # # http://aws.amazon.com/apache2.0/ # # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS # OF ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. # See: http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html # This version makes a GET request and passes the signature # in the Authorization header. import sys, os, base64, datetime, hashlib, hmac import requests # pip install requests # ************* REQUEST VALUES ************* method = 'GET' service = 'iot-device-tester' host = 'download.devicetester.iotdevicesecosystem.amazonaws.com' region = 'us-west-2' endpoint = 'https://download.devicetester.iotdevicesecosystem.amazonaws.com/latestidt' request_parameters = 'HostOs=linux&TestSuiteType=GGV2' # Key derivation functions. See: # http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-python def sign(key, msg): return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest() def getSignatureKey(key, dateStamp, regionName, serviceName): kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp) kRegion = sign(kDate, regionName) kService = sign(kRegion, serviceName) kSigning = sign(kService, 'aws4_request') return kSigning # Read AWS access key from env. variables or configuration file. Best practice is NOT # to embed credentials in code. access_key = os.environ.get('AWS_ACCESS_KEY_ID') secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY') if access_key is None or secret_key is None: print('No access key is available.') sys.exit() # Create a date for headers and the credential string t = datetime.datetime.utcnow() amzdate = t.strftime('%Y%m%dT%H%M%SZ') datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope # ************* TASK 1: CREATE A CANONICAL REQUEST ************* # http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html # Step 1 is to define the verb (GET, POST, etc.)--already done. # Step 2: Create canonical URI--the part of the URI from domain to query # string (use '/' if no path) canonical_uri = '/latestidt' # Step 3: Create the canonical query string. In this example (a GET request), # request parameters are in the query string. Query string values must # be URL-encoded (space=%20). The parameters must be sorted by name. # For this example, the query string is pre-formatted in the request_parameters variable. canonical_querystring = request_parameters # Step 4: Create the canonical headers and signed headers. Header names # must be trimmed and lowercase, and sorted in code point order from # low to high. Note that there is a trailing \n. canonical_headers = 'host:' + host + '\n' + 'x-amz-date:' + amzdate + '\n' # Step 5: Create the list of signed headers. This lists the headers # in the canonical_headers list, delimited with ";" and in alpha order. # Note: The request can include any headers; canonical_headers and # signed_headers lists those that you want to be included in the # hash of the request. "Host" and "x-amz-date" are always required. signed_headers = 'host;x-amz-date' # Step 6: Create payload hash (hash of the request body content). For GET # requests, the payload is an empty string (""). payload_hash = hashlib.sha256(('').encode('utf-8')).hexdigest() # Step 7: Combine elements to create canonical request canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash # ************* TASK 2: CREATE THE STRING TO SIGN************* # Match the algorithm to the hashing algorithm you use, either SHA-1 or # SHA-256 (recommended) algorithm = 'AWS4-HMAC-SHA256' credential_scope = datestamp + '/' + region + '/' + service + '/' + 'aws4_request' string_to_sign = algorithm + '\n' + amzdate + '\n' + credential_scope + '\n' + hashlib.sha256(canonical_request.encode('utf-8')).hexdigest() # ************* TASK 3: CALCULATE THE SIGNATURE ************* # Create the signing key using the function defined above. signing_key = getSignatureKey(secret_key, datestamp, region, service) # Sign the string_to_sign using the signing_key signature = hmac.new(signing_key, (string_to_sign).encode('utf-8'), hashlib.sha256).hexdigest() # ************* TASK 4: ADD SIGNING INFORMATION TO THE REQUEST ************* # The signing information can be either in a query string value or in # a header named Authorization. This code shows how to use a header. # Create authorization header and add to request headers authorization_header = algorithm + ' ' + 'Credential=' + access_key + '/' + credential_scope + ', ' + 'SignedHeaders=' + signed_headers + ', ' + 'Signature=' + signature # The request can include any headers, but MUST include "host", "x-amz-date", # and (for this scenario) "Authorization". "host" and "x-amz-date" must # be included in the canonical_headers and signed_headers, as noted # earlier. Order here is not significant. # Python note: The 'host' header is added automatically by the Python 'requests' library. headers = {'x-amz-date':amzdate, 'Authorization':authorization_header} # ************* SEND THE REQUEST ************* request_url = endpoint + '?' + canonical_querystring print('\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++') print('Request URL = ' + request_url) response = requests.get(request_url, headers=headers) print('\nRESPONSE++++++++++++++++++++++++++++++++++++') print('Response code: %d\n' % response.status_code) print(response.text) download_url = response.json()["LatestBk"]["DownloadURL"] r = requests.get(download_url) open('devicetester.zip', 'wb').write(r.content)