

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用手動資源佈建安裝 AWS IoT Greengrass 核心軟體
<a name="manual-installation"></a>

Core AWS IoT Greengrass 軟體包含安裝程式，可將您的裝置設定為 Greengrass 核心裝置。若要手動設定裝置，您可以建立裝置要使用的必要 AWS IoT 和 IAM 資源。如果您手動建立這些資源，則不需要提供 AWS 登入資料給安裝程式。

當您手動安裝 AWS IoT Greengrass Core 軟體時，您也可以將裝置設定為使用網路代理或在連接埠 443 AWS 上連線至 。例如，如果您的裝置在防火牆或網路代理之後執行，您可能需要指定這些組態選項。如需詳細資訊，請參閱[連線至連接埠 443 或透過網路代理](configure-greengrass-core-v2.md#configure-alpn-network-proxy)。

您也可以設定 AWS IoT Greengrass Core 軟體，透過 [PKCS\$111 介面](https://en.wikipedia.org/wiki/PKCS_11)使用硬體安全模組 (HSM)。此功能可讓您安全地存放私有金鑰和憑證檔案，使其不會在軟體中公開或複製。您可以在硬體模組上存放私有金鑰和憑證，例如 HSM、信任平台模組 (TPM) 或其他密碼編譯元素。此功能僅適用於 Linux 裝置。如需硬體安全性和使用需求的詳細資訊，請參閱 [硬體安全整合](hardware-security.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**
+ [擷取 AWS IoT 端點](#retrieve-iot-endpoints)
+ [建立 AWS IoT 物件](#create-iot-thing)
+ [建立物件憑證](#create-thing-certificate)
+ [設定物件憑證](#configure-thing-certificate)
+ [建立權杖交換角色](#create-token-exchange-role)
+ [將憑證下載至裝置](#download-thing-certificates)
+ [設定裝置環境](#set-up-device-environment)
+ [下載 AWS IoT Greengrass 核心軟體](#download-greengrass-core-v2)
+ [安裝 AWS IoT Greengrass 核心軟體](#run-greengrass-core-v2-installer-manual)

## 擷取 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"
   }
   ```

## 建立 AWS IoT 物件
<a name="create-iot-thing"></a>

AWS IoT *物件*代表連線至 的裝置和邏輯實體 AWS IoT。Greengrass 核心裝置是 AWS IoT 實物。當您將裝置註冊為 AWS IoT 物件時，該裝置可以使用數位憑證進行身分驗證 AWS。

在本節中，您會建立代表裝置的 AWS IoT 物件。

**建立 AWS IoT 物件**

1. 為您的裝置建立 AWS IoT 物件。在您的開發電腦上，執行下列命令。
   + 將 *MyGreengrassCore* 取代為要使用的物件名稱。此名稱也是 Greengrass 核心裝置的名稱。
**注意**  <a name="install-argument-thing-name-constraint"></a>
物件名稱不能包含冒號 (`:`) 字元。

   ```
   aws iot create-thing --thing-name MyGreengrassCore
   ```

   如果請求成功，回應看起來與下列範例類似。

   ```
   {
     "thingName": "MyGreengrassCore",
     "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
     "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42"
   }
   ```

1. （選用） 將 AWS IoT 物件新增至新的或現有的物件群組。您可以使用物件群組來管理 Greengrass 核心裝置的機群。將軟體元件部署到裝置時，您可以將個別裝置或裝置群組設為目標。您可以將裝置新增至具有作用中 Greengrass 部署的物件群組，以將該物件群組的軟體元件部署到裝置。請執行下列操作：

   1. （選用） 建立 AWS IoT 物件群組。
      + 將 *MyGreengrassCoreGroup* 取代為要建立的物件群組名稱。
**注意**  <a name="install-argument-thing-group-name-constraint"></a>
物件群組名稱不能包含冒號 (`:`) 字元。

      ```
      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup
      ```

      如果請求成功，回應看起來與下列範例類似。

      ```
      {
        "thingGroupName": "MyGreengrassCoreGroup",
        "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup",
        "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa"
      }
      ```

   1. 將 AWS IoT 物件新增至物件群組。
      + 將 *MyGreengrassCore* 取代為您 AWS IoT 物件的名稱。
      + 將 *MyGreengrassCoreGroup* 取代為物件群組的名稱。

      ```
      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup
      ```

      如果請求成功，命令不會有任何輸出。

## 建立物件憑證
<a name="create-thing-certificate"></a>

<a name="create-thing-certificate-intro-1"></a>當您將裝置註冊為 AWS IoT 物件時，該裝置可以使用數位憑證進行身分驗證 AWS。此憑證可讓裝置與 AWS IoT 和 通訊 AWS IoT Greengrass。

<a name="create-thing-certificate-intro-2"></a>在本節中，您可以建立和下載裝置可用來連線的憑證 AWS。

<a name="create-thing-certificate-intro-3"></a>如果您想要將 AWS IoT Greengrass Core 軟體設定為使用硬體安全模組 (HSM) 來安全地存放私有金鑰和憑證，請依照步驟從 HSM 中的私有金鑰建立憑證。否則，請依照步驟在 AWS IoT 服務中建立憑證和私有金鑰。硬體安全功能僅適用於 Linux 裝置。如需硬體安全性和使用需求的詳細資訊，請參閱 [硬體安全整合](hardware-security.md)。

### 在 AWS IoT 服務中建立憑證和私有金鑰
<a name="create-thing-certificate-cloud"></a><a name="create-thing-certificate-cloud-steps"></a>

**建立物件憑證**

1. 建立資料夾以下載 AWS IoT 物件的憑證。

   ```
   mkdir greengrass-v2-certs
   ```

1. 建立並下載 AWS IoT 物件的憑證。

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

   如果請求成功，回應看起來與下列範例類似。

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----",
     "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\
   MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\
   MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\
   59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\
   hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\
   FQIDAQAB\
   -----END PUBLIC KEY-----\
   ",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\
   key omitted for security reasons\
   -----END RSA PRIVATE KEY-----\
   "
     }
   }
   ```

   儲存憑證的 Amazon Resource Name (ARN)，以供稍後用於設定憑證。

### 從 HSM 中的私有金鑰建立憑證
<a name="create-thing-certificate-hardware-security"></a>

**注意**  
此功能適用於 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.5.3 和更新版本。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。

**建立物件憑證**

1. 在核心裝置上，初始化 HSM 中的 PKCS\$111 字符，並產生私有金鑰。私有金鑰必須是 RSA-2048 金鑰大小 （或更大） 或 ECC 金鑰的 RSA 金鑰。
**注意**  <a name="hardware-security-module-requirements-key-notes"></a>
若要搭配 ECC 金鑰使用硬體安全模組，您必須使用 [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.6 或更新版本。  
若要使用硬體安全模組和[秘密管理員](secret-manager-component.md)，您必須使用具有 RSA 金鑰的硬體安全模組。

   檢查您的 HSM 文件，了解如何初始化字符並產生私有金鑰。如果您的 HSM 支援物件 IDs，請在產生私有金鑰時指定物件 ID。儲存您在初始化字符和產生私有金鑰時指定的槽 ID、使用者 PIN、物件標籤、物件 ID （如果您的 HSM 使用）。當您將物件憑證匯入 HSM 並設定 AWS IoT Greengrass Core 軟體時，稍後會使用這些值。

1. 從私有金鑰建立憑證簽署請求 (CSR)。 AWS IoT 使用此 CSR 為您在 HSM 中產生的私有金鑰建立物件憑證。如需有關如何從私有金鑰建立 CSR 的資訊，請參閱 HSM 的文件。CSR 是 檔案，例如 `iotdevicekey.csr`。

1. 將 CSR 從裝置複製到您的開發電腦。如果在開發電腦和裝置上啟用 SSH 和 SCP，您可以使用開發電腦上的 `scp`命令來傳輸 CSR。將 *device-ip-address* 取代為您裝置的 IP 地址，並將 *\$1/iotdevicekey.csr* 取代為裝置上的 CSR 檔案路徑。

   ```
   scp device-ip-address:~/iotdevicekey.csr iotdevicekey.csr
   ```

1. 在開發電腦上，建立您下載 AWS IoT 物件憑證的資料夾。

   ```
   mkdir greengrass-v2-certs
   ```

1. 使用 CSR 檔案來建立 AWS IoT 物件的憑證，並將其下載到您的開發電腦。

   ```
   aws iot create-certificate-from-csr --set-as-active --certificate-signing-request=file://iotdevicekey.csr --certificate-pem-outfile greengrass-v2-certs/device.pem.crt
   ```

   如果請求成功，回應看起來與下列範例類似。

   ```
   {
     "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4",
     "certificatePem": "-----BEGIN CERTIFICATE-----
   MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   -----END CERTIFICATE-----"
   }
   ```

   儲存憑證的 ARN，以供稍後用於設定憑證。

## 設定物件憑證
<a name="configure-thing-certificate"></a>

將物件憑證連接至您先前建立的 AWS IoT 物件，並將 AWS IoT 政策新增至憑證，以定義核心裝置的 AWS IoT 許可。

**設定物件的憑證**

1. 將憑證連接到 AWS IoT 物件。
   + 將 *MyGreengrassCore* 取代為您 AWS IoT 物件的名稱。
   + 將憑證 Amazon Resource Name (ARN) 取代為您在上一個步驟中建立之憑證的 ARN。

   ```
   aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
   ```

   如果請求成功，命令不會有任何輸出。

1. 建立並連接 AWS IoT 政策，以定義 Greengrass 核心裝置的 AWS IoT 許可。下列政策允許存取所有 MQTT 主題和 Greengrass 操作，因此您的裝置可以使用需要新 Greengrass 操作的自訂應用程式和未來變更。您可以根據使用案例來限制此政策關閉。如需詳細資訊，請參閱[AWS IoT Greengrass V2 核心裝置的最低 AWS IoT 政策](device-auth.md#greengrass-core-minimal-iot-policy)。

   如果您之前已設定 Greengrass 核心裝置，您可以連接其 AWS IoT 政策，而不是建立新的政策。

   請執行下列操作：

   1. 建立檔案，其中包含 Greengrass 核心裝置所需的 AWS IoT 政策文件。

      <a name="nano-command-intro"></a>例如，在以 Linux 為基礎的系統上，您可以執行下列命令來使用 GNU nano 來建立 檔案。

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

      將下列 JSON 複製到 檔案。

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

   1. 從 AWS IoT 政策文件中建立政策。
      + 將 *GreengrassV2IoTThingPolicy* 取代為要建立的政策名稱。

      ```
      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.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\\": [
                \\"*\\"
              ]
            }
          ]
        }",
        "policyVersionId": "1"
      }
      ```

   1. 將 AWS IoT 政策連接至 AWS IoT 物件的憑證。
      + 將 *GreengrassV2IoTThingPolicy* 取代為要連接的政策名稱。
      + 將目標 ARN 取代為物件 AWS IoT 憑證的 ARN。

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

      如果請求成功，命令不會有任何輸出。

## 建立權杖交換角色
<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 *角色別名*來設定 Greengrass 核心裝置的字符交換角色。角色別名可讓您變更裝置的字符交換角色，但保持裝置的組態相同。如需詳細資訊，請參閱《 *AWS IoT Core 開發人員指南*》中的[授權直接呼叫 AWS 服務](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)。

在本節中，您會建立權杖交換 IAM 角色和指向角色 AWS IoT 的角色別名。如果您已經設定 Greengrass 核心裝置，您可以使用其權杖交換角色和角色別名，而不是建立新的權杖交換角色和角色別名。然後，您將裝置的 AWS IoT 物件設定為使用該角色和別名。

**建立字符交換 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)。

1. 建立並連接允許 Greengrass 核心裝置使用角色別名來擔任字符交換角色 AWS IoT 的政策。如果您之前已設定 Greengrass 核心裝置，您可以連接其角色別名 AWS IoT 政策，而不是建立新的。請執行下列操作：

   1. （選用） 建立檔案，其中包含角色別名所需的 AWS IoT 政策文件。

      <a name="nano-command-intro"></a>例如，在以 Linux 為基礎的系統上，您可以執行下列命令來使用 GNU nano 來建立 檔案。

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

      將下列 JSON 複製到 檔案。
      + 使用角色別名的 ARN 取代資源 ARN。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iot:AssumeRoleWithCertificate",
            "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias"
          }
        ]
      }
      ```

   1. 從 AWS IoT 政策文件中建立政策。
      + 將 *GreengrassCoreTokenExchangeRoleAliasPolicy* 取代為要建立 AWS IoT 的政策名稱。

      ```
      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json
      ```

      如果請求成功，回應看起來與下列範例類似。

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

   1. 將 AWS IoT 政策連接至 AWS IoT 物件的憑證。
      + 以角色別名 AWS IoT 政策的名稱取代 *GreengrassCoreTokenExchangeRoleAliasPolicy*。
      + 將目標 ARN 取代為物件 AWS IoT 憑證的 ARN。

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

      如果請求成功，命令不會有任何輸出。

## 將憑證下載至裝置
<a name="download-thing-certificates"></a>

先前，您已將裝置的憑證下載到開發電腦。在本節中，您將憑證複製到核心裝置，以使用裝置用來連線的憑證來設定裝置 AWS IoT。您也可以下載 Amazon 根憑證授權機構 (CA) 憑證。如果您使用 HSM，您也可以將憑證檔案匯入本節的 HSM。
+ 如果您先前已在 AWS IoT 服務中建立物件憑證和私有金鑰，請依照步驟下載具有私有金鑰和憑證檔案的憑證。
+ 如果您先前從硬體安全模組 (HSM) 中的私有金鑰建立物件憑證，請依照步驟下載 HSM 中具有私有金鑰和憑證的憑證。

### 下載具有私有金鑰和憑證檔案的憑證
<a name="download-thing-certificates-without-hardware-security"></a>

**將憑證下載至裝置**

1. <a name="installation-copy-thing-certificate-to-device"></a>將 AWS IoT 物件憑證從開發電腦複製到裝置。如果在開發電腦和裝置上啟用 SSH 和 SCP，您可以使用開發電腦上的 `scp`命令來傳輸憑證。將 *device-ip-address* 取代為您裝置的 IP 地址。

   ```
   scp -r greengrass-v2-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. 將 AWS IoT 物件憑證複製到 Greengrass 根資料夾。

------
#### [ Linux or Unix ]
   + `/greengrass/v2` 將 取代為 Greengrass 根資料夾。

   ```
   sudo cp -R ~/greengrass-v2-certs/* /greengrass/v2
   ```

------
#### [ Windows Command Prompt ]
   + 將 *C：\$1greengrass\$1v2* 取代為要使用的資料夾。

   ```
   robocopy %USERPROFILE%\greengrass-v2-certs C:\greengrass\v2 /E
   ```

------
#### [ PowerShell ]
   + 將 *C：\$1greengrass\$1v2* 取代為要使用的資料夾。

   ```
   cp -Path ~\greengrass-v2-certs\* -Destination C:\greengrass\v2
   ```

------

1. <a name="installation-download-root-ca-certificate"></a>根據預設，下載 Amazon 根憑證授權機構 (CA) certificate. AWS IoT certificates 會與 Amazon 根憑證授權機構憑證相關聯。

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

------

### 在 HSM 中使用私有金鑰和憑證下載憑證
<a name="download-thing-certificates-with-hardware-security"></a>

**注意**  
此功能適用於 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.5.3 和更新版本。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。

**將憑證下載至裝置**

1. <a name="installation-copy-thing-certificate-to-device"></a>將 AWS IoT 物件憑證從開發電腦複製到裝置。如果在開發電腦和裝置上啟用 SSH 和 SCP，您可以使用開發電腦上的 `scp`命令來傳輸憑證。將 *device-ip-address* 取代為您裝置的 IP 地址。

   ```
   scp -r greengrass-v2-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-v2-certs/device.pem.crt`HSM。檢查 HSM 的文件，了解如何將憑證匯入其中。使用您先前在 HSM 中產生私有金鑰的相同字符、槽 ID、使用者 PIN、物件標籤和物件 ID （如果您的 HSM 使用） 匯入憑證。
**注意**  
如果您先前在沒有物件 ID 的情況下產生私有金鑰，且憑證具有物件 ID，請將私有金鑰的物件 ID 設定為與憑證相同的值。檢查您的 HSM 文件，了解如何設定私有金鑰物件的物件 ID。

1. （選用） 刪除物件憑證檔案，使其僅存在於 HSM 中。

   ```
   rm ~/greengrass-v2-certs/device.pem.crt
   ```

1. <a name="installation-download-root-ca-certificate"></a>根據預設，下載 Amazon 根憑證授權機構 (CA) certificate. AWS IoT certificates 會與 Amazon 根憑證授權機構憑證相關聯。

------
#### [ 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>

請依照本節中的步驟設定 Linux 或 Windows 裝置，以用作您的 AWS IoT Greengrass 核心裝置。

### 設定 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
     ```

   安裝完成時，請執行下列命令來驗證 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. （選用） 建立在裝置上執行元件的預設系統使用者和群組。您也可以選擇讓 AWS IoT Greengrass Core 軟體安裝程式在安裝期間使用`--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，而且必須啟用和掛載*記憶體*和*裝置* 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 核元件](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 Core 軟體，因此您必須將 Java 新增至 PATH 系統變數，而不是使用者的 PATH 使用者變數。請執行下列操作：

   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 核，而且您必須使用 PsExec 公用程式將預設使用者資訊存放在 LocalSystem 帳戶中。使用 Credential Manager 應用程式會將此資訊存放在目前登入使用者的 Windows 帳戶中，而不是 LocalSystem 帳戶。

## 下載 AWS IoT Greengrass 核心軟體
<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 核心軟體。將*版本*取代為要下載的版本。  

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

**下載 AWS IoT Greengrass 核心軟體**

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 核心軟體授權合約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)之規定。

1. <a name="verify-gg-nucleus-signature"></a>（選用） 驗證 Greengrass 核軟體簽章
**注意**  
此功能適用於 Greengrass 核版本 2.9.5 和更新版本。

   1. 使用下列命令來驗證 Greengrass 核子成品的簽章：

------
#### [ 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 核 zip 檔案，輸出會包含下列陳述式：

         ```
         jar verified.
         ```

      1. 如果 Greengrass 核 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 核心軟體版本。

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

**重要**  <a name="installer-folder-2.4.0-warning"></a>
如果您安裝比 v2.4.0 更舊的 Greengrass 核版本，請勿在安裝 AWS IoT Greengrass 核心軟體之後移除此資料夾。Core AWS IoT Greengrass 軟體會使用此資料夾中的檔案來執行。  
如果您下載最新版本的軟體，請安裝 v2.4.0 或更新版本，並在安裝 AWS IoT Greengrass 核心軟體後移除此資料夾。

## 安裝 AWS IoT Greengrass 核心軟體
<a name="run-greengrass-core-v2-installer-manual"></a>

使用指定下列動作的引數執行安裝程式：
+ 從部分組態檔案安裝 ，指定 使用您先前建立 AWS 的資源和憑證。Core AWS IoT Greengrass 軟體使用組態檔案，指定裝置上每個 Greengrass 元件的組態。安裝程式會從您提供的部分組態檔案建立完整的組態檔案。
+ <a name="install-argument-component-default-user"></a>指定 以使用`ggc_user`系統使用者在核心裝置上執行軟體元件。在 Linux 裝置上，此命令也會指定 使用`ggc_group`系統群組，安裝程式會為您建立系統使用者和群組。
+ <a name="install-argument-system-service"></a>將 AWS IoT Greengrass Core 軟體設定為開機時執行的系統服務。在 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 軟體使用的記憶體量。若要控制記憶體配置，您可以在核心元件的`jvmOptions`組態參數中設定 JVM 堆積大小選項。如需詳細資訊，請參閱[使用 JVM 選項控制記憶體配置](configure-greengrass-core-v2.md#jvm-tuning)。
+ 如果您先前已在 AWS IoT 服務中建立物件憑證和私有金鑰，請依照步驟安裝具有私有金鑰和憑證檔案的 AWS IoT Greengrass 核心軟體。
+ 如果您先前從硬體安全模組 (HSM) 中的私有金鑰建立物件憑證，請依照步驟在 HSM 中安裝具有私有金鑰和憑證的 AWS IoT Greengrass Core 軟體。

### 使用私有金鑰和憑證檔案安裝 AWS IoT Greengrass 核心軟體
<a name="manual-installation-without-hardware-security"></a>

**安裝 AWS IoT Greengrass 核心軟體**

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 內容複製到 檔案。此部分組態檔案會指定系統參數和 Greengrass 核參數。

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.17.0"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
   ```

   然後，執行下列動作：
   + 將 的每個執行個體取代`/greengrass/v2`為 Greengrass 根資料夾。
   + 將 *MyGreengrassCore* 取代為物件的名稱 AWS IoT 。
   + 將 *2.17.0* 取代為 AWS IoT Greengrass 核心軟體版本。
   + 將 *us-west-2* 取代 AWS 區域 為您建立資源的 。
   + 以字符交換角色別名的名稱取代 *GreengrassCoreTokenExchangeRoleAlias*。
   + 將 取代`iotDataEndpoint`為您的 AWS IoT 資料端點。
   + 將 取代`iotCredEndpoint`為您的 AWS IoT 登入資料端點。
**注意**  
在此組態檔案中，您可以自訂要使用的其他核組態選項，例如連接埠和網路代理，如下列範例所示。如需詳細資訊，請參閱 [Greengrass 核組態](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)。  

   ```
   ---
   system:
     certificateFilePath: "/greengrass/v2/device.pem.crt"
     privateKeyPath: "/greengrass/v2/private.pem.key"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.17.0"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "https://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
   ```

1. 執行安裝程式，並指定 `--init-config`以提供組態檔案。
   + 將 `/greengrass/v2`或 *C：\$1greengrass\$1v2* 取代為 Greengrass 根資料夾。
   + 將 *GreengrassInstaller* 的每個執行個體取代為您解壓縮安裝程式的資料夾。

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

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.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 ^
     --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 `
     --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>
當您在沒有 `deploy-dev-tools`引數的情況下執行安裝程式時，無法使用 `--provision true`引數來部署本機開發工具。如需直接在您的裝置上部署 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`。

### 在 HSM 中使用私有金鑰和憑證安裝 AWS IoT Greengrass 核心軟體
<a name="manual-installation-with-hardware-security"></a>

**注意**  
此功能適用於 [Greengrass 核元件](greengrass-nucleus-component.md)的 v2.5.3 和更新版本。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。

**安裝 AWS IoT Greengrass 核心軟體**

1. <a name="installer-check-greengrass-core-software-version"></a>檢查 AWS IoT Greengrass Core 軟體的版本。
   + 將 *GreengrassInstaller* 取代為包含軟體之資料夾的路徑。

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

1. 若要讓 AWS IoT Greengrass Core 軟體使用 HSM 中的私有金鑰和憑證，請在安裝 AWS IoT Greengrass Core 軟體時安裝 [PKCS\$111 提供者元件](pkcs11-provider-component.md)。PKCS\$111 提供者元件是您可以在安裝期間設定的外掛程式。您可以從下列位置下載最新版本的 PKCS\$111 提供者元件：
   + [https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar)

   將 PKCS\$111 供應商外掛程式下載至名為 的檔案`aws.greengrass.crypto.Pkcs11Provider.jar`。將 *GreengrassInstaller* 取代為您要使用的資料夾。

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

   <a name="core-software-license"></a>下載此軟體，即表示您同意 [Greengrass 核心軟體授權合約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)之規定。

1. 使用文字編輯器來建立名為 的組態檔案`config.yaml`，以提供給安裝程式。

   <a name="nano-command-intro"></a>例如，在以 Linux 為基礎的系統上，您可以執行下列命令來使用 GNU nano 來建立 檔案。

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

   將下列 YAML 內容複製到 檔案。此部分組態檔案會指定系統參數、Greengrass 核參數和 PKCS\$111 提供者參數。

   ```
   ---
   system:
     certificateFilePath: "pkcs11:object=iotdevicekey;type=cert"
     privateKeyPath: "pkcs11:object=iotdevicekey;type=private"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.17.0"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
     aws.greengrass.crypto.Pkcs11Provider:
       configuration:
         name: "softhsm_pkcs11"
         library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so"
         slot: 1
         userPin: "1234"
   ```

   然後，執行下列動作：
   + 將 PKCS\$111 URIs 中的每個 *iotdevicekey* 執行個體取代為您建立私有金鑰並匯入憑證的物件標籤。
   + 將 的每個執行個體取代`/greengrass/v2`為 Greengrass 根資料夾。
   + 將 *MyGreengrassCore* 取代為物件的名稱 AWS IoT 。
   + 將 *2.17.0* 取代為 AWS IoT Greengrass 核心軟體版本。
   + 將 *us-west-2* 取代 AWS 區域 為您建立資源的 。
   + 以字符交換角色別名的名稱取代 *GreengrassCoreTokenExchangeRoleAlias*。
   + 將 取代`iotDataEndpoint`為您的 AWS IoT 資料端點。
   + 將 取代`iotCredEndpoint`為您的 AWS IoT 登入資料端點。
   + 將`aws.greengrass.crypto.Pkcs11Provider`元件的組態參數取代為核心裝置上的 HSM 組態值。
**注意**  
在此組態檔案中，您可以自訂要使用的其他核組態選項，例如連接埠和網路代理，如下列範例所示。如需詳細資訊，請參閱 [Greengrass 核組態](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)。  

   ```
   ---
   system:
     certificateFilePath: "pkcs11:object=iotdevicekey;type=cert"
     privateKeyPath: "pkcs11:object=iotdevicekey;type=private"
     rootCaPath: "/greengrass/v2/AmazonRootCA1.pem"
     rootpath: "/greengrass/v2"
     thingName: "MyGreengrassCore"
   services:
     aws.greengrass.Nucleus:
       componentType: "NUCLEUS"
       version: "2.17.0"
       configuration:
         awsRegion: "us-west-2"
         iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias"
         iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
         iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
         mqtt:
           port: 443
         greengrassDataPlanePort: 443
         networkProxy:
           noProxyAddresses: "http://192.168.0.1,www.example.com"
           proxy:
             url: "https://my-proxy-server:1100"
             username: "Mary_Major"
             password: "pass@word1357"
     aws.greengrass.crypto.Pkcs11Provider:
       configuration:
         name: "softhsm_pkcs11"
         library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so"
         slot: 1
         userPin: "1234"
   ```

1. 執行安裝程式，並指定 `--init-config`以提供組態檔案。
   + `/greengrass/v2` 將 取代為 Greengrass 根資料夾。
   + 將 *GreengrassInstaller* 的每個執行個體取代為您解壓縮安裝程式的資料夾。

   ```
   sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
     -jar ./GreengrassInstaller/lib/Greengrass.jar \
     --trusted-plugin ./GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar \
     --init-config ./GreengrassInstaller/config.yaml \
     --component-default-user ggc_user:ggc_group \
     --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>
當您在沒有 `deploy-dev-tools`引數的情況下執行安裝程式時，無法使用 `--provision true`引數來部署本機開發工具。如需直接在您的裝置上部署 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 核心軟體](run-greengrass-core-v2.md)。

**注意**  <a name="install-greengrass-core-recognized-note"></a>
<a name="install-greengrass-core-recognized-para"></a>當 AWS IoT Greengrass Core 軟體連線至雲端時，您的裝置將被識別為 Core 裝置。

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