동적 사물 그룹 - AWS IoT Core

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

동적 사물 그룹

동적 사물 그룹은 레지스트리의 특정 검색 쿼리에서 생성됩니다. 디바이스 연결, 디바이스 섀도우 생성, AWS IoT Device Defender 위반 데이터와 같은 검색 쿼리 파라미터가 이를 지원합니다. 동적 사물 그룹을 사용하려면 디바이스 데이터를 인덱싱, 검색 및 집계하려면 플릿 인덱싱이 활성화되어 있어야 합니다. 플릿 인덱싱 검색 쿼리를 사용하여 동적 사물 그룹의 사물을 생성하기 전에 미리 볼 수 있습니다. 자세한 내용은 플릿 인덱싱쿼리 구문 섹션을 참조하세요.

참고

동적 사물 그룹 실행은 레지스트리 실행에서 측정됩니다. 자세한 내용은 AWS IoT Core 측정 추가 정보를 참조하세요.

동적 사물 그룹은 정적 사물 그룹과 다음과 같은 차이가 있습니다.

  • 사물 멤버십이 명시적으로 정의되지 않았습니다. 동적 사물 그룹을 생성하려면 검색 쿼리 문자열을 정의하여 그룹 구성원을 결정하십시오.

  • 동적 사물 그룹은 계층 구조의 일부일 수 없습니다.

  • 동적 사물 그룹에는 정책을 적용할 수 없습니다.

  • 동적 사물 그룹은 일련의 다른 명령을 사용해 생성, 업데이트 및 삭제합니다. 다른 모든 작업의 경우 두 가지 유형의 사물 그룹에 동일한 명령을 사용합니다.

  • 각 동적 그룹의 수는 AWS 계정 제한되어 있습니다.

  • 사물 그룹 이름에 개인 식별 정보를 사용하지 마십시오. 사물 그룹 이름은 암호화되지 않은 통신 및 보고서에 나타날 수 있습니다.

정적 사물 그룹에 대한 자세한 내용은 정적 사물 그룹 단원을 참조하세요.

동적 사물 그룹의 사용 사례

다음 사용 사례에 동적 사물 그룹을 사용할 수 있습니다.

동적 사물 그룹을 작업 대상으로 지정

동적 사물 그룹을 대상으로 사용하여 연속 작업을 생성하면 원하는 기준을 충족하는 장치를 자동으로 대상으로 지정할 수 있습니다. 기준은 연결 상태 또는 소프트웨어 버전 또는 모델과 같은 레지스트리 또는 섀도우에 저장된 모든 기준일 수 있습니다. 사물이 동적 사물 그룹에 나타나지 않으면 해당 작업으로부터 작업 문서를 수신하지 않습니다.

예를 들어, 업데이트 프로세스 중에 중단될 위험을 최소화하기 위해 디바이스 플릿에 펌웨어 업데이트가 필요한데 배터리 수명이 80% 이상인 디바이스에서만 펌웨어를 업데이트하려는 경우를 예로 들 수 있습니다. 배터리 수명이 80% 를 초과하는 장치만 포함하는 PercentBatteryLife 80이라는 동적 사물 그룹을 만들어 작업 대상으로 사용할 수 있습니다. 배터리 수명 기준을 충족하는 장치만 펌웨어 업데이트를 받습니다. 디바이스가 80% 배터리 수명 기준에 도달하면 동적 사물 그룹에 자동으로 추가되고 펌웨어 업데이트를 받게 됩니다.

또한 펌웨어 또는 운영 체제가 다른 여러 장치 모델이 있을 수 있으므로 새 소프트웨어 업데이트 버전도 달라야 합니다. 이는 연속 작업이 있는 동적 그룹의 가장 일반적인 사용 사례로, 각 장치 모델, 펌웨어 및 OS 조합에 대해 동적 그룹을 만들 수 있습니다. 그런 다음 정의된 기준에 따라 장치가 자동으로 이러한 그룹의 구성원이 되므로 이러한 각 동적 그룹에 연속 작업을 설정하여 소프트웨어 업데이트를 푸시할 수 있습니다.

사물 그룹을 작업 대상으로 지정하는 방법에 대한 자세한 내용은 을 참조하십시오 CreateJob.

동적 그룹 구성원 변경을 사용하여 원하는 작업을 수행할 수 있습니다.

장치가 동적 사물 그룹에 추가되거나 동적 사물 그룹에서 제거될 때마다 레지스트리 이벤트 업데이트의 일부로 MQTT 주제에 알림이 전송됩니다. 동적 그룹 구성원 업데이트를 기반으로 AWS 서비스와 상호 작용하도록 AWS IoT Core 규칙을 구성하고 원하는 작업을 수행할 수 있습니다. 예제 작업에는 쓰기 Amazon DynamoDB, Lambda 함수 호출 또는 Amazon SNS에 알림 전송 등이 포함됩니다.

자동 위반 탐지를 위해 동적 사물 그룹에 디바이스를 추가합니다.

AWS IoT Device Defender Detect 고객은 동적 사물 그룹에 보안 프로필을 정의할 수 있습니다. 동적 사물 그룹의 디바이스는 그룹에 정의된 보안 프로필에 의해 위반 여부를 자동으로 탐지합니다.

동적 사물 그룹에 로그 수준을 설정하여 세분화된 로깅을 통해 장치를 관찰할 수 있습니다.

동적 사물 그룹에 로그 수준을 지정할 수 있습니다. 이는 특정 기준을 충족하는 장치의 로깅 수준 및 세부 정보를 사용자 지정하려는 경우에만 유용합니다. 예를 들어 특정 펌웨어 버전을 사용하는 장치가 특정 규칙의 게시된 주제에 대한 오류를 일으키는 것으로 의심되는 경우 세부 로깅을 설정하여 이러한 문제를 디버깅하는 것이 좋습니다. 이 경우 이 펌웨어 버전이 있는 모든 장치에 대해 동적 그룹을 만들 수 있습니다. 이 동적 그룹은 레지스트리 속성이나 디바이스 섀도우에 저장되어 있다고 가정합니다. 그런 다음 로깅 대상을 이 동적 사물 그룹으로 정의하여 디버그 수준을 설정할 수 있습니다. 세분화된 로깅에 대한 자세한 내용은 로그를 사용한 모니터링을 참조하십시오. AWS IoT CloudWatch 특정 사물 그룹의 로깅 수준을 지정하는 방법에 대한 자세한 내용은 리소스별 로그인 구성을 참조하십시오. AWS IoT

동적 사물 그룹 생성

CreateDynamicThingGroup 명령을 사용하여 동적 사물 그룹을 생성합니다. 80 PercentBatteryLife 시나리오에 대한 동적 사물 그룹을 생성하려면 create-dynamic-thing-group CLI 명령을 사용합니다.

$ aws iot create-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --query-string "attributes.batterylife80"
참고

동적 사물 그룹 이름에 개인 식별 정보를 사용하지 마십시오.

CreateDynamicThingGroup명령은 응답을 반환합니다. 응답에는 사물 그룹의 인덱스 이름, 쿼리 문자열, 쿼리 버전, 사물 그룹 이름, 사물 그룹 ID, Amazon 리소스 이름 (ARN) 이 포함됩니다.

{ "indexName": "AWS_Things", "queryVersion": "2017-09-30", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "thingGroupId": "abcdefgh12345678ijklmnop12345678qrstuvwx" }

동적 사물 그룹은 한 번에 생성되지 않습니다. 동적 사물 그룹 채우기를 완료하는 데에는 시간이 걸립니다. 동적 사물 그룹을 생성하면 그룹 상태가 로 설정됩니다BUILDING. 채우기가 완료되면 상태가 ACTIVE로 바뀝니다. 동적 사물 그룹의 상태를 확인하려면 DescribeThing그룹 명령을 사용합니다.

동적 사물 그룹 설명

다음과 같이 DescribeThingGroup 명령을 사용하여 동적 사물 그룹에 대한 정보를 가져올 수 있습니다.

$ aws iot describe-thing-group --thing-group-name "80PercentBatteryLife"

DescribeThingGroup 명령은 다음과 같이 지정한 그룹에 대한 정보를 반환합니다.

{ "status": "ACTIVE", "indexName": "AWS_Things", "thingGroupName": "80PercentBatteryLife", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/80PercentBatteryLife", "queryString": "attributes.batterylife80\n", "version": 1, "thingGroupMetadata": { "creationDate": 1548716921.289 }, "thingGroupProperties": {}, "queryVersion": "2017-09-30", "thingGroupId": "84dd9b5b-2b98-4c65-84e4-be0e1ecf4fd8" }

동적 사물 그룹에서 실행하면 DescribeThingGroup 동적 사물 그룹과 관련된 속성이 반환됩니다. 반환 속성의 예로는 QueryString 및 상태가 있습니다.

동적 사물 그룹의 상태 값은 다음과 같습니다.

ACTIVE

동적 사물 그룹을 사용할 준비가 되었습니다.

BUILDING

동적 사물 그룹이 생성 중이고 사물 멤버십이 처리 중입니다.

REBUILDING

그룹의 검색 쿼리 조정 후 동적 사물 그룹의 멤버십을 업데이트하는 중입니다.

참고

동적 사물 그룹을 생성한 후에는 상태에 관계없이 사용하십시오. ACTIVE 상태인 동적 사물 그룹에만 동적 사물 그룹에 대한 검색 쿼리와 일치하는 사물이 모두 포함됩니다. BUILDINGREBUILDING 상태인 동적 사물 그룹에는 검색 쿼리와 일치하는 사물 중 일부가 포함되지 않을 수 있습니다.

동적 사물 그룹 업데이트

그룹의 검색 쿼리를 포함한 동적 사물 그룹의 속성은 UpdateDynamicThingGroup 명령을 사용해 업데이트합니다. 다음 명령은 두 속성을 업데이트합니다. 하나는 사물 그룹 설명이고, 다른 하나는 멤버십 기준을 배터리 수명 > 85로 변경하는 쿼리 문자열입니다.

$ aws iot update-dynamic-thing-group --thing-group-name "80PercentBatteryLife" --thing-group-properties "thingGroupDescription=\"This thing group contains devices with a battery life greater than 85 percent.\"" --query-string "attributes.batterylife85"

UpdateDynamicThingGroup 명령은 업데이트 이후 그룹의 버전 번호가 포함된 응답을 반환합니다.

{ "version": 2 }

동적 사물 그룹의 업데이트는 한 번에 발생하지 않습니다. 동적 사물 그룹 채우기를 완료하는 데에는 시간이 걸립니다. 동적 사물 그룹을 업데이트하면 그룹이 멤버십을 업데이트하는 REBUILDING 동안 그룹 상태가 로 변경됩니다. 채우기가 완료되면 상태가 ACTIVE로 바뀝니다. 동적 사물 그룹의 상태를 확인하려면 DescribeThing그룹 명령을 사용합니다.

동적 사물 그룹 삭제

동적 사물 그룹은 DeleteDynamicThingGroup 명령을 사용하여 삭제합니다.

$ aws iot delete-dynamic-thing-group --thing-group-name "80PercentBatteryLife"

DeleteDynamicThingGroup 명령은 출력을 생성하지 않습니다.

사물이 속한 그룹을 나열하는 명령(예: ListGroupsForThing)이 클라우드 레코드가 업데이트되는 동안에도 계속해서 그룹을 표시할 수 있는지 살펴봐야 합니다.

동적 및 정적 사물 그룹 제한

동적 사물 그룹과 정적 사물 그룹은 다음과 같은 제한을 공유합니다.

  • 사물 그룹이 가질 수 있는 속성의 수는 제한되어 있습니다.

  • 사물이 속할 수 있는 그룹의 수는 제한되어 있습니다.

  • 사물 그룹의 이름은 바꿀 수 없습니다.

  • 사물 그룹 이름은 û, é, ñ 같은 국제 문자를 포함할 수 없습니다.

동적 사물 그룹 제한

동적 사물 그룹에는 다음과 같은 제한이 있습니다.

플릿 인덱싱

플릿 인덱싱 서비스를 활성화하면 여러 디바이스에서 검색 쿼리를 수행할 수 있습니다. 플릿 인덱싱 백필이 완료된 후 동적 사물 그룹을 생성하고 관리할 수 있습니다. 백필 프로세스의 완료 시간은 에 등록된 디바이스 플릿의 크기에 직접적인 영향을 받습니다. AWS 클라우드동적 사물 그룹에 대해 플릿 인덱싱 서비스를 활성화하면 동적 사물 그룹을 모두 삭제해야 이 서비스를 비활성화할 수 있습니다.

참고

플릿 인덱스를 쿼리할 권한이 있는 경우 전체 플릿에서 사물 데이터에 액세스할 수 있습니다.

동적 사물 그룹의 수는 제한되어 있습니다.

동적 사물 그룹의 수는 제한되어 있습니다.

성공한 명령은 오류를 로깅할 수 있습니다.

동적 사물 그룹을 생성하거나 업데이트할 때 동적 사물 그룹에 포함되기는 하지만 추가되지 않는 항목이 있을 수 있습니다. 이 시나리오로 인해 오류를 기록하고 지표를 생성하는 동안 생성 또는 업데이트 명령이 성공적으로 실행될 수 있습니다. AddThingToDynamicThingGroupsFailed 단일 지표가 여러 로그 항목을 나타낼 수 있습니다.

다음과 같은 상황이 발생하면 CloudWatch 로그에 오류 로그 항목이 생성됩니다.

  • 적격 사물은 동적 사물 그룹에 추가할 수 없습니다.

  • 동적 사물 그룹에서 사물을 제거하여 다른 그룹에 추가합니다.

사물을 동적 사물 그룹에 추가할 수 있게 되면 다음 사항을 고려하십시오.

  • 사물이 이미 가능한 많은 그룹에 있습니까? (제한 참조)

    • 아니오: 사물이 동적 사물 그룹에 추가됩니다.

    • 예: 사물이 동적 사물 그룹의 멤버입니까?

      • 아니오: 사물을 동적 사물 그룹에 추가할 수 없고, 오류가 로깅되며 AddThingToDynamicThingGroupsFailed 지표가 생성됩니다.

      • 예: 참가할 동적 사물 그룹이 사물이 이미 멤버인 동적 사물 그룹보다 오래되었습니까?

        • 아니오: 사물을 동적 사물 그룹에 추가할 수 없고, 오류가 로깅되며 AddThingToDynamicThingGroupsFailed 지표가 생성됩니다.

        • 예: 가장 최근의 동적 사물 그룹에서 사물을 제거하고, 오류를 기록하고, 동적 사물 그룹에 사물을 추가합니다. 이렇게 하면 사물이 제거된 동적 사물 그룹에 대한 오류 및 AddThingToDynamicThingGroupsFailed 지표가 생성됩니다.

동적 사물 그룹의 사물이 더 이상 검색 쿼리를 충족하지 않는 경우 해당 사물은 동적 사물 그룹에서 제거됩니다. 마찬가지로, 동적 사물 그룹의 검색 쿼리를 충족하도록 사물이 업데이트되면 앞서 설명한 대로 해당 사물이 그룹에 추가됩니다. 이러한 추가 및 제거는 정상이며 오류 로그 항목을 생성하지 않습니다.

overrideDynamicGroups를 활성화하면 정적 그룹이 동적 그룹보다 우선합니다.

사물이 속할 수 있는 그룹의 수는 제한되어 있습니다. AddThingToThing그룹 또는 UpdateThingGroupsFor사물 명령을 사용하여 사물 멤버십을 업데이트할 때 --overrideDynamicGroups 매개 변수를 추가하면 정적 사물 그룹이 동적 사물 그룹보다 우선 순위가 부여됩니다.

정적 사물 그룹에 사물을 추가할 때는 다음 사항을 고려하십시오.

  • 사물이 이미 최대 그룹 수에 속해 있습니까?

    • 아니오: 사물이 정적 사물 그룹에 추가됩니다.

    • 예: 사물이 동적 그룹에 있습니까?

      • 아니요(NO): 사물을 사물 그룹에 추가할 수 없습니다. 이 명령은 예외를 발생시킵니다.

      • 예: --overrideDynamicGroups가 활성화되었습니까?

        • 아니요(NO): 사물을 사물 그룹에 추가할 수 없습니다. 이 명령은 예외를 발생시킵니다.

        • 예: 가장 최근에 생성된 동적 사물 그룹에서 사물이 제거되고 오류가 로깅되며 사물이 제거된 동적 사물 그룹에 대한 AddThingToDynamicThingGroupsFailed 지표가 생성됩니다. 그런 다음 사물이 정적 사물 그룹에 추가됩니다.

이전 동적 사물 그룹이 최신 사물 그룹보다 우선합니다.

사물이 속할 수 있는 그룹의 수는 제한되어 있습니다. 생성 또는 업데이트 작업으로 사물에 대한 추가 그룹 자격이 생성되고 사물이 그룹 한도에 도달하면 다른 동적 사물 그룹에서 제거되어 이 추가가 가능하도록 할 수 있습니다. 발생 방법에 대한 자세한 내용은 성공한 명령은 오류를 로깅할 수 있습니다.overrideDynamicGroups를 활성화하면 정적 그룹이 동적 그룹보다 우선합니다.에서 예제를 참조하세요.

동적 사물 그룹에서 사물이 제거되면 오류가 기록되고 이벤트가 발생합니다.

정책을 동적 항목 그룹에 적용할 수 없습니다.

동적 사물 그룹에 정책을 적용하려고 하면 예외가 생성됩니다.

동적 사물 그룹 멤버십은 일관성을 가짐

레지스트리에 대해서는 사물의 최종 상태만 평가됩니다. 상태가 빠르게 업데이트되는 경우에는 중간 상태를 건너뛸 수 있습니다. 중간 상태에 따라 구성원 자격이 달라지는 동적 사물 그룹과 규칙 또는 작업을 연결하지 마십시오.