AWS IoT Greengrass 코어에 AWS IoT Greengrass 그룹 배포 - 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 것이 좋습니다.

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

AWS IoT Greengrass 코어에 AWS IoT Greengrass 그룹 배포

AWS IoT Greengrass 그룹은 엣지 환경에서 엔터티를 구성하는 데 사용됩니다. 그룹을 사용해 그룹의 엔터티가 서로 그리고 AWS 클라우드와 상호 작용할 수 있는 방법을 제어합니다. 예를 들어 로컬 실행에는 그룹의 Lambda 함수만 배포되며, 그룹에 있는 디바이스만 로컬 MQTT 서버를 사용하여 통신할 수 있습니다.

그룹에는 AWS IoT Greengrass 코어 소프트웨어를 실행하는 AWS IoT 디바이스인 코어가 포함되어야 합니다. 코어는 엣지 게이트웨이 역할을 하며, 엣지 환경에서 AWS IoT Core 기능을 제공합니다. 비즈니스 요구에 맞게 그룹에 다음 엔터티를 추가할 수도 있습니다.

  • 클라이언트 디바이스. AWS IoT 레지스트리에서 사물로 표시됩니다. 이 디바이스는 FreeRTOS를 실행하거나 AWS IoT 디바이스 SDK 또는 AWS IoT Greengrass Discovery API를 사용하여 코어에 대한 연결 정보를 가져옵니다. 그룹 구성원인 클라이언트 디바이스만 코어에 연결할 수 있습니다.

  • Lambda 함수. 코어에서 코드를 실행하는 사용자 정의된 서버리스 애플리케이션입니다. Lambda 함수는 AWS Lambda에서 작성되고 Greengrass 그룹에서 참조됩니다. 자세한 설명은 AWS IoT Greengrass 코어에서 Lambda 함수 실행 섹션을 참조하세요.

  • 커넥터. 코어에서 코드를 실행하는 미리 정의된 서버리스 애플리케이션입니다. 커넥터는 로컬 인프라, 디바이스 프로토콜, AWS, 기타 클라우드 서비스와 기본적으로 통합하는 기능을 제공합니다. 자세한 설명은 Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합 섹션을 참조하세요.

  • 구독. MQTT 통신을 위해 인증을 받는 MQTT 주제(또는 제목), 게시자 및 구독자를 정의합니다.

  • 리소스. 로컬 디바이스 및 볼륨, 기계 학습 모델보안에 대한 참조로 Greengrass Lambda 함수 및 커넥터에 의한 액세스 제어에 사용됩니다.

  • 로그. AWS IoT Greengrass 시스템 구성 요소와 Lambda 함수에 대한 로깅 구성입니다. 자세한 설명은 AWS IoT Greengrass 로그를 사용하여 모니터링 섹션을 참조하세요.

AWS 클라우드에서 Greegrass 그룹을 관리한 다음 코어에 배포합니다. 배포하면 코어 디바이스에서 group.json 파일로 그룹 구성이 복제됩니다. 이 파일은 greengrass-root/ggc/deployments/group에 위치합니다.


                    코어 디바이스에 배포된 Greengrass 그룹의 클라우드 정의
참고

배포 중에는 코어 디바이스에서 Greengrass 대몬(daemon) 프로세스가 중지한 다음 다시 시작됩니다.

AWS IoT 콘솔에서 그룹 배포

AWS IoT 콘솔의 그룹 구성 페이지에서 그룹을 배포하고 그룹 배포를 관리할 수 있습니다.

참고

콘솔에서 이 페이지를 열려면 Greengrass 디바이스를 선택한 다음 그룹(V1)을 선택하고 Greengrass 그룹에서 그룹을 선택합니다.

현재 그룹 버전을 배포하려면
  • 그룹 구성 페이지에서 배포를 선택합니다.

그룹의 배포 이력을 확인하려면

그룹의 배포 이력에는 각 배포 시도의 날짜 및 시간, 그룹 버전, 상태를 포함하여 그룹의 배포 기록이 포함됩니다.

  1. 그룹 구성 페이지에서 배포 탭을 선택합니다.

  2. 오류 메시지를 포함하여 배포에 대한 자세한 내용을 보려면 AWS IoT 콘솔에서 Greengrass 디바이스 아래에 배포를 선택합니다.

그룹 배포를 재배포하려면

현재 배포가 실패할 경우 배포를 재배포하거나 다른 그룹 버전으로 되돌릴 수 있습니다.

  1. AWS IoT 콘솔에서 Greengrass 디바이스를 선택한 다음 그룹(V1)을 선택합니다.

  2. 배포 탭을 선택합니다.

  3. 재배포하려는 배포를 선택하고 재배포를 선택합니다.

그룹 배포를 재설정하려면

그룹 배포를 재설정하여 그룹을 이동 또는 삭제하거나 배포 정보를 제거할 수 있습니다. 자세한 설명은 배포 재설정 섹션을 참조하세요.

  1. AWS IoT 콘솔에서 Greengrass 디바이스를 선택한 다음 그룹(V1)을 선택합니다.

  2. 배포 탭을 선택합니다.

  3. 재설정할 배포를 선택하려면 배포 재설정을 선택합니다.

AWS IoT Greengrass API를 사용하여 그룹 배포

AWS IoT Greengrass API는 다음 작업을 통해 AWS IoT Greengrass 그룹을 배포하고 그룹 배포를 관리할 수 있습니다. AWS CLI, AWS IoT Greengrass API 또는 AWS SDK에서 이러한 작업을 호출할 수 있습니다.

작업 설명

CreateDeployment

NewDeployment 또는 Redeployment 배포를 생성합니다.

현재 배포가 실패할 경우 배포를 재배포할 수 있습니다. 또는 재배포를 통해 다른 그룹 버전으로 되돌릴 수 있습니다.

GetDeploymentStatus

배포 상태를 Building, InProgress, Success 또는 Failure로 반환합니다.

배포 알림을 수신하도록 Amazon EventBridge 이벤트를 구성할 수 있습니다. 자세한 설명은 배포 알림 받기 섹션을 참조하세요.

ListDeployments

그룹의 배포 이력을 반환합니다.

ResetDeployments

그룹에 대한 배포를 재설정합니다.

그룹 배포를 재설정하여 그룹을 이동 또는 삭제하거나 배포 정보를 제거할 수 있습니다. 자세한 설명은 배포 재설정 섹션을 참조하세요.

참고

대량 작업에 대한 자세한 내용은 그룹의 대량 배포 생성 섹션을 참조하십시오.

그룹 ID 가져오기

그룹 ID는 일반적으로 API 작업에 사용됩니다. ListGroups작업을 사용하여 그룹 목록에서 대상 그룹의 ID를 찾을 수 있습니다. 예를 들어 AWS CLI에서 list-groups 명령을 사용합니다.

aws greengrass list-groups

결과를 필터링하는 query 옵션을 포함할 수도 있습니다. 예:

  • 가장 최근에 만든 그룹을 가져오려면 다음을 수행하십시오.

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
  • 이름으로 그룹을 가져오려면 다음을 수행하십시오.

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"

    그룹 이름은 고유한 이름이 아니어도 되므로 여러 그룹을 반환할 수도 있습니다.

다음은 list-groups 응답의 예입니다. 각 그룹에 대한 정보에는 속성에 있는 그룹의 ID(Id 속성에 있음) 및 최신 그룹 버전의 ID(LatestVersion 속성에 있음)가 포함됩니다. 그룹의 다른 버전 ID를 가져오려면 그룹 ID를 와 함께 사용하십시오 ListGroupVersions.

참고

AWS IoT 콘솔에서도 이러한 값을 찾을 수 있습니다. 그룹 ID는 그룹의 설정 페이지에 표시됩니다. 그룹 버전 ID는 그룹의 배포 탭에 표시됩니다.

{ "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

AWS 리전을 지정하지 않으면 AWS CLI 명령은 사용자 프로파일에서 기본 리전을 사용합니다. 다른 리전의 그룹을 반환하려면 리전 옵션을 포함합니다. 예:

aws greengrass list-groups --region us-east-1

AWS IoT Greengrass 그룹 객체 모델 개요

AWS IoT Greengrass API를 프로그래밍할 때 Greengrass 그룹 객체 모델을 이해하는 것은 도움이 됩니다.

그룹

AWS IoT Greengrass API에서, 최상위 Group 객체는 메타데이터와 GroupVersion 객체 목록으로 구성되어 있습니다. GroupVersion 객체는 Group에 ID를 기준으로 연결되어 있습니다.


                                그룹 다이어그램(그룹 버전 목록과 메타데이터로 구성)

그룹 버전

GroupVersion 객체는 그룹 구성원을 정의합니다. 각 GroupVersionCoreDefinitionVersion과, ARN을 기준으로 다른 구성 요소 버전을 참조합니다. 이러한 참조를 통해 그룹에 포함할 엔터티가 결정됩니다.


                                ARN 기준 다른 버전 유형을 참조하는 그룹 버전 다이어그램

예를 들어 그룹에 Lambda 함수 3개, 디바이스 1개, 구독 2개를 포함하려면 GroupVersion은 다음을 참조합니다.

  • 필수 코어가 포함된 CoreDefinitionVersion입니다.

  • 3개의 함수가 포함된 FunctionDefinitionVersion

  • 클라이언트 디바이스가 포함된 DeviceDefinitionVersion.

  • 2개의 구독이 포함된 SubscriptionDefinitionVersion

코어 디바이스에 배포된 GroupVersion은 로컬 환경에서 제공되는 개체와 해당 개체가 상호 작용하는 방식을 결정합니다.

그룹 구성 요소

그룹에 추가한 구성 요소는 3개 레벨의 계층 구조로 되어 있습니다.

  • 지정된 유형의 DefinitionVersion개체 목록을 참조하는 정의입니다. 예를 들어 DeviceDefinitionDeviceDefinitionVersion 객체를 참조합니다.

  • 지정된 유형의 엔티티 세트를 DefinitionVersion포함하는 A. 예를 들어 DeviceDefinitionVersion에는 Device 객체 목록이 포함되어 있습니다.

  • 속성과 동작을 정의하는 개별 엔터티. 예를 들어, Device는 AWS IoT 레지스트리에서 해당하는 클라이언트 디바이스 ARN, 디바이스 인증서의 ARN, 그리고 클라우드에서 로컬 섀도우가 자동으로 동기화되는 위치를 정의합니다.

    다음 유형의 엔터티를 그룹에 추가할 수 있습니다.

다음 예제는 DeviceDefinition 각각 여러 Device 객체를 포함하고 있는 3개의 DeviceDefinitionVersion 객체를 참조합니다. 그룹에서는 한 번에 한 개의 DeviceDefinitionVersion만 사용됩니다.


                                ,, Device 객체로 구성된 장치 계층 구조의 다이어그램입니다.  DeviceDefinition  DeviceDefinitionVersion

그룹 업데이트

AWS IoT Greengrass API에서 버전을 사용하여 그룹 구성을 업데이트할 수 있습니다. 버전은 변경할 수 없으므로 그룹 구성 요소를 추가, 제거 또는 변경하려면 새 엔티티나 업데이트된 DefinitionVersion엔티티를 포함하는 개체를 만들어야 합니다.

DefinitionVersions개체를 새 정의 개체 또는 기존 Definition 개체와 연결할 수 있습니다. 예를 들어, CreateFunctionDefinition 작업을 사용하여 FunctionDefinitionVersion을 초기 버전으로 포함하는 FunctionDefinition을 만들거나, CreateFunctionDefinitionVersion 작업을 사용하여 기존 FunctionDefinition을 참조할 수 있습니다.

그룹 구성 요소를 만든 후 그룹에 포함하려는 모든 DefinitionVersion개체를 포함하는 구성 요소를 만듭니다. GroupVersion 그런 다음 GroupVersion을 배포합니다.

GroupVersion을 배포하려면 Core가 정확히 1개 포함된 CoreDefinitionVersion을 참조해야 합니다. 참조된 모든 엔터티는 그룹의 구성원이어야 합니다. Greengrass 서비스 역할GroupVersion을 배포 중인 AWS 리전의 AWS 계정과 연결해야 합니다.

참고

API에서 Update 작업은 Group 또는 구성 요소 Definition 객체의 이름을 변경하는 데 사용됩니다.

AWS 리소스를 참조하는 엔터티 업데이트

Greengrass Lambda 함수와 보안 리소스는 Greengrass별 속성을 정의하며, 해당 AWS 리소스를 참조합니다. 이러한 엔터티를 업데이트하기 위해서는 Greengrass 객체 대신 해당하는 AWS 리소스를 변경할 수도 있습니다. 예를 들어 Lambda 함수는 AWS Lambda에서 함수를 참조하며, Greengrass 그룹에 적용되는 수명 주기와 기타 속성도 정의합니다.

  • Lambda 함수 코드나 패키징된 종속성을 업데이트하려면 AWS Lambda에서 변경하십시오. 이러한 변경 사항은 그 다음 그룹 배포 시 AWS Lambda에서 가져와 로컬 환경에 복사됩니다.

  • Greengrass별 속성을 업데이트하려면 업데이트된 Function 속성이 포함된 FunctionDefinitionVersion을 생성합니다.

참고

Greengrass Lambda 함수는 별칭 ARN 또는 버전 ARN을 기준으로 Lambda 함수를 참조할 수 있습니다. 별칭 ARN을 참조하면(권장 사항), AWS Lambda에서 새로운 함수 버전을 게시할 때 FunctionDefinitionVersion(또는 SubscriptionDefinitionVersion)을 업데이트하지 않아도 됩니다. 자세한 설명은 별칭 또는 버전을 기준으로 Lambda 함수 참조 섹션을 참조하세요.

다음 사항도 참조하십시오.