

지원 종료 공지: 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)을 참조하세요.

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

# 모듈 6: 다른 AWS 서비스에 액세스
<a name="module6"></a>

이 고급 모듈은 AWS IoT Greengrass 코어가 클라우드의 다른 AWS 서비스와 상호 작용하는 방법을 보여줍니다. 이 모듈은 [모듈 5](module5.md)의 신호등 예제를 기반으로 하며, 섀도우 상태를 처리하는 Lambda 함수를 추가하고 클라우드의 Amazon DynamoDB 테이블로 요약을 업로드합니다.

![\[AWS IoT 라이트 스위치 디바이스 및 트래픽 라이트 디바이스 섀도우에 연결된 AWS IoT Greengrass 코어에 연결됩니다. 신호등 장치 섀도우는 DynamoDB 테이블에 연결된 Lambda 함수에 연결되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-089.5.png)


시작하기 전에 [Greengrass 장치 설정](quick-start.md) 스크립트를 실행하거나 [모듈 1](module1.md) 및 [모듈 2](module2.md)를 완료했는지 확인합니다. 또한 [모듈 5](module5.md)도 완료해야 합니다. 다른 구성 요소나 장치는 필요하지 않습니다.

이 모듈을 완료하는 데 약 30분 정도 걸립니다.

**참고**  
이 모듈에서는 DynamoDB에서 테이블을 생성하고 업데이트합니다. 대부분의 작업이 간단하고 Amazon Web Services 프리 티어 내에 속하지만 이 모듈의 일부 단계를 수행하면 계정에 요금이 청구될 수 있습니다. 요금에 대한 자세한 내용은 [DynamoDB 요금 설명서](https://aws.amazon.com/dynamodb/pricing/)를 참조하십시오.

**Topics**
+ [그룹 역할 구성](config-iam-roles.md)
+ [Lambda 함수 생성 및 구성](create-config-lambda.md)
+ [구독 구성](config_subs.md)
+ [통신 테스트](comms-test.md)

# 그룹 역할 구성
<a name="config-iam-roles"></a>

그룹 역할은 사용자가 생성하고 Greengrass 그룹에 연결하는 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)입니다. 이 역할에는 배포된 Lambda 함수(및 기타 AWS IoT Greengrass 기능)가 AWS 서비스에 액세스하는 데 사용하는 권한이 포함되어 있습니다. 자세한 내용은 [Greengrass 그룹 역할](group-role.md) 단원을 참조하십시오.

IAM 콘솔에서 그룹 역할을 생성하려면 다음과 같은 상위 단계를 사용합니다.

1. 하나 이상의 리소스에 대한 작업을 허용하거나 거부하는 정책을 생성합니다.

1. Greengrass 서비스를 신뢰할 수 있는 엔터티로 사용하는 역할을 생성합니다.

1. 역할에 정책을 연결합니다.

그런 다음 AWS IoT 콘솔에서 Greengrass 그룹에 역할을 추가합니다.

**참고**  
Greengrass 그룹에는 하나의 그룹 역할이 있습니다. 권한을 추가하려면 연결된 정책을 편집하거나 더 많은 정책을 연결할 수 있습니다.

 

이 튜토리얼에서는 Amazon DynamoDB 테이블에서 작업 설명, 생성 및 업데이트를 허용하는 권한 정책을 생성합니다. 그런 다음, 정책을 새 역할로 연결한 뒤 해당 역할을 사용자의 Greengrass 그룹으로 연결합니다.

먼저 이 모듈에서 Lambda 함수가 요구하는 권한을 부여하는 고객 관리형 정책을 생성합니다.

1. IAM 콘솔의 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택하세요.

1. **JSON** 탭에서 자리 표시자 콘텐츠를 다음 정책으로 바꿉니다. 이 모듈의 Lambda 함수는 `CarStats`라는 이름이 지정된 DynamoDB 테이블을 생성 및 업데이트하는 해당 권한들을 사용합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PermissionsForModule6",
               "Effect": "Allow",
               "Action": [
                   "dynamodb:DescribeTable",
                   "dynamodb:CreateTable",
                   "dynamodb:PutItem"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/CarStats"
           }
       ]
   }
   ```

------

1. **Next: Tags(다음: 태그)**를 선택한 후 **Next: Review(다음: 검토)**를 선택합니다. 태그가 이 튜토리얼에서 사용되지 않습니다.

1. **이름**의 경우, **greengrass\$1CarStats\$1Table**을(를) 입력한 후 **정책 생성**을 선택합니다.

    

   그런 다음, 새 정책을 사용하는 역할을 생성합니다.

1. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스**를 선택합니다.

1. **사용 사례**, **기타 AWS 서비스 사용 사례**에서 **Greengrass**를 선택하고, **Greengrass**를 선택한 후, **다음**을 선택합니다.

1. **권한 정책**에서 새 **greengrass\$1CarStats\$1Table** 정책을 선택한 후 **다음**을 선택합니다.

1. **역할 이름**에 **Greengrass\$1Group\$1Role**을 입력합니다.

1. **설명**에 **Greengrass group role for connectors and user-defined Lambda functions**를 입력합니다.

1. **역할 생성**을 선택합니다.

   이제 Greengrass 그룹에 해당 역할을 연결합니다.

1. <a name="console-gg-groups"></a> AWS IoT 콘솔 탐색 창의 **관리**에서 **Greengrass 디바이스**를 확장한 다음 **그룹(V1)을** 선택합니다.

1. **Greengrass 그룹**에서 사용자 그룹을 선택합니다.

1. **설정**을 선택한 후 **역할 연결**을 선택합니다.

1. 역할 목록에서 **Greengrass\$1Group\$1Role**을 선택한 다음 **역할 연결**을 선택합니다.

# Lambda 함수 생성 및 구성
<a name="create-config-lambda"></a>

이 단계에서는 신호등을 통과하는 차량들의 수를 추적하는 Lambda 함수를 만듭니다. 이 Lambda 함수는 `GG_TrafficLight` 섀도우 상태가 `G`로 변경될 때마다 임의의 수의 자동차(1\$120대)가 통과하는 것을 시뮬레이션합니다. 세 번째 `G` 불빛이 바뀔 때마다 Lambda 함수는 최소값 및 최대값과 같은 기본 통계를 DynamoDB 테이블로 전송합니다.

1. 컴퓨터에 `car_aggregator`라는 이름의 폴더를 하나 만듭니다.

1. GitHub의 [TrafficLight](https://github.com/aws/aws-greengrass-core-sdk-python/tree/master/examples/TrafficLight) 예제 폴더에서 `carAggregator.py` 파일을 `car_aggregator` 폴더로 다운로드합니다. 이 항목은 Lambda 함수 코드입니다.
**참고**  
이 예제 Python 파일은 편의를 위해 AWS IoT Greengrass 코어 SDK 리포지토리에 저장되지만 AWS IoT Greengrass 코어 SDK는 사용하지 않습니다.

1. 미국 동부(버지나 북부) 리전에서 작업하지 않는 경우를 `carAggregator.py` 열고 다음 줄`region_name`을 AWS IoT 콘솔에서 현재 선택한 로 AWS 리전 변경합니다. 지원되는 목록은의 AWS 리전섹션을 참조[AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)하세요*Amazon Web Services 일반 참조*.

   ```
   dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
   ```

1. [명령줄](https://en.wikipedia.org/wiki/Command-line_interface) 창에서 다음 명령을 실행하여 [AWS SDK for Python (Boto3)](https://github.com/boto/boto3/blob/develop/README.rst) 패키지와 종속 항목을 `car_aggregator` 폴더에 설치합니다. Greengrass Lambda 함수는 AWS SDK를 사용하여 다른 AWS 서비스에 액세스합니다. (Windows의 경우, [관리자 권한 명령 프롬프트](https://technet.microsoft.com/en-us/library/cc947813(v=ws.10).aspx)를 사용합니다.)

   ```
   pip install boto3 -t path-to-car_aggregator-folder
   ```

   그러면 다음과 유사한 디렉터리 목록이 생성됩니다.  
![\[carAggregator.py를 보여주는 디렉터리 목록 스크린샷\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-095.png)

1. `car_aggregator` 폴더의 내용을 `car_aggregator.zip`이라는 이름의 `.zip` 파일로 압축합니다. (폴더의 내용(폴더가 아닌)을 압축합니다.) 이것이 Lambda 함수 배포 패키지입니다.

1. Lambda 콘솔에서 **GG\$1Car\$1Aggregator**(이)라는 함수를 생성하고 나머지 필드들을 다음과 같이 설정합니다.
   + **실행 시간**에서 **Python 3.7**을 선택합니다.
   + **권한**의 경우, 기본 설정을 유지합니다. 이를 통해 기본 Lambda 권한을 부여하는 실행 역할을 생성합니다. 이 역할은에서 사용되지 않습니다 AWS IoT Greengrass.

   **함수 생성**을 선택합니다.  
![\[함수 이름이 GG_Car_Aggregator로 설정되고 런타임이 Python 3.7로 설정된 기본 정보 섹션.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/gg-get-started-095.5.png)

1. 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. 업로드를 선택한 다음 `car_aggregator.zip` 배포 패키지를 선택합니다. 그런 다음 **저장**을 선택합니다.

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

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

1. Lambda 함수를 게시하고 **GG\$1CarAggregator**(이)라는 별칭을 생성합니다. 단계별 지침은 모듈 3 (1부)의 [Lambda 함수](create-lambda.md#publish-function-version) 게시와 [별칭 생성](create-lambda.md#create-version-alias) 단계를 참조하십시오.

1.  AWS IoT 콘솔에서 방금 생성한 Lambda 함수를 AWS IoT Greengrass 그룹에 추가합니다.

   1. 그룹 구성 페이지에서 **Lambda 함수**를 선택한 다음 **내 Lambda 함수**에서 **추가**를 선택합니다.

   1. **Lambda 함수**의 경우 **GG\$1CAR\$1Aggregator**를 선택하십시오.

   1. **Lambda 함수 버전**에서 게시한 버전에 대한 별칭을 선택합니다.

   1. **메모리 제한**에 **64 MB**를 입력합니다.

   1. **고정된** 경우 **True**를 선택합니다.

   1. **Lambda 함수 추가**를 선택합니다.
**참고**  
이전 모듈의 다른 Lambda 함수를 제거해도 됩니다.

# 구독 구성
<a name="config_subs"></a>

이 단계에서 GG\$1TrafficLight 섀도우가 업데이트된 상태 정보를 GG\$1Car\$1Aggregator Lambda 함수에 전송할 수 있게 해주는 구독을 생성합니다. 이 구독은 사용자가 [모듈 5](module5.md)에서 생성한 구독들에 추가되며, 이 모두가 이 모듈에 필요한 것입니다.

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

1. **구독 생성** 페이지에서 다음을 수행합니다.

   1. **소스 유형**의 경우, **서비스**를 선택한 다음 **로컬 섀도우 서비스**를 선택합니다.

   1. **대상 유형**에서 **Lambda 함수**를 선택한 다음 **GG\$1Car\$1Aggregator**을 선택합니다.

   1. **주제 필터**에 **\$1aws/things/GG\$1TrafficLight/shadow/update/documents**를 입력합니다.

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

   이 모듈에서는 모듈 5에서 생성한 [구독](config-dev-subs.md#module5-subscriptions)과 새 구독이 필요합니다.

1. [코어 장치로 클라우드 구성 배포](configs-core.md) 섹션에 설명된 대로 Greengrass 대몬(daemon)이 실행 중인지 확인합니다.

1. <a name="console-actions-deploy"></a>그룹 구성 페이지에서 **배포**를 선택합니다.

# 통신 테스트
<a name="comms-test"></a>

1. 컴퓨터에서 2개의 [명령줄](https://en.wikipedia.org/wiki/Command-line_interface) 창을 엽니다. [모듈 5](module5.md)에서처럼 창 하나는 GG\$1Switch 장치에, 다른 창 하나는 GG\$1TrafficLight 클라이언트 장치에 사용됩니다. 이러한 창을 사용하여 모듈 5에서 실행한 것과 동일한 명령을 실행합니다.

   GG\$1Switch 클라이언트 장치에 대해 다음 명령을 실행합니다.

   ```
   cd path-to-certs-folder
   python lightController.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert switchCertId-certificate.pem.crt --key switchCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_Switch
   ```

   GG\$1TrafficLight 클라이언트 장치에 대해 다음 명령을 실행합니다.

   ```
   cd path-to-certs-folder
   python trafficLight.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert lightCertId-certificate.pem.crt --key lightCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_TrafficLight
   ```

   스위치는 20초마다 섀도우 상태를 G, Y 및 R로 업데이트하고, 전등도 새로운 상태를 표시합니다.

1. 세 번째 녹색 불빛이 들어올 때마다(3분마다) Lambda 함수의 함수 핸들러가 트리거되고 새 레코드가 생성됩니다. `lightController.py` 및 `trafficLight.py`가 3분 동안 실행된 후 AWS Management Console로 이동하여 DynamoDB 콘솔을 엽니다.

1.  AWS 리전 메뉴에서 **미국 동부(버지니아 북부)**를 선택합니다. 이는 `GG_Car_Aggregator` 함수가 테이블을 생성하는 리전입니다.

1. 탐색 창에서 **테이블**을 선택한 다음 **CarStats** 테이블을 선택합니다.

1. **항목 보기**를 선택하여 테이블의 항목을 확인합니다.

   통과한 차에 대한 기본 통계가 포함된 항목이 보여야 합니다(3분마다 항목 하나). 테이블에 대한 업데이트를 보려면 새로 고침 버튼을 선택해야 할 수도 있습니다.

1. 테스트가 실패하면 Greengrass 로그에서 문제 해결 정보를 찾을 수 있습니다.

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

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

   1. `runtime.log`에서 오류가 있는지 확인합니다.

      ```
      cat system/runtime.log | grep 'ERROR'
      ```

   1. Lambda 함수에 의해 생성되는 로그를 확인합니다.

      ```
      cat user/region/account-id/GG_Car_Aggregator.log
      ```

      <a name="check-connection-info"></a> `lightController.py` 및 `trafficLight.py` 스크립트는 스크립트와 동일한 폴더에 생성되는 `groupCA` 폴더에 연결 정보를 저장합니다. 연결 오류를 수신하는 경우 `ggc-host` 파일의 IP 주소가 이 단계에서 코어에 대해 구성한 단일 IP 주소 엔드포인트와 일치하는지 확인합니다.

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

기본 자습서의 마지막 부분입니다. 이제 프로그래밍 모델과 AWS IoT Greengrass 코어, 그룹, 구독, 클라이언트 디바이스, 엣지에서 실행되는 Lambda 함수의 배포 프로세스를 비롯한 기본 개념을 이해해야 AWS IoT Greengrass 합니다.

DynamoDB 표와 Greengrass Lambda 함수 및 구독을 삭제할 수 있습니다. AWS IoT Greengrass 코어 디바이스와 AWS IoT 클라우드 간의 통신을 중지하려면 코어 디바이스에서 터미널을 열고 다음 명령 중 하나를 실행합니다.
+  AWS IoT Greengrass 코어 디바이스를 종료하려면:

  ```
  sudo halt
  ```
+  AWS IoT Greengrass 데몬을 중지하려면:

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