IDT 컨텍스트 사용 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

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

IDT 컨텍스트 사용

IDT가 테스트 도구 모음을 실행할 때, 테스트 도구 모음은 각 테스트 실행 방식을 결정하는 데 사용할 수 있는 데이터 세트에 액세스할 수 있습니다. 이 데이터를 IDT 컨텍스트라고 합니다. 예를 들어 테스트 러너가 userdata.json 파일로 제공한 사용자 데이터 구성은 IDT 컨텍스트의 테스트 도구 모음에서 사용할 수 있도록 만들어졌습니다.

IDT 컨텍스트는 읽기 전용 JSON 문서로 간주할 수 있습니다. 테스트 도구 모음은 객체, 배열, 숫자 등과 같은 표준 JSON 데이터 유형을 사용하여 컨텍스트에서 데이터를 검색하고, 컨텍스트에 데이터를 쓸 수 있습니다.

컨텍스트 스키마

IDT 컨텍스트는 다음 형식을 사용합니다.

{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config

config.json 파일의 정보. config 필드에는 다음과 같은 추가 필드도 포함됩니다.

config.timeoutMultiplier

테스트 도구 모음에서 사용하는 모든 시간 제한 값의 승수입니다. 이 값은 IDT CLI에서 테스트 러너에 의해 지정됩니다. 기본값은 1입니다.

device

테스트 실행을 위해 선택한 디바이스에 대한 정보. 이 정보는 선택한 디바이스의 device.json 파일에 있는 devices 배열 요소와 동일합니다.

devicePool

테스트 실행을 위해 선택한 디바이스 풀에 대한 정보. 이 정보는 선택한 디바이스 풀에 대해 device.json 파일에 정의된 최상위 디바이스 풀 배열 요소와 동일합니다.

resource

resource.json 파일의 리소스 디바이스에 대한 정보.

resource.devices

이 정보는 resource.json 파일에 정의된 devices 배열과 동일합니다. 각 devices 요소에는 다음과 같은 추가 필드가 포함됩니다.

resource.device.name

리소스 디바이스의 이름입니다. 이 값은 test.json 파일의 requiredResource.name 값으로 설정됩니다.

testData.awsCredentials

테스트에서 AWS 클라우드에 연결하는 데 사용하는 AWS 보안 인증입니다. 이 정보는 config.json 파일에서 가져옵니다.

testData.logFilePath

테스트 사례가 로그 메시지를 기록하는 로그 파일의 경로입니다. 이 파일이 존재하지 않는 경우 테스트 도구 모음에서 해당 파일을 생성합니다.

userData

테스트 러너가 userdata.json 파일에서 제공한 정보.

컨텍스트에서 데이터 액세스

JSON 파일 및 GetContextValueGetContextString API로 실행 가능한 텍스트 파일에서 JSONPath 표기법을 사용하여 컨텍스트를 쿼리할 수 있습니다. IDT 컨텍스트에 액세스하기 위한 JSONPath 문자열의 구문은 다음과 같이 다양합니다.

  • suite.json와(과) test.json에서는 {{query}}을(를) 사용합니다. 즉, 루트 요소 $.을(를) 사용하여 표현식을 시작하지 마십시오.

  • statemachine.json에서는 {{$.query}}을(를) 사용합니다.

  • API 명령에서는 명령에 따라 query 또는 {{$.query}}을(를) 사용합니다. 자세한 내용을 알아보려면 SDK에서 인라인 설명서를 참조하세요.

다음 표에서는 일반적인 JSONPath 표현식의 연산자를 설명합니다.

Operator Description
$ The root element. Because the top-level context value for IDT is an object, you will typically use $. to start your queries.
.childName Accesses the child element with name childName from an object. If applied to an array, yields a new array with this operator applied to each element. The element name is case sensitive. For example, the query to access the awsRegion value in the config object is $.config.awsRegion.
[start:end] Filters elements from an array, retrieving items beginning from the 시작 index and going up to the end index, both inclusive.
[index1, index2, ... , indexN] Filters elements from an array, retrieving items from only the specified indices.
[?(expr)] Filters elements from an array using the expr expression. This expression must evaluate to a boolean value.

필터 표현식을 만들려면 다음 구문을 사용하십시오.

<jsonpath> | <value> operator <jsonpath> | <value>

이 구문에서:

  • jsonpath은(는) 표준 JSON 구문을 사용하는 JSONPath입니다.

  • value은(는) 표준 JSON 구문을 사용하는 모든 사용자 지정 값입니다.

  • operator는 다음 작업 중 하나를 호출합니다.

    • < (미만)

    • <= (이하)

    • == (같음)

      표현식의 JSONPath 또는 값이 배열, 부울 또는 객체 값인 경우 이것이 사용할 수 있는 유일하게 지원되는 바이너리 연산자입니다.

    • >= (이상)

    • > (초과)

    • =~(정규 표현식 일치). 필터 표현식에서 이 연산자를 사용하려면 표현식 왼쪽의 JSONPath 또는 값이 문자열로 평가되어야 하고, 오른쪽은 RE2 구문을 따르는 패턴 값이어야 합니다.

{{query}} 형식의 JSONPath 쿼리를 test.json 파일의 argsenvironmentVariables 필드, suite.json 파일의 environmentVariables 필드 내에서 자리 표시자 문자열로 사용할 수 있습니다. IDT는 컨텍스트 조회를 수행하고 쿼리의 평가된 값으로 필드를 채웁니다. 예를 들어 suite.json 파일에서 자리 표시자 문자열을 사용하여 각 테스트 사례에 따라 변경되는 환경 변수 값을 지정할 수 있으며, IDT는 환경 변수를 각 테스트 사례에 맞는 값으로 채웁니다. 하지만 test.jsonsuite.json 파일에서 자리 표시자 문자열을 사용하는 경우 쿼리에 다음 사항을 고려해야 합니다.

  • 쿼리에서 나타나는 devicePool 키는 모두 소문자로 입력해야 합니다. 즉, devicepool을(를) 대신 사용하십시오.

  • 배열의 경우 문자열 배열만 사용할 수 있습니다. 또한 배열은 비표준 item1, item2,...,itemN 형식을 사용합니다. 배열에 요소가 하나만 포함된 경우 이 배열은 item(으)로 직렬화되어 문자열 필드와 구분할 수 없게 됩니다.

  • 자리 표시자를 사용하여 컨텍스트에서 객체를 검색할 수 없습니다.

이러한 고려 사항 때문에 가능하면 test.jsonsuite.json 파일의 자리 표시자 문자열 대신 API를 사용하여 테스트 로직의 컨텍스트에 액세스하는 것이 좋습니다. 하지만 경우에 따라 JSONPath 자리 표시자를 사용하여 단일 문자열을 가져와서 환경 변수로 설정하는 것이 더 편리할 수 있습니다.