V2용 AWS IoT Greengrass IDT 다운로드 - AWS IoT Greengrass

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

V2용 AWS IoT Greengrass IDT 다운로드

이 항목에서는 AWS IoT Device Tester AWS IoT Greengrass V2용 다운로드 옵션에 대해 설명합니다. 다음 소프트웨어 다운로드 링크 중 하나를 사용하거나 지침에 따라 프로그래밍 방식으로 IDT를 다운로드할 수 있습니다.

소프트웨어를 다운로드하면 AWS IoT Device Tester 사용권 계약에 동의하는 것으로 간주됩니다.

참고

여러 사용자가 NFS 디렉터리 또는 Windows 네트워크 공유 폴더와 같은 공유 위치에서 IDT를 실행하는 것은 지원되지 않습니다. 로컬 드라이브에 IDT 패키지의 압축을 풀고 로컬 워크스테이션에서 IDT 바이너리를 실행하는 것이 좋습니다.

수동으로 IDT 다운로드

이 항목에는 AWS IoT Greengrass V2용 IDT의 지원되는 버전이 나와 있습니다. 대상 V2 버전을 지원하는 최신 버전의 AWS IoT Greengrass V2용 IDT를 사용하는 것이 가장 좋습니다. AWS IoT Greengrass 의 새 릴리스를 사용하려면 V2용 AWS IoT Greengrass IDT의 새 버전을 다운로드해야 할 AWS IoT Greengrass 수 있습니다. AWS IoT Greengrass V2용 IDT가 사용 중인 버전과 호환되지 않는 경우 테스트 실행을 시작할 때 알림을 받게 됩니다. AWS IoT Greengrass

IDT v4.9.4에 대한 AWS IoT Greengrass
지원되는 AWS IoT Greengrass 버전:
IDT 소프트웨어 다운로드:
릴리스 정보:
  • AWS IoT Greengrass 코어 소프트웨어 버전 2.12.0, 2.11.0, 2.10.0 및 2.9.5를 실행하는 장치에 대한 장치 검증 및 검증을 활성화합니다.

  • 스트림 관리자 및 기계 학습 테스트 그룹을 제거합니다.

추가 참고 사항
  • 디바이스에서 HSM을 사용하고 nucleus 2.10.x를 사용하는 경우 Greengrass Nucleus 버전 2.11.0 이상으로 마이그레이션하십시오.

테스트 제품군 버전:
GGV2Q_2.5.4
  • 2024.05.03이 출시되었습니다.

프로그래밍 방식으로 IDT 다운로드

IDT는 프로그래밍 방식으로 IDT를 다운로드할 수 있는 URL을 검색하는 데 사용할 수 있는 API 작업을 제공합니다. 또한 이 API 작업을 사용하여 IDT가 최신 버전인지 확인할 수 있습니다. 이 API 작업에는 다음과 같은 엔드포인트가 있습니다.

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

이 API 작업을 직접 호출하려면 iot-device-tester:LatestIdt 작업을 수행할 수 있는 권한이 있어야 합니다. AWS 서명을 포함하고 서비스 iot-device-tester 이름으로 사용하십시오.

API 요청

HostOs — 호스트 컴퓨터의 운영 체제. 다음 옵션 중 하나를 선택합니다.
  • mac

  • linux

  • windows

TestSuiteType — 테스트 스위트의 유형. 다음 옵션을 선택합니다.

GGV2— V2용 AWS IoT Greengrass IDT

ProductVersion

(선택 사항) 그린그래스 핵의 버전. 이 서비스는 해당 버전의 Greengrass 핵에 대해 호환되는 최신 버전의 IDT를 반환합니다. 이 옵션을 지정하지 않으면 서비스가 최신 버전의 IDT를 반환합니다.

API 응답

API 응답은 다음 형식을 갖습니다. DownloadURL에는 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 } }

예제

다음 예제를 참조하여 프로그래밍 방식으로 IDT를 다운로드할 수 있습니다. 이들 예제는 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 환경 변수에 저장한 보안 인증 정보를 사용합니다. 보안 모범 사례를 따르려면 코드에 보안 인증 정보를 저장하지 마세요.

예제: cURL 버전 7.75.0 이상을 사용하여 다운로드(Mac 및 Linux)

cURL 버전 7.75.0 이상을 사용하는 경우 aws-sigv4 플래그를 사용하여 API 요청에 서명할 수 있습니다. 이 예제에서는 jq를 사용하여 응답에서 다운로드 URL을 파싱합니다.

주의

aws-sigv4플래그를 사용하려면 curl GET 요청의 쿼리 파라미터가 또는 순서여야 합니다. HostOs/ProductVersion/TestSuiteType HostOs/TestSuiteType 이 순서를 준수하지 않으면 API Gateway에서 표준 문자열에 대해 일치하지 않는 서명을 가져오는 오류가 발생합니다.

선택적 매개 ProductVersion 변수가 포함된 경우 AWS IoT Device Tester V2용 AWS IoT Greengrass 지원 버전에 설명된 대로 지원되는 제품 버전을 사용해야 합니다.

  • us-west-2를 귀하의 것으로 교체하십시오. AWS 리전리전 코드의 목록은 리전 엔드포인트를 참조하세요.

  • linux를 호스트 시스템의 운영 체제로 바꿉니다.

  • 2.5.3을 현재 사용 중인 핵 버전으로 바꾸십시오. 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
예제: 이전 버전의 cURL을 사용하여 다운로드(Mac 및 Linux)

AWS 서명하고 계산한 서명과 함께 다음 curl 명령을 사용할 수 있습니다. AWS 서명을 서명 및 계산하는 방법에 대한 자세한 내용은 AWS API 요청 서명을 참조하십시오.

  • linux를 호스트 시스템의 운영 체제로 바꿉니다.

  • Timestamp를 날짜 및 시간(예: 20220210T004606Z)으로 바꿉니다.

  • Date를 날짜(예: 20220210)로 바꿉니다.

  • 내 것으로 AWSRegion바꾸십시오 AWS 리전. 리전 코드의 목록은 리전 엔드포인트를 참조하세요.

  • 생성한 AWSSignature AWS 서명으로 바꾸십시오.

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'
예제: Python 스크립트를 사용하여 다운로드

이 예제에서는 Python 요청 라이브러리를 사용합니다. 이 예제는 Python 예제에서 AWS 일반 참조의 AWS API 요청에 서명하도록 수정되었습니다.

  • us-west-2를 해당 리전으로 바꿉니다. 리전 코드의 목록은 리전 엔드포인트를 참조하세요.

  • linux를 호스트 시스템의 운영 체제로 바꿉니다.

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