

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

# AWS IoT 플릿 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어 설치
<a name="fleet-provisioning"></a>

이 기능은 [Greengrass nucleus 구성 요소](greengrass-nucleus-component.md) v2.4.0 이상에서 사용할 수 있습니다.

 AWS IoT 플릿 프로비저닝을 사용하면에 처음 연결할 때 X.509 디바이스 인증서와 프라이빗 키를 생성하고 디바이스 AWS IoT 에 안전하게 전송 AWS IoT 하도록를 구성할 수 있습니다.는 Amazon Root 인증 기관(CA)에서 서명한 클라이언트 인증서를 AWS IoT 제공합니다. 플릿 프로비저닝으로 프로비저닝하는 Greengrass 코어 디바이스에 대한 사물 그룹, 사물 유형 및 권한을 지정 AWS IoT 하도록를 구성할 수도 있습니다. *프로비저닝 템플릿을 정의*하여가 각 디바이스를 AWS IoT 프로비저닝하는 방법을 정의합니다. 프로비저닝 템플릿은 프로비저닝 시 디바이스에 대해 생성할 사물, 정책 및 인증서 리소스를 지정합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [프로비저닝 템플릿](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html)을 참조하세요.

AWS IoT Greengrass 는 AWS IoT 플릿 프로비저닝으로 생성된 AWS 리소스를 사용하여 AWS IoT Greengrass 코어 소프트웨어를 설치하는 데 사용할 수 있는 AWS IoT 플릿 프로비저닝 플러그인을 제공합니다. 플릿 프로비저닝 플러그인은 *클레임에 의한 프로비저닝*을 사용합니다. 디바이스는 프로비저닝 클레임 인증서와 프라이빗 키를 사용하여 일반 작업에 사용할 수 있는 고유한 X.509 디바이스 인증서와 프라이빗 키를 획득합니다. 제조 중에 클레임 인증서와 프라이빗 키를 각 디바이스에 내장할 수 있으므로 고객은 나중에 온라인 상태가 되면 각 디바이스를 활성화할 수 있습니다. 여러 디바이스에 동일한 클레임 인증서와 프라이빗 키를 사용할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [클레임에 의한 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based)을 참조하세요.

**참고**  
[Greengrass nucleus](greengrass-nucleus-component.md)용 플릿 프로비저닝 플러그인은 현재 프라이빗 키 및 인증서 파일을 하드웨어 보안 모듈(HSM)에 저장하는 기능을 지원하지 않습니다. [Greengrass nucleus](greengrass-nucleus-component.md)에서 HSM을 사용하려면 [수동 프로비저닝으로 AWS IoT Greengrass 코어 소프트웨어를 설치합니다](manual-installation.md). [Greengrass nucleus lite](greengrass-nucleus-lite-component.md) v2.5.0 이상은 기본적으로 플릿 프로비저닝이 있는 TPM을 지원합니다.

 AWS IoT 플릿 프로비저닝과 함께 AWS IoT Greengrass 코어 소프트웨어를 설치하려면가 Greengrass 코어 디바이스를 프로비저닝 AWS 계정 하는 데 AWS IoT 사용하는 리소스를에 설정해야 합니다. 이러한 리소스에는 프로비저닝 템플릿, 클레임 인증서 및 [토큰 교환 IAM 역할](device-service-role.md)이 포함됩니다. 이러한 리소스를 생성한 후 재사용하여 플릿에 여러 코어 디바이스를 프로비저닝할 수 있습니다. 자세한 내용은 [Greengrass 코어 디바이스에 대한 AWS IoT 플릿 프로비저닝 설정](fleet-provisioning-setup.md) 단원을 참조하십시오.

**중요**  <a name="install-greengrass-core-requirements-note"></a>
 AWS IoT Greengrass 코어 소프트웨어를 다운로드하기 전에 코어 디바이스가 AWS IoT Greengrass 코어 소프트웨어 v2.0 설치 및 실행 [요구 사항을](greengrass-nucleus-component.md#greengrass-v2-requirements) 충족하는지 확인합니다.

**Topics**
+ [사전 조건](#fleet-provisioning-prerequisites)
+ [AWS IoT 엔드포인트 검색](#retrieve-iot-endpoints)
+ [디바이스에 인증서 다운로드](#download-claim-certificates)
+ [디바이스 환경 설정](#set-up-device-environment)
+ [AWS IoT Greengrass 코어 소프트웨어 다운로드](#download-greengrass-core-v2)
+ [AWS IoT 플릿 프로비저닝 플러그인 다운로드](#download-fleet-provisioning-plugin)
+ [AWS IoT Greengrass 코어 소프트웨어 설치](#run-greengrass-core-v2-installer-fleet)
+ [Greengrass 코어 디바이스에 대한 AWS IoT 플릿 프로비저닝 설정](fleet-provisioning-setup.md)
+ [AWS IoT 플릿 프로비저닝 플러그인 구성](fleet-provisioning-configuration.md)
+ [AWS IoT 플릿 프로비저닝 플러그인 변경 로그](fleet-provisioning-changelog.md)

## 사전 조건
<a name="fleet-provisioning-prerequisites"></a>

 AWS IoT 플릿 프로비저닝과 함께 AWS IoT Greengrass 코어 소프트웨어를 설치하려면 먼저 [Greengrass 코어 디바이스에 대한 AWS IoT 플릿 프로비저닝을 설정해야](fleet-provisioning-setup.md) 합니다. 이 단계를 한 번 완료한 후 플릿 프로비저닝을 사용하여 원하는 수의 디바이스에 AWS IoT Greengrass 코어 소프트웨어를 설치할 수 있습니다.

## AWS IoT 엔드포인트 검색
<a name="retrieve-iot-endpoints"></a>

의 AWS IoT 엔드포인트를 가져 AWS 계정와 나중에 사용할 수 있도록 저장합니다. 디바이스에서는 이러한 엔드포인트를 사용하여 AWS IoT에 연결합니다. 해결 방법:

1. 의 AWS IoT 데이터 엔드포인트를 가져옵니다 AWS 계정.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

   ```
   {
     "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. 의 AWS IoT 자격 증명 엔드포인트를 가져옵니다 AWS 계정.

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

   ```
   {
     "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   }
   ```

## 디바이스에 인증서 다운로드
<a name="download-claim-certificates"></a>

디바이스는 클레임 인증서와 프라이빗 키를 사용하여 AWS 리소스를 프로비저닝하고 X.509 디바이스 인증서를 획득하기 위한 요청을 인증합니다. 제조 중에 클레임 인증서와 프라이빗 키를 디바이스에 내장하거나 설치 중에 인증서와 키를 디바이스에 복사할 수 있습니다. 이 섹션에서는 클레임 인증서와 프라이빗 키를 디바이스에 복사합니다. 또한 Amazon 루트 CA(인증 기관) 인증서를 디바이스에 다운로드할 수도 있습니다.

**중요**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS IoT모니터링](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html)를 참조하세요.  
디바이스 수와에 자신을 등록하는 디바이스를 더 잘 관리할 수 있도록 AWS 계정플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [사전 프로비저닝 후크](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html)를 참조하세요.

**디바이스에 클레임 인증서 다운로드**

1. 클레임 인증서와 프라이빗 키를 디바이스에 복사합니다. 개발 컴퓨터와 디바이스에서 SSH 및 SCP가 활성화된 경우 개발 컴퓨터에서 `scp` 명령을 사용하여 클레임 인증서와 프라이빗 키를 전송할 수 있습니다. 다음 예제 명령은 개발 컴퓨터의 `claim-certs` 폴더에서 이러한 파일을 디바이스로 전송합니다. *device-ip-address*를 디바이스의 IP 주소로 바꿉니다.

   ```
   scp -r claim-certs/ device-ip-address:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>디바이스에 Greengrass 루트 폴더를 생성합니다. 나중에이 폴더에 AWS IoT Greengrass 코어 소프트웨어를 설치합니다.
**참고**  
Windows의 경우 260자의 경로 길이 제한이 있습니다. Windows를 사용하는 경우 루트 폴더(예: `C:\greengrass\v2` 또는 `D:\greengrass\v2`)를 사용하여 Greengrass 구성 요소 경로를 260자 제한 미만으로 유지합니다.

------
#### [ Linux or Unix ]
   + `/greengrass/v2`를 사용할 폴더로 바꿉니다.

   ```
   sudo mkdir -p /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + *C:\$1greengrass\$1v2*를 사용할 폴더로 바꿉니다.

   ```
   mkdir C:\greengrass\v2
   ```

------
#### [ PowerShell ]
   + *C:\$1greengrass\$1v2*를 사용할 폴더로 바꿉니다.

   ```
   mkdir C:\greengrass\v2
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>(Linux만 해당) Greengrass 루트 폴더의 상위 권한을 설정합니다.
   + */greengrass*를 루트 폴더의 상위로 바꿉니다.

   ```
   sudo chmod 755 /greengrass
   ```

1. 클레임 인증서를 Greengrass 루트 폴더로 옮깁니다.
   + `/greengrass/v2` 또는 *C:\$1greengrass\$1v2*를 Greengrass 루트 폴더로 바꿉니다.

------
#### [ Linux or Unix ]

   ```
   sudo mv ~/claim-certs /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   move %USERPROFILE%\claim-certs C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   mv -Path ~\claim-certs -Destination C:\greengrass\v2
   ```

------

1. <a name="installation-download-root-ca-certificate"></a>Amazon 루트 인증 기관(CA) 인증서를 다운로드합니다. AWS IoT 인증서는 기본적으로 Amazon의 루트 CA 인증서와 연결됩니다.

------
#### [ Linux or Unix ]

   ```
   sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o C:\greengrass\v2\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\\AmazonRootCA1.pem
   ```

------

## 디바이스 환경 설정
<a name="set-up-device-environment"></a>

이 섹션의 단계에 따라 AWS IoT Greengrass 코어 디바이스로 사용할 Linux 또는 Windows 디바이스를 설정합니다.

### Linux 디바이스 설정
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**용 Linux 디바이스를 설정하려면 AWS IoT Greengrass V2**

1.  AWS IoT Greengrass 코어 소프트웨어가 실행해야 하는 Java 런타임을 설치합니다. [Amazon Corretto](https://aws.amazon.com/corretto/) 또는 [OpenJDK](https://openjdk.java.net/) 장기 지원 버전을 사용하는 것이 좋습니다. 버전 8 이상이 필요합니다. 다음 명령은 디바이스에 OpenJDK를 설치하는 방법을 보여줍니다.
   + Debian 기반 또는 Ubuntu 기반 배포판의 경우:

     ```
     sudo apt install default-jdk
     ```
   + Red Hat 기반 배포판의 경우:

     ```
     sudo yum install java-11-openjdk-devel
     ```
   + 대상 Amazon Linux 2:

     ```
     sudo amazon-linux-extras install java-openjdk11
     ```
   + Amazon Linux 2023의 경우:

     ```
     sudo dnf install java-11-amazon-corretto -y
     ```

   설치가 완료되면 다음 명령을 실행하여 Linux 디바이스에서 Java가 실행되는지 확인합니다.

   ```
   java -version
   ```

   디바이스에서 실행되는 Java 버전이 명령을 통해 인쇄됩니다. 예를 들어 Debian 기반 배포의 경우 출력이 다음 샘플과 유사할 수 있습니다.

   ```
   openjdk version "11.0.9.1" 2020-11-04
   OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
   OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
   ```

1. (선택 사항) 디바이스에서 구성 요소를 실행하는 기본 시스템 사용자와 그룹을 생성합니다. 설치 관리자 인수를 사용하여 설치하는 동안 AWS IoT Greengrass 코어 소프트웨어 `--component-default-user` 설치 관리자가이 사용자와 그룹을 생성하도록 선택할 수도 있습니다. 자세한 내용은 [설치 프로그램 인수](configure-installer.md) 단원을 참조하십시오.

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1.  AWS IoT Greengrass 코어 소프트웨어(일반적으로 `root`)를 실행하는 사용자에게 모든 사용자 및 모든 그룹에서를 실행할 수 `sudo` 있는 권한이 있는지 확인합니다.

   1. 다음 명령을 실행하여 `/etc/sudoers` 파일을 엽니다.

      ```
      sudo visudo
      ```

   1. 사용자에 대한 권한이 다음 예제와 같은지 확인합니다.

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. (선택 사항) [컨테이너화된 Lambda 함수를 실행](run-lambda-functions.md)하려면 [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1을 활성화하고 *memory* 및 *devices* cgroups를 활성화하고 탑재해야 합니다. 컨테이너화된 Lambda 함수를 실행할 계획이 없는 경우 이 단계를 건너뛸 수 있습니다.

   이러한 cgroups 옵션을 활성화하려면 다음 Linux 커널 파라미터로 디바이스를 부팅합니다.

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

   디바이스의 커널 파라미터를 보고 설정하는 방법에 대한 자세한 내용은 운영 체제 및 부트 로더 설명서를 참조하세요. 지침에 따라 커널 파라미터를 영구적으로 설정합니다.

1. [디바이스 요구 사항](greengrass-nucleus-component.md#greengrass-v2-requirements)의 요구 사항 목록에 따라 디바이스에 기타 모든 필수 종속성을 설치합니다.

### Windows 디바이스 설정
<a name="set-up-windows-device-environment"></a>

**참고**  
이 기능은 [Greengrass nucleus 구성 요소](greengrass-nucleus-component.md)의 v2.5.0 이상에서 사용할 수 있습니다.<a name="set-up-windows-device-environment-procedure"></a>

**용 Windows 디바이스를 설정하려면 AWS IoT Greengrass V2**

1.  AWS IoT Greengrass 코어 소프트웨어가 실행해야 하는 Java 런타임을 설치합니다. [Amazon Corretto](https://aws.amazon.com/corretto/) 또는 [OpenJDK](https://openjdk.java.net/) 장기 지원 버전을 사용하는 것이 좋습니다. 버전 8 이상이 필요합니다.

1. [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) 시스템 변수에서 Java를 사용할 수 있는지 확인하고 사용할 수 없는 경우 추가합니다. LocalSystem 계정은 AWS IoT Greengrass 코어 소프트웨어를 실행하므로 사용자의 PATH 사용자 변수 대신 PATH 시스템 변수에 Java를 추가해야 합니다. 해결 방법:

   1. Windows 키를 눌러 시작 메뉴를 엽니다.

   1. 시작 메뉴에서 **environment variables**를 입력하여 시스템 옵션을 검색합니다.

   1. 시작 메뉴 검색 결과에서 **시스템 환경 변수 편집**을 선택하여 **시스템 속성** 창을 엽니다.

   1. **환경 변수...**를 선택하여 **환경 변수** 창을 엽니다.

   1. **시스템 변수**에서 **경로**를 선택하고 **편집**을 선택합니다. **환경 변수 편집** 창에서 각 경로를 별도의 줄로 볼 수 있습니다.

   1. Java 설치 `bin` 폴더의 경로가 있는지 확인합니다. 경로는 다음 예제와 유사할 수 있습니다.

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. **경로**에서 Java 설치 `bin` 폴더가 누락된 경우 **새로 만들기**를 선택하여 추가한 다음 **확인**을 선택합니다.

1. <a name="set-up-windows-device-environment-open-cmd"></a>관리자 권한으로 Windows 명령 프롬프트(`cmd.exe`)를 엽니다.

1. <a name="set-up-windows-device-environment-create"></a>Windows 디바이스의 LocalSystem 계정에 기본 사용자를 생성합니다. *암호*를 안전한 암호로 바꿉니다.

   ```
   net user /add ggc_user password
   ```
**작은 정보**  <a name="windows-password-expiration-tip"></a>
Windows 구성에 따라 사용자의 암호가 미래의 날짜에 만료되도록 설정할 수 있습니다. Greengrass 애플리케이션이 계속 작동하도록 하려면 암호가 만료되는 시기를 추적하고 만료되기 전에 이를 업데이트합니다. 사용자의 암호가 만료되지 않도록 설정할 수도 있습니다.  
사용자와 암호가 만료되는 시기를 확인하려면 다음 명령을 실행합니다.  

     ```
     net user ggc_user | findstr /C:expires
     ```
사용자의 암호가 만료되지 않도록 설정하려면 다음 명령을 실행합니다.  

     ```
     wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
     ```
[`wmic` 명령이 더는 사용되지 않는](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) Windows 10 이상을 사용하는 경우 다음 PowerShell 명령을 실행합니다.  

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>Microsoft에서 [PsExec 유틸리티](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)를 다운로드하여 디바이스에 설치합니다.

1. <a name="set-up-windows-device-credentials"></a>PsExec 유틸리티를 사용하여 기본 사용자의 사용자 이름과 암호를 LocalSystem 계정의 Credential Manager 인스턴스에 저장합니다. 이전에 설정한 사용자의 암호로 *암호*를 바꿉니다.

   ```
   psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
   ```

   **PsExec License Agreement**가 열리면 **Accept**를 선택하여 라이선스에 동의하고 명령을 실행합니다.
**참고**  
Windows 디바이스에서 LocalSystem 계정은 Greengrass nucleus를 실행하고 PsExec 유틸리티를 사용하여 기본 사용자 정보를 LocalSystem 계정에 저장해야 합니다. Credential Manager 애플리케이션을 사용하면 이 정보가 LocalSystem 계정 대신 현재 로그인한 사용자의 Windows 계정에 저장됩니다.

## AWS IoT Greengrass 코어 소프트웨어 다운로드
<a name="download-greengrass-core-v2"></a>

다음 위치에서 최신 버전의 AWS IoT Greengrass 코어 소프트웨어를 다운로드할 수 있습니다.
+ [https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)

**참고**  
다음 위치에서 특정 버전의 AWS IoT Greengrass 코어 소프트웨어를 다운로드할 수 있습니다. 다운로드할 버전으로 *version*을 바꿉니다.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
```

**AWS IoT Greengrass 코어 소프트웨어를 다운로드하려면**

1. <a name="installation-download-ggc-software-step"></a>코어 디바이스에서 AWS IoT Greengrass 코어 소프트웨어를 라는 파일에 다운로드합니다`greengrass-nucleus-latest.zip`.

------
#### [ Linux or Unix ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip
   ```

------

   <a name="core-software-license"></a>이 소프트웨어를 다운로드하면 [ Greengrass 코어 소프트웨어 라이선스 계약](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)에 동의하는 것입니다.

1. <a name="verify-gg-nucleus-signature"></a>(선택 사항) Greengrass nucleus 소프트웨어 서명을 확인하려면
**참고**  
이 기능은 Greengrass nucleus 버전 2.9.5 이상에서 사용할 수 있습니다.

   1. 다음 명령을 사용하여 Greengrass nucleus 아티팩트의 서명을 확인합니다.

------
#### [ Linux or Unix ]

      ```
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ Windows Command Prompt (CMD) ]

      파일 이름은 설치하는 JDK 버전에 따라 다르게 보일 수 있습니다. *`jdk17.0.6_10`*을 설치한 JDK 버전으로 바꿉니다.

      ```
      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------
#### [ PowerShell ]

      파일 이름은 설치하는 JDK 버전에 따라 다르게 보일 수 있습니다. *`jdk17.0.6_10`*을 설치한 JDK 버전으로 바꿉니다.

      ```
      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      ```

------

   1. `jarsigner` 간접 호출 시 확인 결과를 나타내는 출력이 생성됩니다.

      1. Greengrass nucleus zip 파일이 서명되면 출력에 다음 문이 포함됩니다.

         ```
         jar verified.
         ```

      1. Greengrass nucleus zip 파일이 서명되지 않으면 출력에 다음 문이 포함됩니다.

         ```
         jar is unsigned.
         ```

   1. `-verify` 및 `-certs` 옵션과 함께 Jarsigner `-verbose` 옵션을 제공한 경우 출력에는 자세한 서명자 인증서 정보도 포함됩니다.

1. <a name="installation-unzip-ggc-software-step"></a> AWS IoT Greengrass 코어 소프트웨어의 압축을 디바이스의 폴더에 풉니다. *GreengrassInstaller*를 사용하려는 폴더로 바꿉니다.

------
#### [ Linux or Unix ]

   ```
   unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
   ```

------
#### [ PowerShell ]

   ```
   Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller
   rm greengrass-nucleus-latest.zip
   ```

------

1. (선택 사항) 다음 명령을 실행하여 AWS IoT Greengrass 코어 소프트웨어의 버전을 확인합니다.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

**중요**  <a name="installer-folder-2.4.0-warning"></a>
v2.4.0 이전 버전의 Greengrass nucleus를 설치하는 경우 AWS IoT Greengrass 코어 소프트웨어를 설치한 후에는이 폴더를 제거하지 마십시오. AWS IoT Greengrass 코어 소프트웨어는이 폴더의 파일을 사용하여 실행합니다.  
최신 버전의 소프트웨어를 다운로드한 경우 v2.4.0 이상을 설치하고 AWS IoT Greengrass 코어 소프트웨어를 설치한 후이 폴더를 제거할 수 있습니다.

## AWS IoT 플릿 프로비저닝 플러그인 다운로드
<a name="download-fleet-provisioning-plugin"></a>

다음 위치에서 최신 버전의 AWS IoT 플릿 프로비저닝 플러그인을 다운로드할 수 있습니다.
+ [https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar)

**참고**  
다음 위치에서 특정 버전의 AWS IoT 플릿 프로비저닝 플러그인을 다운로드할 수 있습니다. *version*을 다운로드할 버전으로 바꿉니다. 플릿 프로비저닝 플러그인의 각 버전에 대한 자세한 내용은 [AWS IoT 플릿 프로비저닝 플러그인 변경 로그](fleet-provisioning-changelog.md) 섹션을 참조하세요.  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-version.jar
```

플릿 프로비저닝 플러그인은 오픈 소스입니다. 소스 코드를 보려면 GitHub의 [AWS IoT 플릿 프로비저닝 플러그인](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim)을 참조하세요.

**AWS IoT 플릿 프로비저닝 플러그인을 다운로드하려면**
+ 디바이스에서 AWS IoT 플릿 프로비저닝 플러그인을 라는 파일에 다운로드합니다`aws.greengrass.FleetProvisioningByClaim.jar`. *GreengrassInstaller*를 사용하려는 폴더로 바꿉니다.

------
#### [ Linux or Unix ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ PowerShell ]

  ```
  iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar -OutFile GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------

  <a name="core-software-license"></a>이 소프트웨어를 다운로드하면 [ Greengrass 코어 소프트웨어 라이선스 계약](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)에 동의하는 것입니다.

## AWS IoT Greengrass 코어 소프트웨어 설치
<a name="run-greengrass-core-v2-installer-fleet"></a>

다음 작업을 지정하는 인수를 사용하여 설치 관리자를 실행합니다.
+ 플릿 프로비저닝 플러그인을 사용하여 AWS 리소스를 프로비저닝하도록 지정하는 부분 구성 파일에서를 설치합니다. AWS IoT Greengrass 코어 소프트웨어는 디바이스의 모든 Greengrass 구성 요소의 구성을 지정하는 구성 파일을 사용합니다. 설치 관리자는 제공된 부분 구성 파일에서 전체 구성 파일과 플릿 프로비저닝 플러그인이 생성하는 AWS 리소스를 생성합니다.
+ <a name="install-argument-component-default-user"></a>`ggc_user` 시스템 사용자를 사용하도록 지정하여 코어 디바이스에서 소프트웨어 구성 요소를 실행합니다. Linux 디바이스에서 이 명령은 `ggc_group` 시스템 그룹을 사용하도록 지정하고 설치 관리자가 시스템 사용자와 그룹을 생성합니다.
+ <a name="install-argument-system-service"></a> AWS IoT Greengrass 코어 소프트웨어를 부팅 시 실행되는 시스템 서비스로 설정합니다. Linux 디바이스에서는 [Systemd](https://en.wikipedia.org/wiki/Systemd) init 시스템이 필요합니다.
**중요**  <a name="windows-system-service-requirement-important-note"></a>
Windows 코어 디바이스에서는 AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 설정해야 합니다.

지정할 수 있는 인수에 대한 자세한 내용은 [설치 프로그램 인수](configure-installer.md) 섹션을 참조하세요.

**참고**  
<a name="jvm-tuning-note"></a>메모리가 제한된 디바이스 AWS IoT Greengrass 에서를 실행하는 경우 AWS IoT Greengrass 코어 소프트웨어에서 사용하는 메모리 양을 제어할 수 있습니다. 메모리 할당을 제어하기 위해 nucleus 구성 요소의 `jvmOptions` 구성 파라미터에서 JVM 힙 크기 옵션을 설정할 수 있습니다. 자세한 내용은 [JVM 옵션으로 메모리 할당 제어](configure-greengrass-core-v2.md#jvm-tuning) 단원을 참조하십시오.

**AWS IoT Greengrass 코어 소프트웨어를 설치하려면**

1. <a name="installer-check-greengrass-core-software-version"></a> AWS IoT Greengrass 코어 소프트웨어의 버전을 확인합니다.
   + *GreengrassInstaller*를 소프트웨어가 포함된 폴더의 경로로 바꿉니다.

   ```
   java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
   ```

1. 텍스트 편집기를 사용하여 `config.yaml` 구성 파일을 생성하고 설치 관리자에 제공합니다.

   <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

   ```
   nano GreengrassInstaller/config.yaml
   ```

   다음 YAML 콘텐츠를 파일에 복사합니다. 이 부분 구성 파일은 플릿 프로비저닝 플러그인의 파라미터를 지정합니다. 지정할 수 있는 옵션에 대한 자세한 내용은 [AWS IoT 플릿 프로비저닝 플러그인 구성](fleet-provisioning-configuration.md) 섹션을 참조하세요.

------
#### [ Linux or Unix ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "/greengrass/v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt"
         claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key"
         rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------
#### [ Windows ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "C:\\greengrass\\v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt"
         claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key"
         rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
   ```

------

   뒤이어 다음과 같이 하세요.
   + *2.17.0*을 AWS IoT Greengrass 코어 소프트웨어 버전으로 바꿉니다.
   + `/greengrass/v2`의 각 인스턴스 또는 *C:\$1greengrass\$1v2*를 Greengrass 루트 폴더로 바꿉니다.
**참고**  
Windows 디바이스에서는 경로 구분자를 이중 백슬래시(`\\`)로 지정해야 합니다(예: `C:\\greengrass\\v2`).
   + *us-west-2*를 프로비저닝 템플릿 및 기타 리소스를 생성한 AWS 리전으로 바꿉니다.
   + 를 AWS IoT 데이터 엔드포인트`iotDataEndpoint`로 바꿉니다.
   + 를 AWS IoT 자격 증명 엔드포인트`iotCredentialEndpoint`로 바꿉니다.
   + *GreengrassCoreTokenExchangeRoleAlias*를 토큰 교환 역할 별칭의 이름으로 바꿉니다.
   + *GreengrassFleetProvisioningTemplate*을 플릿 프로비저닝 템플릿의 이름으로 바꿉니다.
   + `claimCertificatePath`를 디바이스의 클레임 인증서 경로로 바꿉니다.
   + `claimCertificatePrivateKeyPath`를 디바이스의 클레임 인증서 프라이빗 키 경로로 바꿉니다.
   + 템플릿 파라미터(`templateParameters`)를 디바이스 프로비저닝에 사용하는 값으로 바꿉니다. 이 예제는 `ThingName` 및 `ThingGroupName` 파라미터를 정의하는 [예제 템플릿](fleet-provisioning-setup.md#example-fleet-provisioning-template)을 참조합니다.
**참고**  
이 구성 파일에서는 다음 예제와 같이 사용할 포트 및 네트워크 프록시 등 다른 구성 옵션을 사용자 지정할 수 있습니다. 자세한 내용은 [Greengrass nucleus 구성](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)을 참조하세요.  

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "/greengrass/v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt"
         claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key"
         rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "2.17.0"
       configuration:
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "http://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "C:\\greengrass\\v2"
         awsRegion: "us-west-2"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         provisioningTemplate: "GreengrassFleetProvisioningTemplate"
         claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt"
         claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key"
         rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "MyGreengrassCore"
           ThingGroupName: "MyGreengrassCoreGroup"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```
HTTPS 프록시를 사용하려면 플릿 프로비저닝 플러그인 버전 1.1.0 이상을 사용해야 합니다. 다음 예제와 같이 `system` 아래에서 `rootCaPath`를 추가로 지정해야 합니다.  

   ```
   ---
   system:
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
   services:
     ...
   ```

   ```
   ---
   system:
     rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem"
   services:
     ...
   ```

1. 설치 관리자를 실행합니다. `--trusted-plugin`을 지정하여 플릿 프로비저닝 플러그인을 제공하고, `--init-config`를 지정하여 구성 파일을 제공합니다.
   + `/greengrass/v2`를 Greengrass 루트 폴더로 바꿉니다.
   + *GreengrassInstaller*의 각 인스턴스를 설치 관리자를 압축 해제한 폴더로 바꿉니다.

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --setup-system-service true
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^
     -jar ./GreengrassInstaller/lib/Greengrass.jar ^
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar ^
     --init-config ./GreengrassInstaller/config.yaml ^
     --component-default-user ggc_user ^
     --setup-system-service true
   ```

------
#### [ PowerShell ]

   ```
   java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" `
     -jar ./GreengrassInstaller/lib/Greengrass.jar `
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar `
     --init-config ./GreengrassInstaller/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**중요**  <a name="windows-system-service-installer-argument-important-note"></a>
Windows 코어 디바이스에서는 AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 설정`--setup-system-service true`하도록를 지정해야 합니다.

   <a name="installer-setup-system-service-output-message"></a>`--setup-system-service true`를 지정하면 설치 관리자는 소프트웨어를 시스템 서비스로 설정하고 실행한 경우 `Successfully set up Nucleus as a system service`를 출력합니다. 그렇지 않은 경우 소프트웨어가 성공적으로 설치되면 설치 관리자에서 메시지가 출력되지 않습니다.
**참고**  <a name="installer-deploy-dev-tools-without-provision"></a>
`--provision true` 인수 없이 설치 관리자를 실행할 때는 `deploy-dev-tools` 인수를 사용하여 로컬 개발 도구를 배포할 수 없습니다. Greengrass CLI를 디바이스에 직접 배포하는 방법에 대한 자세한 내용은 [Greengrass 명령줄 인터페이스](gg-cli.md) 섹션을 참조하세요.

1. <a name="installer-verify-installation"></a>루트 폴더의 파일을 확인하여 설치를 확인합니다.

------
#### [ Linux or Unix ]

   ```
   ls /greengrass/v2
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir C:\greengrass\v2
   ```

------
#### [ PowerShell ]

   ```
   ls C:\greengrass\v2
   ```

------

   설치에 성공하면 루트 폴더에 `config`, `packages` 및 `logs`와 같은 여러 폴더가 포함됩니다.

<a name="install-greengrass-core-run-software"></a> AWS IoT Greengrass 코어 소프트웨어를 시스템 서비스로 설치한 경우 설치 관리자가 소프트웨어를 실행합니다. 그렇지 않으면 소프트웨어를 수동으로 실행해야 합니다. 자세한 내용은 [AWS IoT Greengrass 코어 소프트웨어 실행](run-greengrass-core-v2.md) 단원을 참조하십시오.

<a name="install-greengrass-core-next-steps-intro"></a>소프트웨어를 구성하고 사용하는 방법에 대한 자세한 내용은 다음을 AWS IoT Greengrass참조하세요.<a name="install-greengrass-core-next-steps-links"></a>
+ [AWS IoT Greengrass 코어 소프트웨어 구성](configure-greengrass-core-v2.md)
+ [AWS IoT Greengrass 구성 요소 개발](develop-greengrass-components.md)
+ [디바이스에 AWS IoT Greengrass 구성 요소 배포](manage-deployments.md)
+ [Greengrass 명령줄 인터페이스](gg-cli.md)

# Greengrass 코어 디바이스에 대한 AWS IoT 플릿 프로비저닝 설정
<a name="fleet-provisioning-setup"></a>

[플릿 프로비저닝과 함께 AWS IoT Greengrass 코어 소프트웨어를 설치](fleet-provisioning.md)하려면 먼저에서 다음 리소스를 설정해야 합니다 AWS 계정. 이러한 리소스를 통해 디바이스는에 등록 AWS IoT 하고 Greengrass 코어 디바이스로 작동할 수 있습니다. 이 섹션의 단계를 한 번 수행하여 AWS 계정에서 이러한 리소스를 생성 및 구성합니다.
+ 코어 디바이스가 AWS 서비스에 대한 직접 호출의 승인에 사용하는 토큰 교환 IAM 역할입니다.
+ 토큰 교환 AWS IoT 역할을 가리키는 역할 별칭입니다.
+ (선택 사항) 코어 디바이스가 AWS IoT 및 AWS IoT Greengrass 서비스에 대한 호출을 승인하는 데 사용하는 AWS IoT 정책입니다. 이 AWS IoT 정책은 토큰 교환 AWS IoT 역할을 가리키는 역할 별칭에 대한 `iot:AssumeRoleWithCertificate` 권한을 허용해야 합니다.

  플릿의 모든 코어 디바이스에 단일 AWS IoT 정책을 사용하거나 각 코어 디바이스에 대한 AWS IoT 정책을 생성하도록 플릿 프로비저닝 템플릿을 구성할 수 있습니다.
+  AWS IoT 플릿 프로비저닝 템플릿입니다. 이 템플릿은 다음을 지정해야 합니다.<a name="installation-fleet-provisioning-template-requirements"></a>
  +  AWS IoT 사물 리소스입니다. 기존 사물 그룹 목록을 지정하여 온라인 상태일 때 각 디바이스에 구성 요소를 배포할 수 있습니다.
  +  AWS IoT 정책 리소스입니다. 이 리소스는 다음 속성 중 하나를 정의할 수 있습니다.
    + 기존 AWS IoT 정책의 이름입니다. 이 옵션을 선택하면이 템플릿에서 생성한 코어 디바이스가 동일한 AWS IoT 정책을 사용하며 해당 권한을 플릿으로 관리할 수 있습니다.
    +  AWS IoT 정책 문서. 이 옵션을 선택하면이 템플릿에서 생성하는 각 코어 디바이스는 고유한 AWS IoT 정책을 사용하며 각 개별 코어 디바이스에 대한 권한을 관리할 수 있습니다.
  +  AWS IoT 인증서 리소스입니다. 이 인증서 리소스는 `AWS::IoT::Certificate::Id` 파라미터를 사용하여 코어 디바이스에 인증서를 연결해야 합니다. 자세한 내용은 *AWS IoT 개발자 안내서*의 [JIT(Just-in-Time) 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html)을 참조하세요.
+ 플릿 AWS IoT 프로비저닝 템플릿에 대한 프로비저닝 클레임 인증서 및 프라이빗 키입니다. 제조 중에 디바이스에 이 인증서와 프라이빗 키를 내장할 수 있으므로 디바이스가 온라인 상태가 되면 등록하고 프로비저닝할 수 있습니다.
**중요**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS IoT모니터링](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html)를 참조하세요.  
디바이스 수와에 자신을 등록하는 디바이스를 더 잘 관리할 수 있도록 AWS 계정플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [사전 프로비저닝 후크](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html)를 참조하세요.
+ 디바이스가 플릿 프로비저닝 템플릿을 등록하고 사용할 수 있도록 프로비저닝 클레임 인증서에 연결하는 AWS IoT 정책입니다.

**Topics**
+ [토큰 교환 역할 생성](#create-token-exchange-role)
+ [AWS IoT 정책 생성](#create-iot-policy)
+ [플릿 프로비저닝 템플릿 생성](#create-provisioning-template)
+ [프로비저닝 클레임 인증서 및 프라이빗 키 생성](#create-claim-certificates)

## 토큰 교환 역할 생성
<a name="create-token-exchange-role"></a>

<a name="installation-create-token-exchange-role-intro"></a>Greengrass 코어 디바이스는 *토큰 교환* 역할이라는 IAM 서비스 역할을 사용하여 AWS 서비스에 대한 호출을 승인합니다. 디바이스는 자격 AWS IoT 증명 공급자를 사용하여이 역할에 대한 임시 AWS 자격 증명을 가져오므로 디바이스가 상호 작용하고 AWS IoT, Amazon CloudWatch Logs로 로그를 전송하고, Amazon S3에서 사용자 지정 구성 요소 아티팩트를 다운로드할 수 있습니다. 자세한 내용은 [코어 디바이스가 AWS 서비스와 상호 작용할 수 있도록 권한 부여](device-service-role.md) 단원을 참조하십시오.

<a name="installation-create-token-exchange-role-alias-intro"></a> AWS IoT *Anrole 별칭을* 사용하여 Greengrass 코어 디바이스에 대한 토큰 교환 역할을 구성합니다. 역할 별칭을 사용하면 디바이스의 토큰 교환 역할을 변경할 수 있지만 디바이스 구성은 동일하게 유지할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS 서비스 직접 호출에 대한 권한 부여](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)를 참조하세요.

이 섹션에서는 토큰 교환 IAM 역할과 AWS IoT 역할을 가리키는 역할 별칭을 생성합니다. 이미 Greengrass 코어 디바이스를 설정한 경우 새 디바이스를 생성하는 대신 토큰 교환 역할 및 역할 별칭을 사용할 수 있습니다.

**토큰 교환 IAM 역할을 생성하려면**

1. <a name="create-token-exchange-role-create-iam-role"></a>디바이스가 토큰 교환 역할로 사용할 수 있는 IAM 역할을 생성합니다. 해결 방법:

   1. 토큰 교환 역할에 필요한 신뢰 정책 문서가 포함된 파일을 생성합니다.

      <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      ```
      nano device-role-trust-policy.json
      ```

      다음 JSON을 파일로 복사합니다.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "credentials.iot.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 신뢰 정책 문서를 사용하여 토큰 교환 역할을 생성합니다.
      + *GreengrassV2TokenExchangeRole*을 생성할 IAM 역할의 이름으로 바꿉니다.

      ```
      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json
      ```

      요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

      ```
      {
        "Role": {
          "Path": "/",
          "RoleName": "GreengrassV2TokenExchangeRole",
          "RoleId": "AROAZ2YMUHYHK5OKM77FB",
          "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole",
          "CreateDate": "2021-02-06T00:13:29+00:00",
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": "credentials.iot.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
              }
            ]
          }
        }
      ```

   1. 토큰 교환 역할에 필요한 액세스 정책 문서가 포함된 파일을 생성합니다.

      <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      ```
      nano device-role-access-policy.json
      ```

      다음 JSON을 파일로 복사합니다.

      ```
      {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "s3:GetBucketLocation"
            ],
            "Resource": "*"
          }
        ]
      }
      ```
**참고**  
이 액세스 정책은 S3 버킷의 구성 요소 아티팩트에 대한 액세스를 허용하지 않습니다. Amazon S3에서 아티팩트를 정의하는 사용자 지정 구성 요소를 배포하려면 코어 디바이스가 구성 요소 아티팩트를 검색할 수 있도록 역할에 권한을 추가해야 합니다. 자세한 내용은 [구성 요소 아티팩트에 대한 S3 버킷 액세스 허용](device-service-role.md#device-service-role-access-s3-bucket) 단원을 참조하십시오.  
구성 요소 아티팩트에 대한 S3 버킷이 아직 없는 경우 버킷을 생성한 후 권한을 추가할 수 있습니다.

   1. 정책 문서에서 IAM 정책을 생성합니다.
      + *GreengrassV2TokenExchangeRoleAccess*를 생성할 IAM 정책의 이름으로 바꿉니다.

      ```
      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json
      ```

      요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

      ```
      {
        "Policy": {
          "PolicyName": "GreengrassV2TokenExchangeRoleAccess",
          "PolicyId": "ANPAZ2YMUHYHACI7C5Z66",
          "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess",
          "Path": "/",
          "DefaultVersionId": "v1",
          "AttachmentCount": 0,
          "PermissionsBoundaryUsageCount": 0,
          "IsAttachable": true,
          "CreateDate": "2021-02-06T00:37:17+00:00",
          "UpdateDate": "2021-02-06T00:37:17+00:00"
        }
      }
      ```

   1. IAM 정책을 토큰 교환 역할에 연결합니다.
      + *GreengrassV2TokenExchangeRole*을 IAM 역할의 이름으로 바꿉니다.
      + 정책 ARN을 이전 단계에서 생성한 IAM 정책의 ARN으로 변경합니다.

      ```
      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
      ```

      요청에 성공하는 경우 명령에 출력이 없습니다.

1. <a name="create-token-exchange-role-create-iot-role-alias"></a>토큰 교환 AWS IoT 역할을 가리키는 역할 별칭을 생성합니다.
   + *GreengrassCoreTokenExchangeRoleAlias*를 생성할 역할 별칭의 이름으로 바꿉니다.
   + 역할 ARN을 이전 단계에서 생성한 IAM 역할의 ARN으로 변경합니다.

   ```
   aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
   ```

   요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

   ```
   {
     "roleAlias": "GreengrassCoreTokenExchangeRoleAlias",
     "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
   }
   ```
**참고**  
역할 별칭을 생성하려면 토큰 교환 IAM 역할을 AWS IoT에 전달할 권한이 있어야 합니다. 역할 별칭을 생성하려고 할 때 오류 메시지가 표시되면 AWS 사용자에게이 권한이 있는지 확인합니다. 자세한 내용은 사용 *AWS Identity and Access Management 설명서*의 [AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)를 참조하세요.

## AWS IoT 정책 생성
<a name="create-iot-policy"></a>

디바이스를 AWS IoT 사물로 등록한 후 해당 디바이스는 디지털 인증서를 사용하여 인증할 수 있습니다 AWS. 이 인증서에는 디바이스가 인증서와 함께 사용할 수 있는 권한을 정의하는 AWS IoT 정책이 하나 이상 포함되어 있습니다. 이러한 정책은 디바이스가 AWS IoT 및와 통신할 수 있도록 허용합니다 AWS IoT Greengrass.

 AWS IoT 플릿 프로비저닝을 통해 디바이스는 AWS IoT 에 연결하여 디바이스 인증서를 생성하고 다운로드합니다. 다음 섹션에서 생성하는 플릿 프로비저닝 템플릿에서가 모든 디바이스의 인증서에 동일한 AWS IoT 정책을 AWS IoT 연결할지 아니면 각 디바이스에 대해 새 정책을 생성할지 지정할 수 있습니다.

이 섹션에서는가 모든 디바이스의 인증서에 AWS IoT 연결하는 AWS IoT 정책을 생성합니다. 이 접근 방식을 사용하면 모든 디바이스의 권한을 플릿으로 관리할 수 있습니다. 각 디바이스에 대해 새 AWS IoT 정책을 생성하려는 경우이 섹션을 건너뛰고 플릿 템플릿을 정의할 때 정책을 참조할 수 있습니다.

**AWS IoT 정책을 생성하려면**
+ Greengrass 코어 디바이스 플릿에 대한 AWS IoT 권한을 정의하는 AWS IoT 정책을 생성합니다. 다음 정책은 모든 MQTT 주제 및 Greengrass 작업에 대한 액세스를 허용하므로 디바이스에서 사용자 지정 애플리케이션 및 새로운 Greengrass 작업이 필요한 향후 변경 사항과 호환됩니다. 또한 이 정책은 디바이스가 이전 섹션에서 생성한 토큰 교환 역할을 사용하도록 허용하는 `iot:AssumeRoleWithCertificate` 권한을 허용합니다. 사용 사례를 기반으로 이 정책을 제한할 수 있습니다. 자세한 내용은 [AWS IoT Greengrass V2 코어 디바이스에 대한 최소 AWS IoT 정책](device-auth.md#greengrass-core-minimal-iot-policy) 단원을 참조하십시오.

  해결 방법:

  1. Greengrass 코어 디바이스에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.

     <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

     ```
     nano greengrass-v2-iot-policy.json
     ```

     다음 JSON을 파일로 복사합니다.
     + `iot:AssumeRoleWithCertificate` 리소스를 이전 섹션에서 생성한 AWS IoT 역할 별칭의 ARN으로 바꿉니다.

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Action": [
             "iot:Publish",
             "iot:Subscribe",
             "iot:Receive",
             "iot:Connect",
             "greengrass:*"
           ],
           "Resource": [
             "*"
           ]
         },
         {
           "Effect": "Allow",
           "Action": "iot:AssumeRoleWithCertificate",
           "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
         }
       ]
     }
     ```

------

  1.  AWS IoT 정책 문서에서 정책을 생성합니다.
     + *GreengrassV2IoTThingPolicy*를 생성할 정책의 이름으로 바꿉니다.

     ```
     aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json
     ```

     요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

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

****  

     ```
     {
       "policyName": "GreengrassV2IoTThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{
         \"Version\": \"2012-10-17\",
         \"Statement\": [
           {
             \"Effect\": \"Allow\",
             \"Action\": [
               \"iot:Publish\",
               \"iot:Subscribe\",
               \"iot:Receive\",
               \"iot:Connect\",
               \"greengrass:*\"
             ],
             \"Resource\": [
               \"*\"
             ]
           },
           {
             \"Effect\": \"Allow\",
             \"Action\": \"iot:AssumeRoleWithCertificate\",
             \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\"
           }
         ]
       }",
       "policyVersionId": "1"
     }
     ```

------

## 플릿 프로비저닝 템플릿 생성
<a name="create-provisioning-template"></a>

AWS IoT 플릿 프로비저닝 템플릿은 AWS IoT 사물, 정책 및 인증서를 프로비저닝하는 방법을 정의합니다. 플릿 프로비저닝 플러그인으로 Greengrass 코어 디바이스를 프로비저닝하려면 다음을 지정하는 템플릿을 생성해야 합니다.<a name="installation-fleet-provisioning-template-requirements"></a>
+  AWS IoT 사물 리소스입니다. 기존 사물 그룹 목록을 지정하여 온라인 상태일 때 각 디바이스에 구성 요소를 배포할 수 있습니다.
+  AWS IoT 정책 리소스입니다. 이 리소스는 다음 속성 중 하나를 정의할 수 있습니다.
  + 기존 AWS IoT 정책의 이름입니다. 이 옵션을 선택하면이 템플릿에서 생성한 코어 디바이스가 동일한 AWS IoT 정책을 사용하며 해당 권한을 플릿으로 관리할 수 있습니다.
  +  AWS IoT 정책 문서. 이 옵션을 선택하면이 템플릿에서 생성하는 각 코어 디바이스는 고유한 AWS IoT 정책을 사용하며 각 개별 코어 디바이스에 대한 권한을 관리할 수 있습니다.
+  AWS IoT 인증서 리소스입니다. 이 인증서 리소스는 `AWS::IoT::Certificate::Id` 파라미터를 사용하여 코어 디바이스에 인증서를 연결해야 합니다. 자세한 내용은 *AWS IoT 개발자 안내서*의 [JIT(Just-in-Time) 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html)을 참조하세요.

템플릿에서를 지정하여 기존 AWS IoT 사물 그룹 목록에 사물을 추가할 수 있습니다. 코어 디바이스가 AWS IoT Greengrass 에 처음 연결되면 코어 디바이스가 멤버인 각 사물 그룹에 대해 Greengrass 배포를 수신합니다. 사물 그룹을 사용하여 온라인 상태가 되는 즉시 각 디바이스에 최신 소프트웨어를 배포할 수 있습니다. 자세한 내용은 [디바이스에 AWS IoT Greengrass 구성 요소 배포](manage-deployments.md) 단원을 참조하십시오.

이 AWS IoT 서비스에는 디바이스를 프로비저닝할 AWS 계정 때에서 AWS IoT 리소스를 생성하고 업데이트할 수 있는 권한이 필요합니다. AWS IoT 서비스에 액세스 권한을 부여하려면 템플릿을 생성할 때 IAM 역할을 생성하고 제공합니다.는 디바이스를 프로비저닝할 때에서 사용할 AWS IoT 수 있는 모든 권한에 대한 액세스를 허용하는 관리형 정책인 [AWSIoTThingsRegistration](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration)을 AWS IoT 제공합니다. 이 관리형 정책을 사용하거나 사용 사례에 대한 관리형 정책의 권한을 범위로 좁히는 사용자 지정 정책을 생성할 수 있습니다.

이 섹션에서는가 디바이스에 대한 리소스를 AWS IoT 프로비저닝하도록 허용하는 IAM 역할을 생성하고 해당 IAM 역할을 사용하는 플릿 프로비저닝 템플릿을 생성합니다.

**플릿 프로비저닝 템플릿 생성**

1. 에서 리소스를 프로비저닝하기 위해가 맡 AWS IoT 을 수 있는 IAM 역할을 생성합니다 AWS 계정. 해결 방법:

   1. 가 역할을 수임 AWS IoT 하도록 허용하는 신뢰 정책 문서가 포함된 파일을 생성합니다.

      <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      ```
      nano aws-iot-trust-policy.json
      ```

      다음 JSON을 파일로 복사합니다.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

------

   1. 신뢰 정책 문서를 사용하여 IAM 역할을 생성합니다.
      + *GreengrassFleetProvisioningRole*을 생성할 IAM 역할의 이름으로 바꿉니다.

      ```
      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json
      ```

      요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "iot:Connect",
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. 디바이스를 프로비저닝할 때에서 사용할 AWS IoT 수 있는 모든 권한에 대한 액세스를 허용하는 [AWSIoTThingsRegistration](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration) 정책을 검토합니다. 이 관리형 정책을 사용하거나 사용 사례에 대해 범위가 축소된 권한을 정의하는 사용자 지정 정책을 생성할 수 있습니다. 사용자 지정 정책을 생성하려는 경우 지금 생성합니다.

   1. 플릿 프로비저닝 역할에 IAM 정책을 연결합니다.
      + *GreengrassFleetProvisioningRole*을 IAM 역할의 이름으로 바꿉니다.
      + 이전 단계에서 사용자 지정 정책을 생성한 경우 정책 ARN을 사용할 IAM 정책의 ARN으로 바꿉니다.

      ```
      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration
      ```

      요청에 성공하는 경우 명령에 출력이 없습니다.

1. (선택 사항) 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수인 *사전 프로비저닝 후크*를 생성합니다. 사전 프로비저닝 후크를 사용하여 AWS 계정에 온보딩된 디바이스와 그 수를 더 효과적으로 제어할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [사전 프로비저닝 후크](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html)를 참조하세요.

1. 플릿 프로비저닝 템플릿을 생성합니다. 해결 방법:

   1. 프로비저닝 템플릿 문서를 포함하는 파일을 생성합니다.

      <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      ```
      nano greengrass-fleet-provisioning-template.json
      ```

      프로비저닝 템플릿 문서를 작성합니다. 다음 속성으로 AWS IoT 사물을 생성하도록 지정하는 다음 예제 프로비저닝 템플릿부터 시작할 수 있습니다.
      + 사물의 이름은 `ThingName` 템플릿 파라미터에서 지정한 값입니다.
      + 사물은 `ThingGroupName` 템플릿 파라미터에서 지정한 사물 그룹의 멤버입니다. 사물 그룹은에 있어야 합니다 AWS 계정.
      + 사물의 인증서에는 라는 AWS IoT 정책이 `GreengrassV2IoTThingPolicy` 연결되어 있습니다.

      자세한 내용은 *AWS IoT Core 개발자 안내서*의 [프로비저닝 템플릿](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html)을 참조하세요.

      ```
      {
        "Parameters": {
          "ThingName": {
            "Type": "String"
          },
          "ThingGroupName": {
            "Type": "String"
          },
          "AWS::IoT::Certificate::Id": {
            "Type": "String"
          }
        },
        "Resources": {
          "MyThing": {
            "OverrideSettings": {
              "AttributePayload": "REPLACE",
              "ThingGroups": "REPLACE",
              "ThingTypeName": "REPLACE"
            },
            "Properties": {
              "AttributePayload": {},
              "ThingGroups": [
                {
                  "Ref": "ThingGroupName"
                }
              ],
              "ThingName": {
                "Ref": "ThingName"
              }
            },
            "Type": "AWS::IoT::Thing"
          },
          "MyPolicy": {
            "Properties": {
              "PolicyName": "GreengrassV2IoTThingPolicy"
            },
            "Type": "AWS::IoT::Policy"
          },
          "MyCertificate": {
            "Properties": {
              "CertificateId": {
                "Ref": "AWS::IoT::Certificate::Id"
              },
              "Status": "Active"
            },
            "Type": "AWS::IoT::Certificate"
          }
        }
      }
      ```
**참고**  
*MyThing*, *MyPolicy* 및 *MyCertificate*는 플릿 프로비저닝 템플릿의 각 리소스 사양을 식별하는 임의의 이름입니다. 템플릿에서 생성하는 리소스에는 이러한 이름을 사용하지 AWS IoT 않습니다. 이러한 이름을 그대로 사용하거나 템플릿의 각 리소스를 식별하는 데 도움이 되는 값으로 바꿀 수 있습니다.

   1. 프로비저닝 템플릿 문서에서 플릿 프로비저닝 템플릿을 생성합니다.
      + *GreengrassFleetProvisioningTemplate*을 생성할 템플릿의 이름으로 바꿉니다.
      + 템플릿 설명을 템플릿에 대한 설명으로 바꿉니다.
      + 프로비저닝 역할 ARN을 이전에 생성한 역할의 ARN으로 바꿉니다.

------
#### [ Linux or Unix ]

      ```
      aws iot create-provisioning-template \
        --template-name GreengrassFleetProvisioningTemplate \
        --description "A provisioning template for Greengrass core devices." \
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \
        --template-body file://greengrass-fleet-provisioning-template.json \
        --enabled
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iot create-provisioning-template ^
        --template-name GreengrassFleetProvisioningTemplate ^
        --description "A provisioning template for Greengrass core devices." ^
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^
        --template-body file://greengrass-fleet-provisioning-template.json ^
        --enabled
      ```

------
#### [ PowerShell ]

      ```
      aws iot create-provisioning-template `
        --template-name GreengrassFleetProvisioningTemplate `
        --description "A provisioning template for Greengrass core devices." `
        --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" `
        --template-body file://greengrass-fleet-provisioning-template.json `
        --enabled
      ```

------
**참고**  
사전 프로비저닝 후크를 생성한 경우 `--pre-provisioning-hook` 인수로 사전 프로비저닝 후크의 Lambda 함수의 ARN을 지정합니다.  

      ```
      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook
      ```

      요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

      ```
      {
          "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate",
          "templateName": "GreengrassFleetProvisioningTemplate",
          "defaultVersionId": 1
      }
      ```

## 프로비저닝 클레임 인증서 및 프라이빗 키 생성
<a name="create-claim-certificates"></a>

클레임 인증서는 디바이스가 AWS IoT 사물로 등록하고 일반 작업에 사용할 고유한 X.509 디바이스 인증서를 검색할 수 있도록 허용하는 X.509 인증서입니다. 클레임 인증서를 생성한 후 디바이스가 이를 사용하여 고유한 디바이스 인증서를 생성하고 플릿 프로비저닝 템플릿으로 프로비저닝할 수 있도록 허용하는 AWS IoT 정책을 연결합니다. 클레임 인증서가 있는 디바이스는 AWS IoT 정책에서 허용하는 프로비저닝 템플릿만 사용하여 프로비저닝할 수 있습니다.

이 섹션에서는 클레임 인증서를 생성하고 디바이스가 이전 섹션에서 생성한 플릿 프로비저닝 템플릿을 사용하도록 구성합니다.

**중요**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS IoT모니터링](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html)를 참조하세요.  
디바이스 수와에 자신을 등록하는 디바이스를 더 잘 관리할 수 있도록 AWS 계정플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [사전 프로비저닝 후크](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html)를 참조하세요.

**프로비저닝 클레임 인증서 및 프라이빗 키 생성**

1. 클레임 인증서와 프라이빗 키를 다운로드할 폴더를 생성합니다.

   ```
   mkdir claim-certs
   ```

1. 프로비저닝에 사용할 인증서와 프라이빗 키를 생성하고 저장합니다.는 Amazon Root 인증 기관(CA)에서 서명한 클라이언트 인증서를 AWS IoT 제공합니다.

------
#### [ Linux or Unix ]

   ```
   aws iot create-keys-and-certificate \
     --certificate-pem-outfile "claim-certs/claim.pem.crt" \
     --public-key-outfile "claim-certs/claim.public.pem.key" \
     --private-key-outfile "claim-certs/claim.private.pem.key" \
     --set-as-active
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iot create-keys-and-certificate ^
     --certificate-pem-outfile "claim-certs/claim.pem.crt" ^
     --public-key-outfile "claim-certs/claim.public.pem.key" ^
     --private-key-outfile "claim-certs/claim.private.pem.key" ^
     --set-as-active
   ```

------
#### [ PowerShell ]

   ```
   aws iot create-keys-and-certificate `
     --certificate-pem-outfile "claim-certs/claim.pem.crt" `
     --public-key-outfile "claim-certs/claim.public.pem.key" `
     --private-key-outfile "claim-certs/claim.private.pem.key" `
     --set-as-active
   ```

------

   요청에 성공하는 경우 응답에 인증서에 대한 정보가 포함됩니다. 나중에 사용하도록 인증서의 ARN을 저장합니다.

1. 디바이스가 인증서를 사용하여 고유한 디바이스 인증서를 생성하고 플릿 프로비저닝 템플릿으로 프로비저닝할 수 있도록 허용하는 AWS IoT 정책을 생성하고 연결합니다. 다음 정책은 디바이스 프로비저닝 MQTT API에 대한 액세스를 허용합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [디바이스 프로비저닝 MQTT API](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html)를 참조하세요.

   해결 방법:

   1. Greengrass 코어 디바이스에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.

      <a name="nano-command-intro"></a>예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      ```
      nano greengrass-provisioning-claim-iot-policy.json
      ```

      다음 JSON을 파일로 복사합니다.
      + *리전*의 각 인스턴스를 플릿 프로비저닝을 설정한 AWS 리전 로 바꿉니다.
      + *account-id*를 각각 AWS 계정 ID로 바꿉니다.
      + *GreengrassFleetProvisioningTemplate*를 각각 이전 섹션에서 생성한 플릿 프로비저닝 템플릿의 이름으로 바꿉니다.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:Connect",
            "Resource": "*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "iot:Publish",
              "iot:Receive"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*",
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*"
            ]
          },
          {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": [
            "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*",
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*"
            ]
          }
        ]
      }
      ```

------

   1.  AWS IoT 정책 문서에서 정책을 생성합니다.
      + *GreengrassProvisioningClaimPolicy*를 생성할 정책의 이름으로 바꿉니다.

      ```
      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json
      ```

      요청에 성공하는 경우 응답은 다음 예제와 유사합니다.

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

****  

      ```
      {
        "policyName": "GreengrassProvisioningClaimPolicy",
        "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy",
        "policyDocument": "{
          \"Version\": \"2012-10-17\",
          \"Statement\": [
            {
              \"Effect\": \"Allow\",
              \"Action\": \"iot:Connect\",
              \"Resource\": \"*\"
            },
            {
              \"Effect\": \"Allow\",
              \"Action\": [
                \"iot:Publish\",
                \"iot:Receive\"
              ],
              \"Resource\": [
              \"arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*\",
        \"arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\"
              ]
            },
            {
              \"Effect\": \"Allow\",
              \"Action\": \"iot:Subscribe\",
              \"Resource\": [
              \"arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*\",
        \"arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\"
              ]
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

------

1.  AWS IoT 정책을 프로비저닝 클레임 인증서에 연결합니다.
   + *GreengrassProvisioningClaimPolicy*를 연결할 정책의 이름으로 바꿉니다.
   + 대상 ARN을 프로비저닝 클레임 인증서의 ARN으로 바꿉니다.

   ```
   aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
   ```

   요청에 성공하는 경우 명령에 출력이 없습니다.

이제 디바이스가에 등록하고 Greengrass 코어 디바이스로 자신을 프로비저닝하는 데 사용할 수 있는 프로비저닝 클레임 인증서 AWS IoT 와 프라이빗 키가 생겼습니다. 제조 중에 디바이스에 클레임 인증서와 프라이빗 키를 임베드하거나 AWS IoT Greengrass 코어 소프트웨어를 설치하기 전에 인증서와 키를 디바이스에 복사할 수 있습니다. 자세한 내용은 [AWS IoT 플릿 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어 설치](fleet-provisioning.md) 단원을 참조하십시오.

# AWS IoT 플릿 프로비저닝 플러그인 구성
<a name="fleet-provisioning-configuration"></a>

 AWS IoT 플릿 프로비저닝 플러그인은 [플릿 프로비저닝과 함께 AWS IoT Greengrass 코어 소프트웨어를 설치할](fleet-provisioning.md) 때 사용자 지정할 수 있는 다음과 같은 구성 파라미터를 제공합니다.

`rootPath`  
 AWS IoT Greengrass 코어 소프트웨어의 루트로 사용할 폴더의 경로입니다.

`awsRegion`  
플릿 프로비저닝 플러그인 AWS 리전 이 리소스를 프로비저닝 AWS 하는 데 사용하는 입니다.

`iotDataEndpoint`  
<a name="nucleus-component-configuration-iot-data-endpoint"></a>의 AWS IoT 데이터 엔드포인트입니다 AWS 계정.

`iotCredentialEndpoint`  
<a name="nucleus-component-configuration-iot-cred-endpoint"></a>의 AWS IoT 자격 증명 엔드포인트입니다 AWS 계정.

`iotRoleAlias`  
<a name="nucleus-component-configuration-iot-role-alias"></a>토큰 교환 IAM AWS IoT 역할을 가리키는 역할 별칭입니다. 자격 AWS IoT 증명 공급자는 Greengrass 코어 디바이스가 AWS 서비스와 상호 작용할 수 있도록이 역할을 맡습니다. 자세한 내용은 [코어 디바이스가 AWS 서비스와 상호 작용할 수 있도록 권한 부여](device-service-role.md) 단원을 참조하십시오.

`provisioningTemplate`  
 AWS 리소스를 프로비저닝하는 데 사용할 AWS IoT 플릿 프로비저닝 템플릿입니다. 이 템플릿은 다음을 지정해야 합니다.  <a name="installation-fleet-provisioning-template-requirements"></a>
+  AWS IoT 사물 리소스입니다. 기존 사물 그룹 목록을 지정하여 온라인 상태일 때 각 디바이스에 구성 요소를 배포할 수 있습니다.
+  AWS IoT 정책 리소스입니다. 이 리소스는 다음 속성 중 하나를 정의할 수 있습니다.
  + 기존 AWS IoT 정책의 이름입니다. 이 옵션을 선택하면이 템플릿에서 생성한 코어 디바이스가 동일한 AWS IoT 정책을 사용하며 해당 권한을 플릿으로 관리할 수 있습니다.
  +  AWS IoT 정책 문서. 이 옵션을 선택하면이 템플릿에서 생성하는 각 코어 디바이스는 고유한 AWS IoT 정책을 사용하며 각 개별 코어 디바이스에 대한 권한을 관리할 수 있습니다.
+  AWS IoT 인증서 리소스입니다. 이 인증서 리소스는 `AWS::IoT::Certificate::Id` 파라미터를 사용하여 코어 디바이스에 인증서를 연결해야 합니다. 자세한 내용은 *AWS IoT 개발자 안내서*의 [JIT(Just-in-Time) 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/jit-provisioning.html)을 참조하세요.
자세한 내용은 *AWS IoT Core 개발자 안내서*의 [프로비저닝 템플릿](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html)을 참조하세요.

`claimCertificatePath`  
`provisioningTemplate`에서 지정한 프로비저닝 템플릿에 대한 프로비저닝 클레임 인증서의 경로입니다. 자세한 정보는 *AWS IoT Core API 참조*의 [CreateProvisioningClaim](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningClaim.html)을 참조하세요.

`claimCertificatePrivateKeyPath`  
`provisioningTemplate`에서 지정한 프로비저닝 템플릿에 대한 프로비저닝 클레임 인증서 프라이빗 키의 경로입니다. 자세한 정보는 *AWS IoT Core API 참조*의 [CreateProvisioningClaim](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateProvisioningClaim.html)을 참조하세요.  
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS IoT모니터링](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring_overview.html)를 참조하세요.  
디바이스 수와에 자신을 등록하는 디바이스를 더 잘 관리할 수 있도록 AWS 계정플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [사전 프로비저닝 후크](https://docs.aws.amazon.com/iot/latest/developerguide/pre-provisioning-hook.html)를 참조하세요.

`rootCaPath`  
Amazon 루트 CA(인증 기관) 인증서의 경로입니다.

`templateParameters`  
(선택 사항) 플릿 프로비저닝 템플릿에 제공할 파라미터의 맵입니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [프로비저닝 템플릿 파라미터 섹션](https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html#parameters-section)을 참조하세요.

`deviceId`  
(선택 사항) 플릿 프로비저닝 플러그인이 AWS IoT에 대한 MQTT 연결을 생성할 때 클라이언트 ID로 사용할 디바이스 식별자입니다.  
기본값: 무작위 UUID.

`mqttPort`  
(선택 사항) MQTT 연결에 사용할 포트입니다.  
기본값: `8883`

`proxyUrl`  
(선택 사항) `scheme://userinfo@host:port` 형식으로 표시되는 프록시 서버의 URL입니다. HTTPS 프록시를 사용하려면 플릿 프로비저닝 플러그인 버전 1.1.0 이상을 사용해야 합니다.  <a name="nucleus-component-configuration-proxy-url-segments"></a>
+ `scheme` - 체계로, `http` 또는 `https`여야 합니다.
**중요**  
<a name="https-proxy-greengrass-nucleus-requirement"></a>Greengrass 코어 디바이스에서 HTTPS 프록시가 사용되려면 [Greengrass nucleus ](greengrass-nucleus-component.md) v2.5.0 이상을 실행해야 합니다.  
HTTPS 프록시를 구성하는 경우 코어 디바이스의 Amazon 루트 CA 인증서에 프록시 서버 CA 인증서를 추가해야 합니다. 자세한 내용은 [HTTPS 프록시가 신뢰될 수 있도록 코어 디바이스 설정](configure-greengrass-core-v2.md#https-proxy-certificate-trust) 단원을 참조하십시오.
+ `userinfo` - (선택 사항) 사용자 이름 및 암호 정보입니다. `url`에서 이 정보를 지정하면 Greengrass 코어 디바이스에서는 `username` 및 `password` 필드를 무시합니다.
+ `host` - 프록시 서버의 호스트 이름 또는 IP 주소입니다.
+ `port` – (선택 사항) 포트 번호입니다. 포트를 지정하지 않으면 Greengrass 코어 디바이스에서는 다음 기본값이 사용됩니다.
  + `http` – 80
  + `https` – 443

`proxyUserName`  
(선택 사항) 프록시 서버를 인증하는 사용자 이름입니다.

`proxyPassword`  
(선택 사항) 프록시 서버를 인증하는 사용자 이름입니다.

csrPath  
(선택 사항) CSR(인증서 서명 요청)에서 디바이스 인증서를 생성하는 데 사용할 CSR 파일의 경로입니다. 자세한 내용은 * AWS IoT Core 개발자 안내서*의 [클레임에 의한 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based)을 참조하세요.

csrPrivateKeyPath  
(선택 사항, `csrPath`가 선언된 경우 필수 사항) CSR을 생성하는 데 사용되는 프라이빗 키의 경로입니다. 프라이빗 키를 사용하여 CSR을 생성한 상태여야 합니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [클레임에 의한 프로비저닝](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based)을 참조하세요.

certificatePath  
(선택 사항) 다운로드한 디바이스 인증서를 저장할 경로입니다.

privateKeyPath  
(선택 사항) 다운로드한 디바이스 프라이빗 키를 저장할 경로입니다.

# AWS IoT 플릿 프로비저닝 플러그인 변경 로그
<a name="fleet-provisioning-changelog"></a>

다음 표에서는 클레임 플러그인(`aws.greengrass.FleetProvisioningByClaim`)을 기준으로 AWS IoT 플릿 프로비저닝의 각 버전에 대한 변경 사항을 설명합니다.


|  버전  |  변경 사항  | 
| --- | --- | 
|  1.2.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.0.0  |  초기 버전입니다.  | 