

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

# 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)」を参照してください。