Lambda 함수와 커넥터를 사용하여 로컬 리소스에 액세스 - 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 것이 좋습니다.

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

Lambda 함수와 커넥터를 사용하여 로컬 리소스에 액세스

이 기능은 AWS IoT Greengrass 코어 v1.3 이상에 사용할 수 있습니다.

AWS IoT Greengrass를 사용하는 개발자는 클라우드에서 AWS Lambda 함수를 작성하고 커넥터를 구성하여 로컬에서 실행하기 위해 코어 디바이스에 배포할 수 있습니다. Linux를 실행하는 Greengrass 코어에서 이러한 로컬로 배포된 Lambda 함수와 커넥터는 Greengrass 코어 디바이스에 실제로 있는 로컬 리소스에 액세스할 수 있습니다. 예를 들어 Modbus 또는 CANbus를 통해 연결된 디바이스와 통신하기 위해 Lambda 함수가 코어 디바이스의 직렬 포트에 액세스하도록 할 수 있습니다. 로컬 리소스에 대한 보안 액세스를 구성하려면 물리적 하드웨어의 보안과 Greengrass 코더 디바이스 OS를 보증해야 합니다.

로컬 리소스에 대한 액세스를 시작하려면 다음 자습서를 참조하십시오.

지원되는 리소스 유형

볼륨 리소스와 디바이스 리소스라는 두 가지 로컬 리소스 유형에 액세스할 수 있습니다.

볼륨 리소스

루트 파일 시스템의 파일 또는 디렉터리입니다(/sys, /dev 또는 /var에 있는 파일 또는 디렉터리 제외). 다음이 포함됩니다.

  • Greengrass Lambda 함수에서 정보를 읽거나 쓰는 데 사용되는 폴더 또는 파일(예: /usr/lib/python2.x/site-packages/local).

  • 호스트의 /proc 파일 시스템에 있는 폴더 또는 파일(예: /proc/net 또는 /proc/stat). v1.6 이상에서 지원됩니다. 추가적인 필수 사항은 /proc 디렉터리에 있는 볼륨 리소스 섹션을 참조하세요.

작은 정보

/var, /var/run/var/lib 디렉터리를 볼륨 리소스로 구성하려면 먼저 디렉터리를 다른 폴더에 탑재한 다음 해당 폴더를 볼륨 리소스로 구성하십시오.

볼륨 리소스를 구성할 때 소스 경로와 대상 경로를 지정합니다. 소스 경로는 호스트에 있는 리소스의 절대 경로입니다. 대상 경로는 Lambda 네임스페이스 환경 내부에 있는 리소스의 절대 경로입니다. 이는 Lambda 함수 또는 커넥터가 실행되는 컨테이너입니다. 대상 경로의 모든 변경 사항은 호스트 파일 시스템의 소스 경로에 반영됩니다.

참고

대상 경로의 파일은 Lambda 네임스페이스에만 표시됩니다. 일반적인 Linux 네임스페이스에서는 이를 볼 수 없습니다.

디바이스 리소스

/dev에 있는 파일. /dev에 있는 문자 디바이스 또는 블록 디바이스만 디바이스 리소스로 허용됩니다. 다음이 포함됩니다.

  • 직렬 포트를 통해 연결된 디바이스와 통신하는 데 사용되는 직렬 포트(예: /dev/ttyS0, /dev/ttyS1).

  • USB 주변 장치를 연결하는 데 사용되는 USB(예: /dev/ttyUSB0 또는 /dev/bus/usb).

  • GPIO를 통해 센서 및 액추에이터에 사용되는 GPIO(예: /dev/gpiomem).

  • 온보드 GPU를 사용하여 기계 학습을 가속화하는 데 사용되는 GPU(예: /dev/nvidia0).

  • 이미지 및 동영상을 캡처하는 데 사용되는 카메라(예: /dev/video0).

참고

/dev/shm은 예외로, 볼륨 리소스로만 구성할 수 있습니다. /dev/shm에 있는 리소스에는 rw 권한을 부여해야 합니다.

AWS IoT Greengrass은(는) 또한 기계 학습 추론을 수행하는 데 사용되는 리소스 유형을 지원합니다. 자세한 내용은 기계 학습 추론 수행 섹션을 참조하세요.

요구 사항

로컬 리소스에 대한 보안 액세스 구성에는 다음 요구 사항이 적용됩니다.

  • AWS IoT Greengrass 코어 소프트웨어 v1.3 이상을 사용해야 합니다. 호스트의 /proc 디렉터리에서 리소스를 생성하려면 반드시 v1.6 이상을 사용하고 있어야 합니다.

  • 로컬 리소스(필요한 드라이버 및 라이브러리 포함)는 Greengrass 코어 디바이스에 올바르게 설치되어 있어야 하며, 사용 중에 지속적으로 사용할 수 있어야 합니다.

  • 원하는 리소스 작업과 리소스에 대한 액세스에는 루트 권한이 필요하지 않습니다.

  • read 또는 read and write 권한만 사용할 수 있습니다. Lambda 함수는 리소스에 대해 특권 작업을 수행할 수 없습니다.

  • Greengrass 코어 디바이스의 운영 체제에서 로컬 리소스의 전체 경로를 제공해야 합니다.

  • 리소스 이름이나 ID는 최대 128자이며, 패턴 [a-zA-Z0-9:_-]+을 사용해야 합니다.

/proc 디렉터리에 있는 볼륨 리소스

호스트의 /proc 디렉터리에 있는 볼륨 리소스에 다음 고려 사항이 적용됩니다.

  • AWS IoT Greengrass 코어 소프트웨어 v1.6 이상을 사용해야 합니다.

  • 사용자는 Lambda 함수에 대해 읽기 전용 액세스를 허용할 수 있지만, 읽기-쓰기 액세스는 허용할 수 없습니다. 이러한 액세스 수준은 AWS IoT Greengrass에서 관리됩니다.

  • 파일 시스템에서 읽기 액세스를 사용할 수 있도록 OS 그룹에 권한을 부여해야 할 수도 있습니다. 예를 들어 소스 디렉터리나 파일이 660 파일 권한을 가지고 있어서 그룹의 소유자나 사용자만 읽기 및 쓰기 액세스 권한을 갖는다고 가정해 봅시다. 이 경우에는 OS 그룹 소유자의 권한을 리소스에 추가해야 합니다. 자세한 내용은 그룹 소유자 파일 액세스 권한 섹션을 참조하세요.

  • 호스트 환경과 Lambda 네임스페이스 모두 /proc 디렉터리를 포함하고 있기 때문에 대상 경로를 지정할 때 이름 충돌이 발생하지 않도록 해야 합니다. 예를 들어 /proc이 소스 경로인 경우에는 /host-proc을 대상 경로(또는 "/proc" 이외의 모든 경로 이름)로 지정할 수 있습니다.

그룹 소유자 파일 액세스 권한

AWS IoT Greengrass Lambda 함수 프로세스는 일반적으로 ggc_userggc_group으로 실행됩니다. 하지만 사용자는 다음과 같이 로컬 리소스 정의에서 추가적인 파일 액세스 권한을 Lambda 함수 프로세스에 제공할 수 있습니다.

  • 리소스를 소유한 Linux 그룹의 권한을 추가하려면 GroupOwnerSetting#AutoAddGroupOwner 파라미터 또는 리소스를 소유한 시스템 그룹의 파일 시스템 권한 자동 추가 콘솔 옵션을 사용합니다.

  • 다른 Linux 그룹의 권한을 추가하려면 GroupOwnerSetting#GroupOwner 파라미터 또는 다른 OS 그룹을 지정해 권한 추가 콘솔 옵션을 사용합니다. GroupOwnerSetting#AutoAddGroupOwner가 true이면 GroupOwner 값이 무시됩니다.

AWS IoT Greengrass Lambda 함수 프로세스는 ggc_user, ggc_group 및 Linux 그룹(추가한 경우)의 모든 파일 시스템 권한을 상속합니다. Lambda 함수가 리소스에 액세스할 수 있으려면 Lambda 함수 프로세스가 리소스에 대해 필요한 권한을 가지고 있어야 합니다. chmod(1) 명령을 사용해 필요한 경우 리소스의 권한을 변경할 수 있습니다.

다음 사항도 참조하세요.