

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# 를 사용하여 기계 학습 추론을 구성하는 방법 AWS Management Console
<a name="ml-console"></a>

이 자습서의 단계를 따르려면 AWS IoT Greengrass 코어 v1.10 이상이 필요합니다.

로컬로 생성된 데이터를 사용하여 Greengrass 코어 장치에서 로컬 방식으로 기계 학습(ML) 추론을 수행할 수 있습니다. 요구 사항과 제한 조건을 비롯한 자세한 내용은 [기계 학습 추론 수행](ml-inference.md) 단원을 참조하십시오.

이 자습서에서는 AWS Management Console 를 사용하여 데이터를 클라우드로 전송하지 않고 로컬에서 카메라의 이미지를 인식하는 Lambda 추론 앱을 실행하도록 Greengrass 그룹을 구성하는 방법을 설명합니다. 추론 앱은 Raspberry Pi의 카메라 모듈에 액세스하고 오픈 소스 [SqueezeNet](https://github.com/DeepScale/SqueezeNet) 모델을 사용하여 추론을 실행합니다.

자습서에는 다음과 같은 상위 수준 단계가 포함됩니다.

1. [Raspberry Pi 구성](#config-raspberry-pi)

1. [MXNet 프레임워크 설치](#install-mxnet)

1. [모델 패키지 생성](#package-ml-model)

1. [Lambda 함수 생성 및 게시](#ml-console-create-lambda)

1. [그룹에 Lambda 함수를 추가합니다.](#ml-console-config-lambda)

1. [그룹에 리소스 추가](#ml-console-add-resources)

1. [그룹에 구독 추가](#ml-console-add-subscription)

1. [그룹 배포](#ml-console-deploy-group)

1. [앱 테스트](#ml-console-test-app)

## 사전 조건
<a name="ml-inference-prerequisites"></a>

이 자습서를 완료하려면 다음이 필요합니다.
+ 와 함께 사용하도록 설정 및 구성된 Raspberry Pi 4 모델 B 또는 Raspberry Pi 3 모델 B/B\$1 AWS IoT Greengrass. AWS IoT Greengrass로 Raspberry Pi를 설정하기 위해, Greengrass 장치 설정[ 스크립트를 실행하거나](quick-start.md) [모듈 1](https://docs.aws.amazon.com/greengrass/latest/developerguide/module1.html) 및 [모듈 2](https://docs.aws.amazon.com/greengrass/latest/developerguide/module2.html)를 완료했는지 [시작하기 AWS IoT Greengrass](gg-gs.md) 확인합니다.
**참고**  
Raspberry Pi는 일반적으로 이미지 분류에 사용되는 딥 러닝 프레임워크를 실행하기 위해 2.5A [전원 공급 장치](https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/)가 필요할 수 있습니다. 정격이 더 낮은 전원 공급 장치는 장치가 재부팅될 수 있습니다.
+ [Raspberry Pi Camera Module V2 – 8메가픽셀, 1080p](https://www.amazon.com/Raspberry-Pi-Camera-Module-Megapixel/dp/B01ER2SKFS). 카메라 설정 방법을 알아보려면 Raspberry Pi 설명서의 [Connecting the camera](https://www.raspberrypi.org/documentation/usage/camera/)를 참조하십시오.
+ Greengrass 그룹 및 Greengrass 코어. Greengrass 그룹 또는 코어를 생성하는 방법에 대한 자세한 내용은 [시작하기 AWS IoT Greengrass](gg-gs.md)을(를) 참조하세요. 

**참고**  
이 자습서에서는 Raspberry Pi를 사용하지만 [Intel Atom](#atom-lambda-config) 및 [NVIDIA Jetson TX2](#jetson-lambda-config)와 같은 다른 플랫폼을 AWS IoT Greengrass 지원합니다. Jetson TX2의 예제에서는 카메라에서 스트리밍된 이미지 대신 정적 이미지를 사용할 수 있습니다. Jetson TX2 예제를 사용하는 경우 Python 3.7 대신 Python 3.6을 설치해야 할 수도 있습니다. AWS IoT Greengrass 코어 소프트웨어를 설치할 수 있도록 디바이스를 구성하는 방법에 대한 자세한 내용은 섹션을 참조하세요[다른 장치 설정](setup-filter.other.md).  
 AWS IoT Greengrass 가 지원하지 않는 타사 플랫폼의 경우 컨테이너화되지 않은 모드에서 Lambda 함수를 실행해야 합니다. 비컨테이너식 모드에서 실행하려면 Lambda 함수를 루트로 실행해야 합니다. 자세한 내용은 [Lambda 함수 컨테이너화 선택 시 고려 사항](lambda-group-config.md#lambda-containerization-considerations) 및 [그룹에 있는 Lambda 함수의 기본 액세스 자격 증명 설정](lambda-group-config.md#lambda-access-identity-groupsettings) 섹션을 참조하세요.

## 1단계: Raspberry Pi 구성
<a name="config-raspberry-pi"></a>

이 단계에서는 Raspbian 운영 체제에 업데이트를 설치하고, 카메라 모듈 소프트웨어와 Python 종속성을 설치하며, 카메라 인터페이스를 활성화합니다.

Raspberry Pi 터미널에서 다음 명령을 실행합니다.

1. Raspbian에 업데이트를 설치합니다.

   ```
   sudo apt-get update
   sudo apt-get dist-upgrade
   ```

1. <a name="install-picamera-step"></a>이 자습서에 필요한 카메라 모듈에 대한 `picamera` 인터페이스 및 기타 Python 라이브러리를 설치합니다.

   ```
   sudo apt-get install -y python3-dev python3-setuptools python3-pip python3-picamera
   ```

   설치를 검사합니다.
   + Python 3.7 설치에 pip가 포함되어 있는지 확인합니다.

     ```
     python3 -m pip
     ```

     pip가 설치되어 있지 않으면 [pip 웹 사이트](https://pip.pypa.io/en/stable/installing/)에서 다운로드한 후 다음 명령을 실행합니다.

     ```
     python3 get-pip.py
     ```
   + Python 버전이 3.7 이상인지 확인합니다.

     ```
     python3 --version
     ```

     출력에 이전 버전이 나열되면 다음 명령을 실행합니다.

     ```
     sudo apt-get install -y python3.7-dev
     ```
   + Setuptools 및 Picamera가 성공적으로 설치되었는지 확인합니다.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import setuptools"'
     sudo -u ggc_user bash -c 'python3 -c "import picamera"'
     ```

     출력에 오류가 포함되어 있지 않으면 검사가 성공한 것입니다.
**참고**  
장치에 설치된 Python 실행 파일이 `python3.7`인 경우 이 자습서의 명령에 `python3` 대신 `python3.7`을 사용합니다. 종속성 오류를 피하기 위해 pip 설치가 올바른 `python3.7` 또는 `python3` 버전에 매핑되는지 확인하세요.

1. Raspberry Pi를 재부팅합니다.

   ```
   sudo reboot
   ```

1. Raspberry Pi 구성 도구를 엽니다.

   ```
   sudo raspi-config
   ```

1. 화살표 키를 사용하여 [**Interfacing Options**]를 열고 카메라 인터페이스를 활성화합니다. 메시지가 나타나면 장치 재부팅을 허용합니다.

1. 다음 명령을 사용하여 카메라 설정을 테스트합니다.

   ```
   raspistill -v -o test.jpg
   ```

   그러면 Raspberry Pi의 미리 보기 창이 열리고, 현재 디렉터리에 `test.jpg`라는 이름의 사진이 저장되며, 카메라에 대한 정보가 Raspberry Pi 터미널에 표시됩니다.

## 2단계: MXNet 프레임워크 설치
<a name="install-mxnet"></a>

이 단계에서는 Raspberry Pi에 MXNet 라이브러리를 설치합니다.

1. <a name="ssh-rpi-step"></a>Raspberry Pi에 원격으로 로그인합니다.

   ```
   ssh pi@your-device-ip-address
   ```

1. MXNet 설명서의 [MXNet 설치](https://mxnet.apache.org/get_started/?)에 나온 지침을 따라 장치에 MXNet을 설치합니다.
**참고**  
장치 충돌을 방지하려면 이 튜토리얼에서는 버전 1.5.0을 설치하고 소스에서 MXNet을 구축하는 것을 권장합니다.

1. MXNet을 설치한 후 다음 구성을 검사합니다.
   + `ggc_user` 시스템 계정에서 MXNet 프레임워크를 사용할 수 있는지 확인합니다.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
     ```
   + NumPy가 설치되어 있는지 확인합니다.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import numpy"'
     ```

## 3단계: MXNet 모델 패키지 생성
<a name="package-ml-model"></a>

이 단계에서는 Amazon Simple Storage Service(Amazon S3)에 업로드할 샘플 사전 훈련된 MXNet 모델이 포함된 모델 패키지를 생성합니다. tar.gz 또는 zip 형식을 사용하는 경우 Amazon S3의 모델 패키지를 사용할 AWS IoT Greengrass 수 있습니다.

1. [기계 학습 샘플](what-is-gg.md#gg-ml-samples)에 나온 Raspberry Pi용 MXNet 샘플을 컴퓨터에 다운로드합니다.

1.  다운로드한 `mxnet-py3-armv7l.tar.gz` 파일의 압축을 풉니다.

1. `squeezenet` 디렉터리로 이동합니다.

   ```
   cd path-to-downloaded-sample/mxnet-py3-armv7l/models/squeezenet
   ```

   이 디렉터리의 `squeezenet.zip` 파일은 모델 패키지로, 이미지 분류 모델에 대한 SquezeNet 오픈 소스 모델 아티팩트를 포함하고 있습니다. 이후에 이 모델 패키지를 Amazon S3에 업로드합니다.

## 4단계: Lambda 함수 생성 및 게시
<a name="ml-console-create-lambda"></a>

이 단계에서는 Lambda 함수 배포 패키지 및 Lambda 함수를 생성합니다. 그런 다음 함수 버전을 게시하고 별칭을 생성합니다.

먼저 Lambda 함수 배포 패키지를 생성합니다.

1. 컴퓨터에서 [3단계: MXNet 모델 패키지 생성](#package-ml-model)에서 압축을 푼 샘플 패키지의 `examples` 디렉터리로 이동합니다.

   ```
   cd path-to-downloaded-sample/mxnet-py3-armv7l/examples
   ```

   `examples` 디렉터리에는 함수 코드와 종속성이 포함되어 있습니다.
   + `greengrassObjectClassification.py`는 이 자습서에서 사용되는 추론 코드입니다. 이 코드를 템플릿으로 사용하여 사용자 고유의 추론 함수를 생성할 수 있습니다.
   + <a name="ml-samples-ggc-sdk"></a>`greengrasssdk`은(는) Python용 AWS IoT Greengrass 코어 SDK 버전 1.5.0입니다.
**참고**  <a name="ml-samples-ggc-sdk-upgrade"></a>
새 버전을 사용할 수 있는 경우 해당 버전을 다운로드하여 배포 패키지의 SDK 버전을 업그레이드할 수 있습니다. 자세한 내용은 GitHub의 [Python용AWS IoT Greengrass 코어 SDK](https://github.com/aws/aws-greengrass-core-sdk-python/)를 참조하세요.

1.  `examples` 디렉터리의 내용을 `greengrassObjectClassification.zip`라는 파일로 압축합니다. 이것은 배포 패키지입니다.

   ```
   zip -r greengrassObjectClassification.zip .
   ```
**참고**  <a name="ml-samples-function-zip"></a>
 `.py` 파일 및 종속성이 디렉터리의 루트에 있는지 확인합니다.

    

   다음으로, Lambda 함수를 생성합니다.

1.  AWS IoT 콘솔에서 **함수** 및 **함수 생성을** 선택합니다.

1. **새로 작성**을 선택하고 다음 값을 사용하여 함수를 생성합니다.
   + [**함수 이름**]에 **greengrassObjectClassification**을 입력합니다.
   + **실행 시간**에서 **Python 3.7**을 선택합니다.

   **권한**의 경우, 기본 설정을 유지합니다. 이를 통해 기본 Lambda 권한을 부여하는 실행 역할을 생성합니다. 이 역할은에서 사용되지 않습니다 AWS IoT Greengrass.

1. **함수 생성**을 선택합니다.

    

   이제 Lambda 함수 배포 패키지를 업로드하고 핸들러를 등록합니다.

1. Lambda 함수를 선택하고 Lambda 함수 배포 패키지를 업로드하십시오.

   1. <a name="lambda-console-upload"></a>**코드** 탭의 **코드 소스**에서 **다음에서 업로드**를 선택합니다. 드롭다운에서 **.zip 파일**을 선택합니다.  
![\[.zip 파일이 강조 표시된 드롭다운의 업로드.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. **업로드**를 선택한 다음 `greengrassObjectClassification.zip` 배포 패키지를 선택합니다. 그런 다음 **저장**을 선택합니다.

   1. <a name="lambda-console-runtime-settings-para"></a>함수의 **코드** 탭에 있는 **런타임 설정**에서 **편집**을 선택하고 다음 값을 입력합니다.
      + **실행 시간**에서 **Python 3.7**을 선택합니다.
      + **핸들러**에 **greengrassObjectClassification.function\$1handler**를 입력합니다.

      **저장**을 선택합니다.

   그런 다음 Lambda 함수의 첫 번째 버전을 게시합니다. 그런 다음 [버전의 별칭](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)을 생성합니다.
**참고**  
Greengrass 그룹은 별칭(권장) 또는 버전을 기준으로 Lambda 함수를 참조할 수 있습니다. 별칭을 사용하면 함수 코드를 업데이트할 때 구독 테이블이나 그룹 정의를 변경할 필요가 없으므로 코드 업데이트를 더 쉽게 관리할 수 있습니다. 그 대신 새 함수 버전에 대한 별칭을 가리킵니다.

1. [**Actions**] 메뉴에서 [**Publish new revision**]을 선택합니다.  
![\[작업 메뉴의 새 버전 게시 옵션\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/ml-inference/lambda-publish-version.png)

1. **버전 설명**에 **First version**을 입력한 후 **게시**를 선택합니다.

1. [**greengrassObjectClassification: 1**] 구성 페이지의 [**Actions**] 메뉴에서 [**Create alias**]를 선택합니다.  
![\[작업 메뉴의 별칭 생성 옵션\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/ml-inference/lambda-create-alias.png)

1. [**Create a new alias**] 페이지에서 다음 값을 사용합니다.
   + **이름**에 **mlTest**을 입력합니다.
   + **버전**에 **1**를 입력합니다.
**참고**  
AWS IoT Greengrass 는 **\$1LATEST** 버전에 대해 Lambda 별칭을 지원하지 않습니다.

1. **저장**을 선택합니다.

    

   이제 Greengrass 그룹에 Lambda 함수를 추가합니다.

## 5단계: Greengrass 그룹에 Lambda 함수 추가
<a name="ml-console-config-lambda"></a>

이 단계에서 그룹에 Lambda 함수를 추가한 다음 수명 주기와 환경 변수를 구성합니다.

먼저 Greengrass 그룹에 Lambda 함수를 추가합니다.

1.  AWS IoT 콘솔 탐색 창의 **관리**에서 **Greengrass 디바이스**를 확장한 다음 **그룹(V1)을** 선택합니다.

1. 그룹 구성 페이지에서 **Lambda 함수** 탭을 선택합니다.

1. **내 Lambda 함수** 섹션에서 **추가**를 선택합니다.

1. **Lambda 함수**에서 **greengrassObjectClassification**를 선택합니다.

1. **Lambda 함수 버전**의 경우 **Alias:mlTest**를 선택하십시오.

    

   그 다음, Lambda 함수의 수명 주기와 환경 변수를 구성합니다.

1. **Lambda 함수 구성** 섹션에서 다음과 같이 업데이트하십시오.
**참고**  
비즈니스 사례에서 요구하지 않는 한 컨테이너화 없이 Lambda 함수를 실행하는 것이 좋습니다. 이렇게 하면 장치 리소스를 구성하지 않고도 장치 GPU와 카메라에 액세스할 수 있습니다. 컨테이너화 없이를 실행하는 경우 AWS IoT Greengrass Lambda 함수에 대한 루트 액세스 권한도 부여해야 합니다.

   1. **컨테이너화 없이 실행하려면:**
      + **시스템 사용자 및 그룹**의 경우 **Another user ID/group ID**을(를) 선택합니다. **시스템 사용자 ID**에 **0**을(를) 입력합니다. **시스템 그룹 ID**에 **0**을(를) 입력합니다.

        이렇게 하면 Lambda 함수를 루트로 실행할 수 있습니다. 작업 실행 방법에 대한 자세한 내용은 [그룹에 있는 Lambda 함수의 기본 액세스 자격 증명 설정](lambda-group-config.md#lambda-access-identity-groupsettings) 섹션을 참조하세요.
**작은 정보**  
또한 Lambda 함수에 루트 액세스 권한을 부여하도록 `config.json` 파일을 업데이트해야 합니다. 이 절차는 [루트로서의 Lambda 함수 실행](lambda-group-config.md#lambda-running-as-root) 섹션을 참조하세요.
      + **Lambda 함수 컨테이너화**의 경우 **컨테이너 없음**을 선택합니다.

        속도 제어 자동화 실행에 대한 자세한 내용은 [Lambda 함수 컨테이너화 선택 시 고려 사항](lambda-group-config.md#lambda-containerization-considerations) 섹션을 참조하세요.
      + **시간 제한**에 **10 seconds**를 입력합니다.
      + **고정된** 경우 **True**를 선택합니다.

        자세한 내용은 [Greengrass Lambda 함수의 라이프사이클 구성](lambda-functions.md#lambda-lifecycle) 단원을 참조하십시오.

   1.  **대신 컨테이너화 모드에서 실행하려면:** 
**참고**  
비즈니스 사례에서 요구하는 경우가 아니면 컨테이너화 모드에서 실행하지 않는 것이 좋습니다.
      + **시스템 사용자 및 그룹**의 경우 **그룹 기본값 사용**을 선택합니다.
      + **Lambda 함수 컨테이너화**의 경우 **그룹 기본값 사용**을 선택합니다.
      + **메모리 제한**에 **96 MB**를 입력합니다.
      + **시간 제한**에 **10 seconds**를 입력합니다.
      + **고정된** 경우 **True**를 선택합니다.

        자세한 내용은 [Greengrass Lambda 함수의 라이프사이클 구성](lambda-functions.md#lambda-lifecycle) 단원을 참조하십시오.

1. **환경 변수**에서 키-값 페어를 생성합니다. 키-값 페어는 Raspberry Pi에서 MXNet 모델과 상호 작용하는 함수에 필요합니다.

   키에 MXNET\$1ENGINE\$1TYPE를 사용합니다. 값에 NaiveEngine을 사용합니다.
**참고**  
자신의 사용자 정의 Lambda 함수에서는 함수 코드에 환경 변수를 선택적으로 설정할 수 있습니다.

1. 다른 모든 속성을 위해 기본 값을 유지하고 **Lambda 함수 추가**를 선택합니다.

## 6단계: Greengrass 그룹에 리소스 추가
<a name="ml-console-add-resources"></a>

이 단계에서 카메라 모듈 및 ML 추론 모델에 대한 리소스를 생성하고 Lambda 함수와 리소스를 연결하여 Lambda 함수가 코어 장치의 리소스에 액세스할 수 있도록 합니다.

**참고**  
컨테이너화되지 않은 모드에서를 실행하는 경우는 이러한 디바이스 리소스를 구성하지 않고 디바이스 GPU 및 카메라에 액세스할 AWS IoT Greengrass 수 있습니다.

우선 카메라에 대해 2개의 로컬 장치 리소스를 생성합니다. 하나는 공유 메모리용이고, 다른 하나는 장치 인터페이스용입니다. 로컬 리소스 액세스에 대한 자세한 내용은 [Lambda 함수와 커넥터를 사용하여 로컬 리소스에 액세스](access-local-resources.md) 단원을 참조하십시오.

1. 그룹 구성 페이지에서 **리소스**를 선택합니다.

1. **로컬 리소스** 탭에서 **로컬 리소스 추가**를 선택합니다.

1. **로컬 리소스 생성** 페이지에서 다음 값을 사용합니다.
   + **리소스 이름**에 **videoCoreSharedMemory**을 입력합니다.
   + [**Resource type**]에서 [**Device**]를 선택합니다.
   + **장치 경로**에 **/dev/vcsm**를 입력합니다.

     장치 경로는 장치 리소스의 로컬 절대 경로입니다. 이 경로는 `/dev` 아래에 있는 문자 장치 또는 블록 장치만 참조할 수 있습니다.
   + **System group owner and file access permissions**에서 [**Automatically add OS group permissions of the Linux group that owns the resource**]를 선택합니다.

     **시스템 그룹 소유자 및 파일 액세스 권한** 옵션을 사용하면 Lambda 프로세스에 추가 파일 액세스 권한을 부여할 수 있습니다. 자세한 내용은 [그룹 소유자 파일 액세스 권한](access-local-resources.md#lra-group-owner) 단원을 참조하십시오.

1. 다음으로 카메라 인터페이스에 대한 로컬 장치 리소스를 추가합니다.

1. **로컬 리소스 추가**를 선택합니다.

1. **로컬 리소스 생성** 페이지에서 다음 값을 사용합니다.
   + **리소스 이름**에 **videoCoreInterface**을 입력합니다.
   + [**Resource type**]에서 [**Device**]를 선택합니다.
   + **장치 경로**에 **/dev/vchiq**를 입력합니다.
   + [**Group owner file access permission**]에서 [**Automatically add OS group permissions of the Linux group that owns the resource**]를 선택합니다.

1. 페이지 하단에서 **다른 리소스 추가**를 선택합니다.

 

이제 기계 학습 리소스로서 추론 모델을 추가합니다. 이 단계에서 `squeezenet.zip` 모델 패키지를 Amazon S3에 업로드합니다.

1. **리소스** 페이지에서 **기계 학습**을 선택한 후 **기계 학습 리소스 추가**를 선택합니다.

1. **머신 러닝 리소스 생성** 페이지에서 **리소스 이름에** **squeezenet\$1model**을 입력합니다.

1. **모델 소스**의 경우 **S3에 저장된 모델(예: 딥 러닝 컴파일러를 통해 최적화된 모델)**을 선택합니다.

1. **S3 URI**의 경우 S3 버킷이 저장된 경로를 입력합니다.

1.  **S3 찾아보기(Browse S3)**를 선택합니다. 그러면 새로운 Amazon S3 콘솔 탭이 열립니다.

1.  Amazon S3 콘솔 탭에서 `squeezenet.zip` 파일을 S3 버킷에 업로드합니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [S3 버킷에 파일 및 폴더를 업로드하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html)를 참조하십시오.
**참고**  
S3 버킷에 액세스할 수 있으려면 버킷 이름에 문자열 **greengrass**이(가) 포함되어야 하고 버킷은 AWS IoT Greengrass을(를) 사용하는 리전과 동일한 리전에 있어야 합니다. 고유한 이름을 선택합니다(예: **greengrass-bucket-*user-id*-*epoch-time***). 버킷 이름에는 마침표(`.`)를 사용하지 마십시오.

1.  AWS IoT Greengrass 콘솔 탭에서 S3 버킷을 찾아 선택합니다. 업로드한 `squeezenet.zip` 파일을 찾아 **선택**을 선택합니다. 사용 가능한 버킷과 파일의 목록을 업데이트하려면 **새로 고침**을 선택 하십시오.

1. [**Destination path**]에 [**/greengrass-machine-learning/mxnet/squeezenet**]을 입력합니다.

   Lambda 런타임 네임스페이스에 있는 로컬 모델의 대상입니다. 그룹을 배포하면가 소스 모델 패키지를 AWS IoT Greengrass 검색한 다음 지정된 디렉터리로 콘텐츠를 추출합니다. 이 자습서에 대한 샘플 Lambda 함수는 이미 (`model_path` 변수에서) 이 경로를 사용하도록 구성되었습니다.

1. **시스템 그룹 소유자 및 파일 액세스 권한**에서 **시스템 그룹 없음**을 선택합니다.

1. **리소스 추가**를 선택합니다.

### SageMaker AI 훈련 모델 사용
<a name="sm-models"></a>

이 자습서에서는 Amazon S3에 저장된 모델을 사용하지만 SageMaker AI 모델도 쉽게 사용할 수 있습니다. AWS IoT Greengrass 콘솔에는 SageMaker AI 통합이 내장되어 있으므로 이러한 모델을 Amazon S3에 수동으로 업로드할 필요가 없습니다. SageMaker AI 모델 사용에 대한 요구 사항 및 제한 사항은 섹션을 참조하세요[지원되는 모델 소스](ml-inference.md#supported-model-sources).

SageMaker AI 모델을 사용하려면:
+ **모델 소스****에서 AWS SageMaker AI로 훈련된 모델 사용을** 선택한 다음 모델의 훈련 작업 이름을 선택합니다.
+ **대상 경로**에 Lambda 함수가 모델을 찾는 디렉터리 경로를 입력합니다.

## 7단계: Greengrass 그룹에 구독 추가
<a name="ml-console-add-subscription"></a>

이 단계에서는 그룹에 구독을 추가합니다. 이 구독을 통해 Lambda 함수는 MQTT 주제에 게시 AWS IoT 하여 예측 결과를에 보낼 수 있습니다.

1. 그룹 구성 페이지에서 **구독**을 선택한 다음 **구독 추가**를 선택합니다.

1. **구독 세부정보** 페이지에서 다음과 같이 원본 및 대상을 구성합니다.

   1. **소스 유형**에서 **Lambda 함수**를 선택한 다음 **greengrassObjectClassification**을 선택합니다.

   1. **대상 선택**에서 **서비스**를 선택한 후 **IoT Cloud**를 선택합니다.

1. **주제 필터**에서 **hello/world**을(를) 입력한 다음 **구독 생성**을 선택합니다.

## 8단계: Greengrass 그룹 배포
<a name="ml-console-deploy-group"></a>

이 단계에서는 그룹 정의의 현재 버전을 Greengrass 코어 장치로 배포합니다. 정의에는 추가한 Lambda 함수, 리소스 및 구독 구성이 포함됩니다.

1.  AWS IoT Greengrass 코어가 실행 중인지 확인합니다. 필요한 경우 Raspberry Pi 터미널에서 다음 명령을 실행합니다.

   1. 대몬(daemon)이 실행 중인지 확인하려면:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      출력에 `root`에 대한 `/greengrass/ggc/packages/1.11.6/bin/daemon` 입력이 포함되어 있는 경우에는 대몬(daemon)이 실행 중인 것입니다.
**참고**  
경로의 버전은 AWS IoT Greengrass 코어 디바이스에 설치된 코어 소프트웨어 버전에 따라 다릅니다.

   1. 대몬(daemon)을 시작하려면:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. 그룹 구성 페이지에서 **배포**를 선택합니다.  
![\[배포와 배포가 강조 표시된 그룹 페이지\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/console-group-deployments-deploy.png)

1. **Lambda 함수 탭**의 **시스템 Lambda 함수** 섹션에서 **IP 감지기**를 선택하고 **편집**을 선택합니다.

1. **IP 감지기 설정 편집** 대화 상자에서 **MQTT 브로커 엔드포인트 자동 탐지 및 재정의**를 선택합니다.

1. **저장**을 선택합니다.

   이렇게 하면 장치가 IP 주소, DNS, 포트 번호 등 코어의 연결 정보를 자동으로 획득할 수 있습니다. 자동 감지가 권장되지만 수동으로 지정된 엔드포인트 AWS IoT Greengrass 도 지원합니다. 그룹이 처음 배포될 때만 검색 방법 메시지가 표시됩니다.
**참고**  
메시지가 표시되면 [Greengrass 서비스 역할을](service-role.md) 생성하고 이를 현재의와 연결할 AWS 계정 수 있는 권한을 부여합니다 AWS 리전. 이 역할을 통해 AWS IoT Greengrass 는 AWS 서비스의 리소스에 액세스할 수 있습니다.

   **배포** 페이지에 배포 타임스탬프, 버전 ID, 상태가 표시됩니다. 완료되면 배포에 대해 **성공적으로 완료했습니다** 상태가 표시되어야 합니다.

   배포에 대한 자세한 내용은 [AWS IoT Greengrass 코어에 AWS IoT Greengrass 그룹 배포](deployments.md) 섹션을 참조하세요. 문제 해결에 대한 도움말은 [문제 해결 AWS IoT Greengrass](gg-troubleshooting.md) 섹션을 참조하세요.

## 9단계: 추론 앱 테스트
<a name="ml-console-test-app"></a>

이제 배포가 올바르게 구성되었는지 확인할 수 있습니다. 테스트하려면 `hello/world` 주제를 구독하고 Lambda 함수가 게시하는 예측 결과를 봅니다.

**참고**  
Raspberry Pi에 모니터가 연결된 경우 라이브 카메라 피드가 미리 보기 창에 표시됩니다.

1.  AWS IoT 콘솔의 **테스트**에서 **MQTT 테스트 클라이언트**를 선택합니다.

1. [**Subscriptions**]에서 다음 값을 사용합니다.
   + 구독 주제에 hello/world를 사용합니다.
   + **MQTT 페이로드 표시**의 경우 **추가 구성**에서 **페이로드를 문자열로 표시**를 선택합니다.

1. **구독**을 선택합니다.

   테스트가 성공적인 경우 페이지 하단에 Lambda 함수로부터의 메시지가 표시됩니다. 각 메시지에는 이미지의 상위 5개 예측 결과가 포함되며 가능성, 예측된 클래스 ID 및 해당 클래스 이름 형식을 사용합니다.  
![\[메시지 데이터가 포함된 테스트 결과를 보여주는 Subscriptions 페이지\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/ml-inference/prediction-results.png)

### AWS IoT Greengrass ML 추론 문제 해결
<a name="ml-inference-troubleshooting"></a>

테스트가 성공적이지 않은 경우 다음 문제 해결 단계를 시도할 수 있습니다. Raspberry Pi 터미널에서 명령을 실행합니다.

#### 오류 로그 확인
<a name="troubleshooting-check-logs"></a>

1. <a name="root-access-logs"></a>루트 사용자로 전환하고 `log` 디렉터리로 이동합니다. AWS IoT Greengrass 로그에 액세스하려면 루트 권한이 필요합니다.

   ```
   sudo su
   cd /greengrass/ggc/var/log
   ```

1. `system` 디렉터리에서 `runtime.log` 또는 `python_runtime.log`를 확인합니다.

   `user/region/account-id` 디렉터리에서 `greengrassObjectClassification.log`를 확인합니다.

   자세한 내용은 [로그 문제 해결](gg-troubleshooting.md#troubleshooting-logs) 단원을 참조하십시오.

##### runtime.log의 압축 해제 오류
<a name="troubleshooting-targz-unpacking"></a>

`runtime.log`에 다음과 유사한 오류가 포함된 경우 `tar.gz` 소스 모델 패키지에 상위 디렉터리가 있어야 합니다.

```
Greengrass deployment error: unable to download the artifact model-arn: Error while processing. 
Error while unpacking the file from /tmp/greengrass/artifacts/model-arn/path to /greengrass/ggc/deployment/path/model-arn,
error: open /greengrass/ggc/deployment/path/model-arn/squeezenet/squeezenet_v1.1-0000.params: no such file or directory
```

패키지에 모델 파일을 포함하는 상위 디렉터리가 없는 경우 다음 명령을 사용하여 모델을 리패키지합니다.

```
tar -zcvf model.tar.gz ./model
```

예제:

```
─$ tar -zcvf test.tar.gz ./test
./test
./test/some.file
./test/some.file2
./test/some.file3
```

**참고**  
이 명령에 후행 `/*` 문자를 포함시키지 마십시오.

 

#### Lambda 함수가 성공적으로 배포되었는지 확인
<a name="troubleshooting-check-lambda"></a>

1. `/lambda` 디렉터리에 있는 배포된 Lambda의 내용을 나열합니다. 명령을 실행하기 전에 자리 표시자 값을 바꿉니다.

   ```
   cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-version
   ls -la
   ```

1. 디렉터리에 [4단계: Lambda 함수 생성 및 게시](#ml-console-create-lambda)에 업로드한 `greengrassObjectClassification.zip` 배포 패키지와 동일한 콘텐츠가 들어 있는지 확인하십시오.

   `.py` 파일 및 종속성이 디렉터리의 루트에 있는지 확인합니다.

 

#### 추론 모델이 성공적으로 배포되었는지 확인
<a name="troubleshooting-check-model"></a>

1. Lambda 런타임 프로세스의 프로세스 식별 번호(PID)를 찾습니다.

   ```
   ps aux | grep 'lambda-function-name*'
   ```

   출력의 Lambda 런타임 프로세스에 대한 행의 두 번째 열에 PID가 표시됩니다.

1. Lambda 런타임 네임스페이스를 입력합니다. 명령을 실행하기 전에 자리 표시자 *pid* 값을 바꿔야 합니다.
**참고**  
이 디렉터리 및 내용은 Lambda 런타임 네임스페이스입니다. 따라서 정규 Linux 네임스페이스에서는 보이지 않습니다.

   ```
   sudo nsenter -t pid -m /bin/bash
   ```

1. ML 리소스에 대해 지정한 로컬 디렉터리의 내용을 나열합니다.

   ```
   cd /greengrass-machine-learning/mxnet/squeezenet/
   ls -ls
   ```

   다음 파일이 표시됩니다.

   ```
   32 -rw-r--r-- 1 ggc_user ggc_group   31675 Nov 18 15:19 synset.txt
   32 -rw-r--r-- 1 ggc_user ggc_group   28707 Nov 18 15:19 squeezenet_v1.1-symbol.json
   4832 -rw-r--r-- 1 ggc_user ggc_group 4945062 Nov 18 15:19 squeezenet_v1.1-0000.params
   ```

## 다음 단계
<a name="next-steps"></a>

다음으로 다른 추론 앱을 살펴봅니다.는 로컬 추론을 시도하는 데 사용할 수 있는 다른 Lambda 함수를 AWS IoT Greengrass 제공합니다. [2단계: MXNet 프레임워크 설치](#install-mxnet) 단계에서 다운로드한 프리컴파일 라이브러리 폴더에서 예제 패키지를 찾을 수 있습니다.

## Intel Atom 구성
<a name="atom-lambda-config"></a>

 Intel Atom 장치에서 이 자습서를 실행하려면 소스 이미지를 제공하고 Lambda 함수를 구성한 후 다른 로컬 장치 리소스를 추가합니다. 추론에 GPU를 사용하려면 다음 소프트웨어가 장치에 설치되어 있어야 합니다.
+ OpenCL 버전 1.0 이상
+ Python 3.7 및 pip
**참고**  
장치가 Python 3.6으로 미리 빌드된 경우 Python 3.7에 대한 심볼 링크를 대신 만들 수 있습니다. 자세한 내용은 [Step 2](#python-symlink) 단원을 참조하십시오.
+ [NumPy](https://pypi.org/project/numpy/)
+ [OpenCV on Wheels](https://pypi.org/project/opencv-python/)

1. 이미지 분류에 사용하기 위해 Lambda 함수에 대한 정적 PNG 또는 JPG 이미지를 다운로드합니다. 이 예제는 작은 이미지 파일에 가장 효과적입니다.

   `greengrassObjectClassification.py` 파일이 들어 있는 디렉터리(또는 이 디렉터리의 하위 디렉터리)에 이미지 파일을 저장합니다. 이 파일은 [4단계: Lambda 함수 생성 및 게시](#ml-console-create-lambda)에서 업로드하는 Lambda 함수 배포 패키지에 있습니다.
**참고**  
 를 사용하는 경우 온보드 카메라를 사용하거나 자체 카메라를 탑재하여 정적 이미지 대신 캡처된 이미지에 대한 추론을 수행할 AWS DeepLens수 있습니다. 그러나 정적 이미지부터 시작하는 것이 좋습니다.  
카메라를 사용하는 경우 `awscam` APT 패키지가 설치되어 있고 최신 상태여야 합니다. 자세한 내용은 *AWS DeepLens 개발자 안내서*의 [AWS DeepLens 코어 장치 설정](https://docs.aws.amazon.com/deeplens/latest/dg/deeplens-manual-updates.html) 섹션을 참조하세요.

1. <a name="python-symlink"></a>Python 3.7을 사용하고 있다면 Python 3.x에서 Python 3.7로 심볼 링크를 만들어야 합니다. 이렇게 하면 Python 3를와 함께 사용하도록 디바이스가 구성됩니다 AWS IoT Greengrass. 다음 명령을 실행하여 Python 설치를 찾습니다.

   ```
   which python3
   ```

   다음 명령을 실행하여 심볼 링크(symlink)를 생성합니다.

   ```
   sudo ln -s path-to-python-3.x/python3.x path-to-python-3.7/python3.7
   ```

   장치를 재부팅합니다.

1. Lambda 함수 구성을 편집합니다. [5단계: Greengrass 그룹에 Lambda 함수 추가](#ml-console-config-lambda)의 프로시저를 따르세요.
**참고**  
 비즈니스 사례에서 요구하지 않는 한 컨테이너화 없이 Lambda 함수를 실행하는 것이 좋습니다. 이렇게 하면 장치 리소스를 구성하지 않고도 장치 GPU와 카메라에 액세스할 수 있습니다. 컨테이너화 없이를 실행하는 경우 AWS IoT Greengrass Lambda 함수에 대한 루트 액세스 권한도 부여해야 합니다.

   1. **컨테이너화 없이 실행하려면:**
      + **시스템 사용자 및 그룹**의 경우 **Another user ID/group ID**을(를) 선택합니다. **시스템 사용자 ID**에 **0**을(를) 입력합니다. **시스템 그룹 ID**에 **0**을(를) 입력합니다.

        이렇게 하면 Lambda 함수를 루트로 실행할 수 있습니다. 작업 실행 방법에 대한 자세한 내용은 [그룹에 있는 Lambda 함수의 기본 액세스 자격 증명 설정](lambda-group-config.md#lambda-access-identity-groupsettings) 섹션을 참조하세요.
**작은 정보**  
또한 Lambda 함수에 루트 액세스 권한을 부여하도록 `config.json` 파일을 업데이트해야 합니다. 이 절차는 [루트로서의 Lambda 함수 실행](lambda-group-config.md#lambda-running-as-root) 섹션을 참조하세요.
      + **Lambda 함수 컨테이너화**의 경우 **컨테이너 없음**을 선택합니다.

        속도 제어 자동화 실행에 대한 자세한 내용은 [Lambda 함수 컨테이너화 선택 시 고려 사항](lambda-group-config.md#lambda-containerization-considerations) 섹션을 참조하세요.
      + **제한 시간** 값을 5초로 업데이트합니다. 이렇게 하면 요청이 제한 시간에 너무 빨리 도달하는 경우를 피할 수 있습니다. 설정 후 추론이 실행되려면 몇 분이 걸립니다.
      + **고정**에서 **True**를 선택합니다.
      + **추가 매개 변수**에서 **/sys 디렉터리에 대한 읽기 액세스**에 대해 **활성화**를 선택합니다.
      +  **Lambda 수명 주기**에 대해 **Make this function long-lived and keep it running indefinitely**를 선택합니다.

   1.  **대신 컨테이너화 모드에서 실행하려면:** 
**참고**  
비즈니스 사례에서 요구하는 경우가 아니면 컨테이너화 모드에서 실행하지 않는 것이 좋습니다.
      + **제한 시간** 값을 5초로 업데이트합니다. 이렇게 하면 요청이 제한 시간에 너무 빨리 도달하는 경우를 피할 수 있습니다. 설정 후 추론이 실행되려면 몇 분이 걸립니다.
      +  **고정된** 경우 **True**를 선택합니다.
      + **추가 매개 변수**에서 **/sys 디렉터리에 대한 읽기 액세스**에 대해 **활성화**를 선택합니다.

1. **컨테이너화 모드에서 실행 중인 경우** 필요한 로컬 장치 리소스를 추가하여 장치 GPU에 대한 액세스 권한을 부여하십시오.
**참고**  
컨테이너화되지 않은 모드에서를 실행하는 경우는 디바이스 리소스를 구성하지 않고 디바이스 GPU에 액세스할 AWS IoT Greengrass 수 있습니다.

   1. 그룹 구성 페이지에서 **리소스**를 선택합니다.

   1. **로컬 리소스 추가**를 선택합니다.

   1. 리소스를 정의합니다.
      + **리소스 이름**에 **renderD128**을 입력합니다.
      + **리소스 유형**에서 **로컬 장치**를 선택합니다.
      + **장치 경로**에 **/dev/dri/renderD128**을 입력합니다.
      + [**Group owner file access permission**]에서 [**Automatically add OS group permissions of the Linux group that owns the resource**]를 선택합니다.
      + **Lambda 함수 제휴**의 경우 Lambda 함수에 대한 **읽기 및 쓰기 액세스 권한**을 부여하십시오.

## NVIDIA Jetson TX2 구성
<a name="jetson-lambda-config"></a>

NVIDIA Jetson TX2에서 이 자습서를 실행하려면 소스 이미지를 제공하고 Lambda 함수를 구성합니다. GPU를 사용하는 경우 로컬 장치 리소스도 추가해야 합니다.

1.  AWS IoT Greengrass 코어 소프트웨어를 설치할 수 있도록 Jetson 디바이스가 구성되어 있는지 확인합니다. 장치 구성에 대한 자세한 내용은 [다른 장치 설정](setup-filter.other.md) 단원을 참조하십시오.

1. MXNet 설명서의 [Jetson에 MXNet 설치](https://mxnet.apache.org/get_started/jetson_setup)에 나온 지침을 따라 Jetson 장치에 MXNet을 설치합니다.
**참고**  
 소스에서 MXNet을 빌드하려면 지침을 따라 공유 라이브러리를 빌드합니다. Jetson TX2 장치에서 작동하도록 `config.mk` 파일에서 다음 설정을 편집합니다.  
`CUDA_ARCH` 설정에 `-gencode arch=compute-62, code=sm_62`를 추가합니다.
CUDA를 활성화합니다.  

     ```
     USE_CUDA = 1
     ```

1. 이미지 분류에 사용하기 위해 Lambda 함수에 대한 정적 PNG 또는 JPG 이미지를 다운로드합니다. 이 앱은 작은 이미지 파일에 가장 적합합니다. 또는 Jetson 보드의 카메라를 구성하여 소스 이미지를 캡처할 수 있습니다.

   `greengrassObjectClassification.py` 파일이 들어 있는 디렉터리에 이미지 파일을 저장합니다. 이 디렉터리의 하위 디렉터리에 저장할 수도 있습니다. 이 디렉터리는 [4단계: Lambda 함수 생성 및 게시](#ml-console-create-lambda)에서 업로드하는  Lambda 함수 배포 패키지에 있습니다.

1. Python 3.7에서 Python 3.6으로의 symlink를 생성하여 Python 3을와 함께 사용합니다 AWS IoT Greengrass. 다음 명령을 실행하여 Python 설치를 찾습니다.

   ```
   which python3
   ```

   다음 명령을 실행하여 심볼 링크(symlink)를 생성합니다.

   ```
   sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
   ```

   장치를 재부팅합니다.

1. `ggc_user` 시스템 계정에서 MXNet 프레임워크를 사용할 수 있는지 확인합니다.

   ```
   “sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
   ```

1. Lambda 함수 구성을 편집합니다. [5단계: Greengrass 그룹에 Lambda 함수 추가](#ml-console-config-lambda)의 프로시저를 따르세요.
**참고**  
 비즈니스 사례에서 요구하지 않는 한 컨테이너화 없이 Lambda 함수를 실행하는 것이 좋습니다. 이렇게 하면 장치 리소스를 구성하지 않고도 장치 GPU와 카메라에 액세스할 수 있습니다. 컨테이너화 없이를 실행하는 경우 AWS IoT Greengrass Lambda 함수에 대한 루트 액세스 권한도 부여해야 합니다.

   1. **컨테이너화 없이 실행하려면:**
      + **시스템 사용자 및 그룹**의 경우 **Another user ID/group ID**을(를) 선택합니다. **시스템 사용자 ID**에 **0**을(를) 입력합니다. **시스템 그룹 ID**에 **0**을(를) 입력합니다.

        이렇게 하면 Lambda 함수를 루트로 실행할 수 있습니다. 작업 실행 방법에 대한 자세한 내용은 [그룹에 있는 Lambda 함수의 기본 액세스 자격 증명 설정](lambda-group-config.md#lambda-access-identity-groupsettings) 섹션을 참조하세요.
**작은 정보**  
또한 Lambda 함수에 루트 액세스 권한을 부여하도록 `config.json` 파일을 업데이트해야 합니다. 이 절차는 [루트로서의 Lambda 함수 실행](lambda-group-config.md#lambda-running-as-root) 섹션을 참조하세요.
      + **Lambda 함수 컨테이너화**의 경우 **컨테이너 없음**을 선택합니다.

        속도 제어 자동화 실행에 대한 자세한 내용은 [Lambda 함수 컨테이너화 선택 시 고려 사항](lambda-group-config.md#lambda-containerization-considerations) 섹션을 참조하세요.
      + **추가 매개 변수**에서 **/sys 디렉터리에 대한 읽기 액세스**에 대해 **활성화**를 선택합니다.
      +  **환경 변수**에서 다음 키-값 페어를 Lambda 함수에 추가합니다. MXNet 프레임워크 AWS IoT Greengrass 를 사용하도록를 구성합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/ml-console.html)

   1.  **대신 컨테이너화 모드에서 실행하려면:** 
**참고**  
비즈니스 사례에서 요구하는 경우가 아니면 컨테이너화 모드에서 실행하지 않는 것이 좋습니다.
      + **메모리 제한** 값을 늘립니다. CPU의 경우 500MB를, GPU의 경우 최소 2,000MB를 사용합니다.
      + **추가 매개 변수**에서 **/sys 디렉터리에 대한 읽기 액세스**에 대해 **활성화**를 선택합니다.
      +  **환경 변수**에서 다음 키-값 페어를 Lambda 함수에 추가합니다. MXNet 프레임워크 AWS IoT Greengrass 를 사용하도록를 구성합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/ml-console.html)

1. **컨테이너화 모드에서 실행 중인 경우** 다음의 로컬 장치 리소스를 추가하여 장치 GPU에 대한 액세스 권한을 부여하십시오. [6단계: Greengrass 그룹에 리소스 추가](#ml-console-add-resources)의 프로시저를 따르세요.
**참고**  
 컨테이너화되지 않은 모드에서를 실행하는 경우는 디바이스 리소스를 구성하지 않고 디바이스 GPU에 액세스할 AWS IoT Greengrass 수 있습니다.

   각 리소스의 경우:
   + [**Resource type**]에서 [**Device**]를 선택합니다.
   + [**Group owner file access permission**]에서 [**Automatically add OS group permissions of the Linux group that owns the resource**]를 선택합니다.

          
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/ml-console.html)

1. **컨테이너화 모드에서 실행 중인 경우** 다음 로컬 볼륨 리소스를 추가하여 장치 카메라에 대한 액세스 권한을 부여하세요. [6단계: Greengrass 그룹에 리소스 추가](#ml-console-add-resources)의 프로시저를 따르세요.
**참고**  
 컨테이너화되지 않은 모드에서를 실행하는 경우는 볼륨 리소스를 구성하지 않고 디바이스 카메라에 액세스할 AWS IoT Greengrass 수 있습니다.
   + [**리소스 유형(Resource type)**]에서 [**볼륨(Volume)**]을 선택합니다.
   + [**Group owner file access permission**]에서 [**Automatically add OS group permissions of the Linux group that owns the resource**]를 선택합니다.

          
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/ml-console.html)