

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS IoT フリートプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする
<a name="fleet-provisioning"></a>

この機能は、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の v2.4.0 以降に利用できます。

 AWS IoT フリートプロビジョニングを使用すると、初めて に接続するときに、X.509 デバイス証明書とプライベートキーを生成してデバイスに安全に配信 AWS IoT するように を設定できます AWS IoT 。 は、Amazon ルート認証局 (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 Core ソフトウェアをインストールするために使用できる AWS IoT フリートプロビジョニングプラグインが用意されています。フリートプロビジョニングプラグインはクレームによるプロビジョニングを使用します。デバイスは、プロビジョニングクレーム証明書とプライベートキーを使用して、通常の操作に使用できる一意の X.509 デバイス証明書とプライベートキーを取得します。製造中に各デバイスにクレーム証明書とシークレットキーを埋め込むことができるので、お客様は後で各デバイスがオンラインになったときにデバイスをアクティブにできます。複数のデバイスに対して同じクレーム証明書とプライベートキーを使用することができます。詳細については、「AWS IoT Core デベロッパーガイド」の「[クレームによるプロビジョニング](https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#claim-based)」を参照してください。

**注記**  
フリートプロビジョニングプラグインは、現在、ハードウェアセキュリティモジュール (HSM) へのプライベートキーと証明書ファイルの保存をサポートしていません。HSM を使用するには、[手動プロビジョニングで AWS IoT Greengrass Core ソフトウェアをインストールします](manual-installation.md)。

 AWS IoT フリートプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールするには、 AWS アカウント が Greengrass コアデバイスのプロビジョニング 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 Core ソフトウェアをダウンロードする前に、コアデバイスが AWS IoT Greengrass Core ソフトウェア 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 Core ソフトウェアをダウンロードする](#download-greengrass-core-v2)
+ [AWS IoT フリートプロビジョニングプラグインをダウンロードする](#download-fleet-provisioning-plugin)
+ [AWS IoT Greengrass Core ソフトウェアをインストールする](#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 Core ソフトウェアをインストールするには、まず [Greengrass コアデバイスの AWS IoT フリートプロビジョニングを設定](fleet-provisioning-setup.md)する必要があります。これらのステップを 1 回完了すると、フリートプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアを任意の数のデバイスにインストールできます。

## 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 デベロッパーガイド*」の「[Pre-provisioning hooks](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 Core ソフトウェアをこのフォルダにインストールします。
**注記**  
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 Core ソフトウェアが実行する必要がある 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
     ```

   インストールが完了したら、次のコマンドを実行して Java が Linux デバイスで実行されていることを確認します。

   ```
   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. (オプション) デバイスにコンポーネントを実行するデフォルトのシステムユーザーおよびグループを作成します。`--component-default-user` インストーラ引数を使用して、インストール中に AWS IoT Greengrass Core ソフトウェアインストーラにこのユーザーとグループを作成させることもできます。詳細については、「[インストーラ引数](configure-installer.md)」を参照してください。

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

1.  AWS IoT Greengrass Core ソフトウェアを実行するユーザー (通常は `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 を有効にし、*メモリ*と*デバイス*の 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 Core ソフトウェアが実行する必要がある 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 Core ソフトウェアを実行するため、ユーザーの PATH ユーザー変数ではなく PATH システム変数に Java を追加する必要があります。以下の操作を実行します。

   1. Windows キーを押してスタートメニューを開きます。

   1. **environment variables** を入力して、スタートメニューからシステムオプションを検索します。

   1. スタートメニューの検索結果から **[Edit the system environment variables]** (システム環境変数を編集) をクリックして、**[System properties]** (システムプロパティ) ウィンドウを開きます。

   1. **[Environment variables...]** (環境変数...) を選択して、**[Environment Variables]** (環境可変) ウィンドウを開きます。

   1. **[System variables]** (システム変数) で、**[Path]** (パス) 、**[Edit]** (編集) の順に選択します。**[Edit environment variable]** (環境変数の編集) ウィンドウでは、個別の行に各パスを表示できます。

   1. Java インストールの `bin` フォルダへのパスが存在しているかを確認します。このパスは、次の例のように表示されます。

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

   1. **[Path]** (パス) で Java インストールの `bin` フォルダが で見つからない場合は、**[New]** (新規) を選択してこれを追加した上で、**[OK]** を選択します。

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>[PsExec ユーティリティ](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)を Microsoft からダウンロードしてデバイスにインストールします。

1. <a name="set-up-windows-device-credentials"></a>PsExec ユーティリティを使用して、デフォルトユーザーのユーザー名とパスワードを LocalSystem アカウントの認証情報マネージャーインスタンスに格納します。*パスワード*を以前に設定したユーザーのパスワードに置き換えます。

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

   **PsExec License Agreement** が開いたら、**Accept** を選択し、ライセンスに同意してコマンドを実行します。
**注記**  
Windows デバイスでは、LocalSystem アカウントによって Greengrass nucleus が実行され、PsExec ユーティリティを使用して LocalSystem アカウントにデフォルトのユーザー情報を保存する必要があります。認証情報マネージャーアプリケーションを使用すると、この情報は LocalSystem アカウントではなく、現在ログオンしているユーザーの Windows アカウントに保存されます。

## AWS IoT Greengrass Core ソフトウェアをダウンロードする
<a name="download-greengrass-core-v2"></a>

 AWS IoT Greengrass Core ソフトウェアの最新バージョンは、次の場所からダウンロードできます。
+ [https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)

**注記**  
 AWS IoT Greengrass Core ソフトウェアの特定のバージョンは、次の場所からダウンロードできます。*バージョン*をダウンロードするバージョンに置き換えます。  

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

**AWS IoT Greengrass Core ソフトウェアをダウンロードするには**

1. <a name="installation-download-ggc-software-step"></a>コアデバイスで、 AWS IoT Greengrass Core ソフトウェアを という名前のファイルにダウンロードします`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 Core ソフトウェアのライセンス契約](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 のバージョンによって、ファイル名が異なる場合があります。インストールした JDK のバージョンに *`jdk17.0.6_10`* を置き換えてください。

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

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

      インストールする JDK のバージョンによって、ファイル名が異なる場合があります。インストールした JDK のバージョンに *`jdk17.0.6_10`* を置き換えてください。

      ```
      '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. Jarsigner `-certs` を `-verify` と`-verbose` オプションと一緒に提供した場合、出力には署名者証明書の詳細情報も含まれます。

1. <a name="installation-unzip-ggc-software-step"></a> AWS IoT Greengrass Core ソフトウェアをデバイスのフォルダに解凍します。*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 Core ソフトウェアのバージョンを確認します。

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

**重要**  <a name="installer-folder-2.4.0-warning"></a>
v2.4.0 より前のバージョンの Greengrass nucleus をインストールした場合は、 AWS IoT Greengrass Core ソフトウェアをインストールした後にこのフォルダを削除しないでください。 AWS IoT Greengrass Core ソフトウェアは、このフォルダ内のファイルを使用して実行します。  
ソフトウェアの最新バージョンをダウンロードした場合は、v2.4.0 以降をインストールし、 AWS IoT Greengrass Core ソフトウェアをインストールした後にこのフォルダを削除できます。

## 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 トプロビジョニングプラグインの特定のバージョンは、次の場所からダウンロードできます。*バージョン*をダウンロードするバージョンに置き換えます。フリートプロビジョニングプラグインの各バージョンの詳細については、「[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 Core ソフトウェアのライセンス契約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)に同意したものと見なされます。

## AWS IoT Greengrass Core ソフトウェアをインストールする
<a name="run-greengrass-core-v2-installer-fleet"></a>

次のアクションを指定する引数を含むインストーラを実行します。
+ フリートプロビジョニングプラグインを使用して AWS リソースをプロビジョニングするように指定する部分的な設定ファイルから をインストールします。 AWS IoT Greengrass Core ソフトウェアは、デバイス上のすべての Greengrass コンポーネントの設定を指定する設定ファイルを使用します。インストーラは、提供される部分設定ファイルと、フリートプロビジョニングプラグインが作成する AWS リソースから、完全な設定ファイルを作成します。
+ <a name="install-argument-component-default-user"></a>コアデバイスでソフトウェアコンポーネントを実行するために `ggc_user` システムユーザーを使用するように指定します。Linux デバイスでは、このコマンドも `ggc_group` システムグループを使用するように指定し、さらにインストーラによってシステムユーザーとグループが、ユーザーに代わって作成されます。
+ <a name="install-argument-system-service"></a>Core 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 Core ソフトウェアをシステムサービスとして設定する必要があります。

指定できる引数の詳細については、「[インストーラ引数](configure-installer.md)」を参照してください。

**注記**  
<a name="jvm-tuning-note"></a>メモリが制限された AWS IoT Greengrass デバイスで実行している場合は、 AWS IoT Greengrass Core ソフトウェアが使用するメモリ量を制御できます。メモリ割り当てを制御するには、nucleus コンポーネントの `jvmOptions` 設定パラメータで JVM ヒープのサイズオプションを設定できます。詳細については、「[JVM オプションでメモリ割り当てを制御する](configure-greengrass-core-v2.md#jvm-tuning)」を参照してください。

**AWS IoT Greengrass Core ソフトウェアをインストールするには**

1. <a name="installer-check-greengrass-core-software-version"></a> AWS IoT Greengrass Core ソフトウェアのバージョンを確認します。
   + *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.16.1"
     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.16.1"
     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.16.1* を AWS IoT Greengrass Core ソフトウェアのバージョンに置き換えます。
   + `/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.16.1"
       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.16.1"
       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 コアデバイスでは、 を指定`--setup-system-service true`して AWS IoT Greengrass Core ソフトウェアをシステムサービスとしてセットアップする必要があります。

   <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 Core ソフトウェアをシステムサービスとしてインストールした場合、インストーラはソフトウェアを実行します。それ以外の場合、ソフトウェアを手動で実行する必要があります。詳細については、「[AWS IoT Greengrass Core ソフトウェアを実行する](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 Core ソフトウェアを設定する](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 Core ソフトウェアをインストールする](fleet-provisioning.md)には、まず で次のリソースを設定する必要があります AWS アカウント。これらのリソースにより、デバイスは に登録 AWS IoT され、Greengrass コアデバイスとして動作できます。このセクションの手順を一度実行して、これらのリソースを AWS アカウントで設定してください。
+ トークン交換 IAM ロールは、コアデバイスが AWS サービスへの呼び出しを認可するために使用します。
+ トークン交換 AWS IoT ロールを指すロールエイリアス。
+ (オプション) コアデバイスが AWS IoT および AWS IoT Greengrass サービスへの呼び出しを承認するために使用する AWS IoT ポリシー。この AWS IoT ポリシーは、トークン交換 AWS IoT ロールを指すロールエイリアスの`iot:AssumeRoleWithCertificate`アクセス許可を許可する必要があります。

  フリート内のすべてのコアデバイスに 1 つの 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 デベロッパーガイド」の「[ジャストインタイムプロビジョニング](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 デベロッパーガイド*」の「[Pre-provisioning hooks](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 認証情報を取得します。これにより、デバイスは Amazon CloudWatch Logs とやり取りしたり AWS IoT、Amazon CloudWatch Logs にログを送信したり、Amazon S3 からカスタムコンポーネントアーティファクトをダウンロードしたりできます。 Amazon CloudWatch 詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。

<a name="installation-create-token-exchange-role-alias-intro"></a> AWS IoT *ロールエイリアス*を使用して、Greengrass コアデバイスのトークン交換ロールを設定します。ロールエイリアスは、デバイスのトークン交換ロールを変更できるようにしますが、デバイス設定は同じ内容に保たれます。詳細については、「*AWS IoT Core デベロッパーガイド*」の「[Authorizing direct calls to AWS services](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。この証明書には、デバイスが証明書で使用できるアクセス許可を定義する 1 つ以上の 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 デベロッパーガイド」の「[ジャストインタイムプロビジョニング](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. [AWSIoTThingsRegistration](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration) ポリシーを確認してください。これにより、デバイスのプロビジョニング時に が AWS IoT 使用するすべてのアクセス許可へのアクセスが許可されます。このマネージドポリシーを使用するか、ユースケースのアクセス許可に範囲を絞り込んだカスタムポリシーを作成することができます。カスタムポリシーを作成する場合は、ここで作成します。

   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
      ```

------
**注記**  
事前プロビジョニングフックを作成した場合は、事前プロビジョニングフックの Lambda 関数の ARN を `--pre-provisioning-hook` 引数で指定します。  

      ```
      --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 ルート認証局 (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 とプライベートキーができました。Core AWS IoT Greengrass ソフトウェアをインストールする前に、製造中にクレーム証明書とプライベートキーをデバイスに埋め込むか、証明書とキーをデバイスにコピーできます。詳細については、「[AWS IoT フリートプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールする](fleet-provisioning.md)」を参照してください。

# AWS IoT フリートプロビジョニングプラグインを設定する
<a name="fleet-provisioning-configuration"></a>

 AWS IoT フリートプロビジョニングプラグインには、[フリートプロビジョニングで AWS IoT Greengrass Core ソフトウェアをインストールする](fleet-provisioning.md)ときにカスタマイズできる以下の設定パラメータが用意されています。

`rootPath`  
 AWS IoT Greengrass Core ソフトウェアのルートとして使用するフォルダへのパス。

`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 デベロッパーガイド」の「[ジャストインタイムプロビジョニング](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`  
(オプション) プロキシサーバーの URL (`scheme://userinfo@host:port` 形式)。HTTPS プロキシを使用するには、フリートプロビジョニングプラグインのバージョン 1.1.0 以降を使用する必要があります。  <a name="nucleus-component-configuration-proxy-url-segments"></a>
+ `scheme` - スキーム。`http` または `https` である必要があります。
**重要**  
<a name="https-proxy-greengrass-nucleus-requirement"></a>HTTPS プロキシを使用するには、Greengrass コアデバイスで [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/ja_jp/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.2.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/fleet-provisioning-changelog.html)  | 
|  1.0.0  |  当初のバージョン  | 