Descarga de IDT para AWS IoT Greengrass V2 - 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.

Descarga de IDT para AWS IoT Greengrass V2

En este tema, se describen las opciones para descargar AWS IoT Device Tester para AWS IoT Greengrass V2. 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, acepta el Acuerdo de licencia de AWS IoT Device Tester.

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 muestran las versiones compatibles de IDT para AWS IoT Greengrass V2. Como práctica recomendada, le recomendamos que utilice la versión más reciente de IDT para la versión 2 de AWS IoT Greengrass que sea compatible con la versión de destino de la versión 2 de AWS IoT Greengrass. Los nuevos lanzamientos de AWS IoT Greengrass podrían requerir la descarga de una nueva versión de IDT para la versión 2 de AWS IoT Greengrass. Recibirá una notificación cuando inicie una ejecución de prueba si IDT para AWS IoT Greengrass V2 no es compatible con la versión de AWS IoT Greengrass que está utilizando.

Versión 4.9.4 de IDT para AWS IoT Greengrass
Versiones de AWS IoT Greengrass compatibles:
Descargas de software de IDT:
  • Versión 4.9.4 de IDT con el conjunto de pruebas GGV2Q_2.5.4 para Linux

  • Versión 4.9.4 de IDT con el conjunto de pruebas GGV2Q_2.5.4 para macOS

  • Versión 4.9.4 de IDT con el conjunto de pruebas GGV2Q_2.5.4 para Windows

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

  • Elimina los grupos de pruebas del administrador de flujos y machine learning.

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

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

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 firma de AWS y use 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 AWS IoT Greengrass V2

Versión del producto

(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 indicador aws-sigv4 requiere que los parámetros de consulta de la solicitud CURL GET estén en el orden de HostOs/ProductVersion/TestSuiteType o 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 se incluye el parámetro opcional ProductVersion, debe usar una versión de producto compatible, tal como se describe en Versiones compatibles de AWS IoT Device Tester para AWS IoT Greengrass V2.

  • 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 2.5.3 por su versión del núcleo de 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 firma de AWS que firme y calcule. Para obtener más información sobre cómo firmar y calcular una firma de AWS, consulte Firma de solicitudes de API de AWS.

  • 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.

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

  • Sustituya AWSSignature por la firma de AWS que haya generado.

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 API de AWS en la Referencia general de AWS.

  • 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)