設定 AWS IoT Greengrass 核心 - AWS IoT Greengrass

若我們提供該指南英語版本的翻譯,在有任何牴觸的狀況下請以英文版本的指南為主。其透過機器翻譯提供翻譯。

設定 AWS IoT Greengrass 核心

一個 AWS IoT Greengrass 核心 是 AWS IoT 在邊緣環境中充當集線器或網關的事件(設備)。像其他 AWS IoT 設備、註冊表中存在覈心、設備影子、使用設備證書進行身份驗證 AWS IoT Core 和 AWS IoT Greengrass. 核心裝置執行 AWS IoT Greengrass 核心軟體,利其管理 Greengrass 群組的本機步驟,例如,通訊、陰影同步和字符交換。

TheThethe AWS IoT Greengrass Core軟件提供以下功能:

  • 連接器和 Lambda 函數的部署和本機執行操作。

  • 在本機處理資料串流並自動匯出至 AWS 雲端。

  • 使用受管訂閱時,裝置、連接器及 Lambda 函數之間在本機網路上的 MQTT 傳訊。

  • MQTT消息 AWS IoT 以及設備、連接器,以及 Lambda 使用ManagedSubscriptions的功能。

  • 使用裝置身份驗證和授權時,裝置與 AWS 雲端之間的安全連線。

  • 裝置的本機陰影同步。可將陰影設定為與 AWS 雲端同步。

  • 對本機裝置和磁碟區資源控制的存取。

  • 用於執行本機推論的雲端訓練機器學習模型部署。

  • 可讓裝置探索 Greengrass 核心裝置的自動 IP 地址偵測。

  • 新的或更新的群組組態的集中部署。下載組態資料之後,核心裝置會自動重新啟動。

  • 安全、無線 (OTA) 的使用者定義 Lambda 函數軟體更新。

  • 安全且經過加密的本機秘密儲存空間,且可藉由連接器和 Lambda 函數控制存取權。

AWS IoT Greengrass 核心組態檔案

AWS IoT Greengrass Core 軟體的組態檔案是 config.json。它會置放於 /greengrass-root/config 目錄中。

注意

greengrass-root 代表 AWS IoT Greengrass 核心軟體在裝置上安裝所在的路徑。通常,這是 /greengrass 目錄。

如果您從 AWS IoT Greengrass 主控台 使用 Default Group creation (預設群組建立),則 config.json 檔案會部署至處於運作狀態的核心裝置。

您可以執行下列命令檢閱此檔案內容:

cat /greengrass-root/config/config.json

以下是範例 config.json 檔案。這是您從 AWS IoT Greengrass 主控台 建立核心時產生的版本。

GGC v1.10
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "maxWorkItemCount" : 1024, "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 檔案支援以下屬性:

coreThing

欄位 描述 備註
caPath

通往 AWS IoT 根CA相對於 /greengrass-root/certs 目錄。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。

注意
certPath

相對於 /greengrass-root/certs 目錄的核心裝置憑證路徑。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
keyPath 相對於 /greengrass-root/certs 目錄的核心私有金鑰路徑。 針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。

在 AWS IoT 主控台 下方 設置,或通過運行 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI命令。

此命令傳回 Amazon Trust Services (ATS) 端點。有關詳細信息,請參閱 服務器身份驗 文檔。

ggHost 您的 AWS IoT Greengrass 端點。

這是您的 iotHost 主機前綴的端點替換爲 格林草格 (例如, greengrass-ats.iot.region.amazonaws.com)。使用與 相同的 AWS 區域。iotHost.

注意
iotMqttPort 選用。用於與 進行 MQTT 通訊的連接埠號碼。AWS IoT. 有效值爲 8883443...默認值爲 8883...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
iotHttpPort 選用。用於建立到 之 HTTPS 連線的連接埠號碼。AWS IoT. 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
ggMqttPort 選用。用於透過區域網路進行 MQTT 通訊的連接埠號碼。 有效值爲 1024 通過 65535...默認值爲 8883...有關詳細信息,請參閱 設定本機簡訊的 MQTT 連接埠.
ggHttpPort 選用。用於建立到 AWS IoT Greengrass 服務之 HTTPS 連線的連接埠號碼。 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
keepAlive 選用。MQTT KeepAlive 期間 (以秒為單位)。 有效範圍介於 30 與 1200 秒之間。預設值為 600.
networkProxy 選用。定義要連線代理伺服器的物件。 這可以是 HTTP 或 HTTPS 代理。如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.
mqttOperationTimeout 選用。在與 的 MQTT 連線中,允許 Greengrass 核心完成發佈、訂閱或取消訂閱操作的時間量 (以秒為單位)。AWS IoT Core.

此屬性從 AWS IoT Greengrass v1.10.2 開始提供使用。

預設值為 5. 最小值為 5。

runtime

欄位 描述 備註
maxWorkItemCount

選用。Greengrass 協助程式一次可以處理的工作項目數量上限。超過此限制的工作項目會被忽略。

工作項目佇列係由系統元件、使用者定義的 Lambda 函數和連接器共用。

預設值為 1024。該最大值受裝置硬體的限制。

提高此值將增加 AWS IoT Greengrass 使用的記憶體。如果您預期核心會接收大量的 MQTT 訊息流量,則可以提高此值。

postStartHealthCheckTimeout 選用。Greengrass 協助程式等候開始運作狀態檢查完成的時間量 (毫秒)。 預設逾時時間為 30 秒 (30000 毫秒)。
cgroup
useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.

加密

crypto 包含支援透過 PKCS#11 和本機秘密儲存在硬體安全模組 (HSM) 上儲存私密金鑰的屬性。如需詳細資訊,請參閱 AWS IoT Greengrass 核心安全性主體硬體安全整合將私密部署至 AWS IoT Greengrass 核心。支援 HSM 上或檔案系統中私有金鑰儲存的組態。

欄位 描述 備註
caPath

通往 AWS IoT 根CA。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

注意
PKCS11
OpenSSLEngine

選用。OpenSSL 引擎 .so 檔案的絕對路徑,此檔案可在 OpenSSL 上啟用 PKCS#11 支援。

必須是檔案系統上的檔案路徑。

如果您使用具硬體安全的 Greengrass OTA 更新代理程式,則此屬性為必要。如需詳細資訊,請參閱設定無線更新的支援.

P11Provider

PKCS#11 實作的 libdl-loadable 程式庫的絕對路徑。

必須是檔案系統上的檔案路徑。

slotLabel

用於識別硬體模組的插槽標籤。

必須符合 PKCS#11 標籤規格。

slotUserPin

用於對模組驗證 Greengrass 核心的使用者 PIN。

必須具有足夠的許可,才能使用設定的私有金鑰執行 C_Sign。

principals
IoTCertificate 核心用於向 提出請求的憑證和私有金鑰。AWS IoT.
IoTCertificate  .privateKeyPath

核心私有金鑰的路徑。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

IoTCertificate  .certificatePath

核心裝置憑證的絕對路徑。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

MQTTServerCertificate

選用。核心用於結合憑證做為 MQTT 伺服器或閘道的私有金鑰。

MQTTServerCertificate  .privateKeyPath

本機 MQTT 伺服器私有金鑰的路徑。

使用此值,為本機 MQTT 伺服器指定您自己的私有金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

如果省略此屬性,AWS IoT Greengrass 會根據您的輪換設定輪換金鑰。若有指定,則由客戶負責輪換金鑰。

SecretsManager 保護用於加密之資料金鑰的私有金鑰。如需詳細資訊,請參閱將私密部署至 AWS IoT Greengrass 核心.
SecretsManager  .privateKeyPath

本機 Secrets Manager 私有金鑰的路徑。

僅支援 RSA 金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。必須使用 PKCS11v1.5 襯墊機構。

也支援下列組態屬性:

欄位 描述 備註
mqttMaxConnectionRetryInterval

選用。連線中斷時,MQTT 連線重試的間隔上限 (以秒為單位)。

請指定此數值做為未簽署的整數。 預設值為 60.

managedRespawn

選用。指出 OTA 代理程式在更新之前需要執行自訂程式碼。

有效值爲 truefalse...有關詳細信息,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新.

writeDirectory

選用。由 AWS IoT Greengrass 建立所有讀寫資源的寫入目錄。

如需詳細資訊,請參閱設定 的寫入目錄AWS IoT Greengrass.

GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 檔案支援以下屬性:

coreThing

欄位 描述 備註
caPath

通往 AWS IoT 根CA相對於 /greengrass-root/certs 目錄。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。

注意
certPath

相對於 /greengrass-root/certs 目錄的核心裝置憑證路徑。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
keyPath 相對於 /greengrass-root/certs 目錄的核心私有金鑰路徑。 針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。

在 AWS IoT 主控台 下方 設置,或通過運行 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI命令。

此命令傳回 Amazon Trust Services (ATS) 端點。有關詳細信息,請參閱 服務器身份驗 文檔。

ggHost 您的 AWS IoT Greengrass 端點。

這是您的 iotHost 主機前綴的端點替換爲 格林草格 (例如, greengrass-ats.iot.region.amazonaws.com)。使用與 相同的 AWS 區域。iotHost.

注意
iotMqttPort 選用。用於與 進行 MQTT 通訊的連接埠號碼。AWS IoT. 有效值爲 8883443...默認值爲 8883...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
iotHttpPort 選用。用於建立到 之 HTTPS 連線的連接埠號碼。AWS IoT. 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
ggHttpPort 選用。用於建立到 AWS IoT Greengrass 服務之 HTTPS 連線的連接埠號碼。 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
keepAlive 選用。MQTT KeepAlive 期間 (以秒為單位)。 有效範圍介於 30 與 1200 秒之間。預設值為 600.
networkProxy 選用。定義要連線代理伺服器的物件。 這可以是 HTTP 或 HTTPS 代理。如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.

runtime

欄位 描述 備註
postStartHealthCheckTimeout 選用。Greengrass 協助程式等候開始運作狀態檢查完成的時間量 (毫秒)。 預設逾時時間為 30 秒 (30000 毫秒)。
cgroup
useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.

加密

已在 v1.7.0 中新增 crypto 物件。其中推出的屬性可透過 PKCS#11 和本機私密儲存支援硬體安全模組 (HSM) 上的私有金鑰儲存。如需詳細資訊,請參閱 AWS IoT Greengrass 核心安全性主體硬體安全整合將私密部署至 AWS IoT Greengrass 核心。支援 HSM 上或檔案系統中私有金鑰儲存的組態。

欄位 描述 備註
caPath

通往 AWS IoT 根CA。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

注意
PKCS11
OpenSSLEngine

選用。OpenSSL 引擎 .so 檔案的絕對路徑,此檔案可在 OpenSSL 上啟用 PKCS#11 支援。

必須是檔案系統上的檔案路徑。

如果您使用具硬體安全的 Greengrass OTA 更新代理程式,則此屬性為必要。如需詳細資訊,請參閱設定無線更新的支援.

P11Provider

PKCS#11 實作的 libdl-loadable 程式庫的絕對路徑。

必須是檔案系統上的檔案路徑。

slotLabel

用於識別硬體模組的插槽標籤。

必須符合 PKCS#11 標籤規格。

slotUserPin

用於對模組驗證 Greengrass 核心的使用者 PIN。

必須具有足夠的許可,才能使用設定的私有金鑰執行 C_Sign。

principals
IoTCertificate 核心用於向 提出請求的憑證和私有金鑰。AWS IoT.
IoTCertificate  .privateKeyPath

核心私有金鑰的路徑。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

IoTCertificate  .certificatePath

核心裝置憑證的絕對路徑。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

MQTTServerCertificate

選用。核心用於結合憑證做為 MQTT 伺服器或閘道的私有金鑰。

MQTTServerCertificate  .privateKeyPath

本機 MQTT 伺服器私有金鑰的路徑。

使用此值,為本機 MQTT 伺服器指定您自己的私有金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

如果省略此屬性,AWS IoT Greengrass 會根據您的輪換設定輪換金鑰。若有指定,則由客戶負責輪換金鑰。

SecretsManager 保護用於加密之資料金鑰的私有金鑰。如需詳細資訊,請參閱將私密部署至 AWS IoT Greengrass 核心.
SecretsManager  .privateKeyPath

本機 Secrets Manager 私有金鑰的路徑。

僅支援 RSA 金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。必須使用 PKCS11v1.5 襯墊機構。

也支援下列組態屬性:

欄位 描述 備註
mqttMaxConnectionRetryInterval

選用。連線中斷時,MQTT 連線重試的間隔上限 (以秒為單位)。

請指定此數值做為未簽署的整數。 預設值為 60.

managedRespawn

選用。指出 OTA 代理程式在更新之前需要執行自訂程式碼。

有效值爲 truefalse...有關詳細信息,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新.

writeDirectory

選用。由 AWS IoT Greengrass 建立所有讀寫資源的寫入目錄。

如需詳細資訊,請參閱設定 的寫入目錄AWS IoT Greengrass.

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 檔案支援以下屬性:

coreThing

欄位 描述 備註
caPath

通往 AWS IoT 根CA相對於 /greengrass-root/certs 目錄。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。

注意
certPath

相對於 /greengrass-root/certs 目錄的核心裝置憑證路徑。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
keyPath 相對於 /greengrass-root/certs 目錄的核心私有金鑰路徑。 針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。

在 AWS IoT 主控台 下方 設置,或通過運行 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI命令。

此命令傳回 Amazon Trust Services (ATS) 端點。有關詳細信息,請參閱 服務器身份驗 文檔。

ggHost 您的 AWS IoT Greengrass 端點。

這是您的 iotHost 主機前綴的端點替換爲 格林草格 (例如, greengrass-ats.iot.region.amazonaws.com)。使用與 相同的 AWS 區域。iotHost.

iotMqttPort 選用。用於與 進行 MQTT 通訊的連接埠號碼。AWS IoT. 有效值爲 8883443...默認值爲 8883...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
iotHttpPort 選用。用於建立到 之 HTTPS 連線的連接埠號碼。AWS IoT. 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
ggHttpPort 選用。用於建立到 AWS IoT Greengrass 服務之 HTTPS 連線的連接埠號碼。 有效值爲 8443443...默認值爲 8443...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
keepAlive 選用。MQTT KeepAlive 期間 (以秒為單位)。 有效範圍介於 30 與 1200 秒之間。預設值為 600.
networkProxy 選用。定義要連線代理伺服器的物件。 這可以是 HTTP 或 HTTPS 代理。如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.

runtime

欄位 描述 備註
cgroup
useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.

加密

已在 v1.7.0 中新增 crypto 物件。其中推出的屬性可透過 PKCS#11 和本機私密儲存支援硬體安全模組 (HSM) 上的私有金鑰儲存。如需詳細資訊,請參閱 AWS IoT Greengrass 核心安全性主體硬體安全整合將私密部署至 AWS IoT Greengrass 核心。支援 HSM 上或檔案系統中私有金鑰儲存的組態。

欄位 描述 備註
caPath

通往 AWS IoT 根CA。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

注意
PKCS11
OpenSSLEngine

選用。OpenSSL 引擎 .so 檔案的絕對路徑,此檔案可在 OpenSSL 上啟用 PKCS#11 支援。

必須是檔案系統上的檔案路徑。

如果您使用具硬體安全的 Greengrass OTA 更新代理程式,則此屬性為必要。如需詳細資訊,請參閱設定無線更新的支援.

P11Provider

PKCS#11 實作的 libdl-loadable 程式庫的絕對路徑。

必須是檔案系統上的檔案路徑。

slotLabel

用於識別硬體模組的插槽標籤。

必須符合 PKCS#11 標籤規格。

slotUserPin

用於對模組驗證 Greengrass 核心的使用者 PIN。

必須具有足夠的許可,才能使用設定的私有金鑰執行 C_Sign。

principals
IoTCertificate 核心用於向 提出請求的憑證和私有金鑰。AWS IoT.
IoTCertificate  .privateKeyPath

核心私有金鑰的路徑。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

IoTCertificate  .certificatePath

核心裝置憑證的絕對路徑。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

MQTTServerCertificate

選用。核心用於結合憑證做為 MQTT 伺服器或閘道的私有金鑰。

MQTTServerCertificate  .privateKeyPath

本機 MQTT 伺服器私有金鑰的路徑。

使用此值,為本機 MQTT 伺服器指定您自己的私有金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

如果省略此屬性,AWS IoT Greengrass 會根據您的輪換設定輪換金鑰。若有指定,則由客戶負責輪換金鑰。

SecretsManager 保護用於加密之資料金鑰的私有金鑰。如需詳細資訊,請參閱將私密部署至 AWS IoT Greengrass 核心.
SecretsManager  .privateKeyPath

本機 Secrets Manager 私有金鑰的路徑。

僅支援 RSA 金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。必須使用 PKCS11v1.5 襯墊機構。

也支援下列組態屬性:

欄位 描述 備註
mqttMaxConnectionRetryInterval

選用。連線中斷時,MQTT 連線重試的間隔上限 (以秒為單位)。

請指定此數值做為未簽署的整數。 預設值為 60.

managedRespawn

選用。指出 OTA 代理程式在更新之前需要執行自訂程式碼。

有效值爲 truefalse...有關詳細信息,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新.

writeDirectory

選用。由 AWS IoT Greengrass 建立所有讀寫資源的寫入目錄。

如需詳細資訊,請參閱設定 的寫入目錄AWS IoT Greengrass.

Deprecated versions

不支援以下 AWS IoT Greengrass 核心軟體版本。此資訊僅供參考之用。

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 檔案支援以下屬性:

coreThing

欄位 描述 備註
caPath

通往 AWS IoT 根CA相對於 /greengrass-root/certs 目錄。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。

注意
certPath

相對於 /greengrass-root/certs 目錄的核心裝置憑證路徑。

針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
keyPath 相對於 /greengrass-root/certs 目錄的核心私有金鑰路徑。 針對與 1.7.0 之前版本的回溯相容性。出現 crypto 物件時,會忽略此屬性。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。

在 AWS IoT 主控台 下方 設置,或通過運行 aws iot describe-endpoint --endpoint-type iot:Data-ATS CLI命令。

此命令傳回 Amazon Trust Services (ATS) 端點。有關詳細信息,請參閱 服務器身份驗 文檔。

ggHost 您的 AWS IoT Greengrass 端點。

這是您的 iotHost 主機前綴的端點替換爲 格林草格 (例如, greengrass-ats.iot.region.amazonaws.com)。使用與 相同的 AWS 區域。iotHost.

iotMqttPort 選用。用於與 進行 MQTT 通訊的連接埠號碼。AWS IoT. 有效值爲 8883443...默認值爲 8883...有關詳細信息,請參閱 連線至連接埠 443 或透過網路代理.
keepAlive 選用。MQTT KeepAlive 期間 (以秒為單位)。 有效範圍介於 30 與 1200 秒之間。預設值為 600.
networkProxy 選用。定義要連線代理伺服器的物件。 這可以是 HTTP 或 HTTPS 代理。如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.

runtime

欄位 描述 備註
cgroup
useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.

加密

於 v1.7.0 新增的 crypto 物件所引進的屬性,可透過 PKCS#11 和本機私密儲存支援硬體安全模組 (HSM) 上的私有金鑰儲存。如需詳細資訊,請參閱 硬體安全整合將私密部署至 AWS IoT Greengrass 核心。支援 HSM 上或檔案系統中私有金鑰儲存的組態。

欄位 描述 備註
caPath

通往 AWS IoT 根CA。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

注意
PKCS11
OpenSSLEngine

選用。OpenSSL 引擎 .so 檔案的絕對路徑,此檔案可在 OpenSSL 上啟用 PKCS#11 支援。

必須是檔案系統上的檔案路徑。

如果您使用具硬體安全的 Greengrass OTA 更新代理程式,則此屬性為必要。如需詳細資訊,請參閱設定無線更新的支援.

P11Provider

PKCS#11 實作的 libdl-loadable 程式庫的絕對路徑。

必須是檔案系統上的檔案路徑。

slotLabel

用於識別硬體模組的插槽標籤。

必須符合 PKCS#11 標籤規格。

slotUserPin

用於對模組驗證 Greengrass 核心的使用者 PIN。

必須具有足夠的許可,才能使用設定的私有金鑰執行 C_Sign。

principals
IoTCertificate 核心用於向 提出請求的憑證和私有金鑰。AWS IoT.
IoTCertificate  .privateKeyPath

核心私有金鑰的路徑。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

IoTCertificate  .certificatePath

核心裝置憑證的絕對路徑。

必須為此格式的檔案 URI:file:///absolute/path/to/file.

MQTTServerCertificate

選用。核心用於結合憑證做為 MQTT 伺服器或閘道的私有金鑰。

MQTTServerCertificate  .privateKeyPath

本機 MQTT 伺服器私有金鑰的路徑。

使用此值,為本機 MQTT 伺服器指定您自己的私有金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。

如果省略此屬性,AWS IoT Greengrass 會根據您的輪換設定輪換金鑰。若有指定,則由客戶負責輪換金鑰。

SecretsManager 保護用於加密之資料金鑰的私有金鑰。如需詳細資訊,請參閱將私密部署至 AWS IoT Greengrass 核心.
SecretsManager  .privateKeyPath

本機 Secrets Manager 私有金鑰的路徑。

僅支援 RSA 金鑰。

如為檔案系統儲存,必須為此格式的檔案 URI:file:///absolute/path/to/file.

對於HSM存儲,必須是 RFC7512PKCS11 指定對象標籤的路徑。必須使用 PKCS11v1.5 襯墊機構。

也支援下列組態屬性:

欄位 描述 備註
mqttMaxConnectionRetryInterval

選用。連線中斷時,MQTT 連線重試的間隔上限 (以秒為單位)。

請指定此數值做為未簽署的整數。 預設值為 60.

managedRespawn

選用。指出 OTA 代理程式在更新之前需要執行自訂程式碼。

有效值爲 truefalse...有關詳細信息,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新.

writeDirectory

選用。由 AWS IoT Greengrass 建立所有讀寫資源的寫入目錄。

如需詳細資訊,請參閱設定 的寫入目錄AWS IoT Greengrass.

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }
注意

如果您從 AWS IoT Greengrass 主控台 使用 Default Group creation (預設群組建立) 選項,則 config.json 檔案會部署至指定預設組態並處於運作狀態的核心裝置。

config.json 檔案支援以下屬性:

欄位 描述 備註
caPath

相對於 /greengrass-root/certs 目錄的 AWS IoT 根 CA 路徑。

將檔案儲存於 /greengrass-root/certs 下。

certPath

相對於 /greengrass-root/certs 目錄的 AWS IoT Greengrass 核心 憑證路徑。

將檔案儲存於 /greengrass-root/certs 下。
keyPath 相對於 /greengrass-root/certs 目錄的 AWS IoT Greengrass 核心 私有金鑰路徑。 將檔案儲存於 /greengrass-root/certs 下。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。 Settings (設定) 下的 AWS IoT 主控台 中,或執行 aws iot describe-endpoint CLI 命令尋找此端點。
ggHost 您的 AWS IoT Greengrass 端點。 此值使用的格式為 greengrass.iot.region.amazonaws.com。使用與 iotHost 相同的區域。
keepAlive MQTT KeepAlive 期間 (以秒為單位)。 此為選用值。預設值為 600
mqttMaxConnectionRetryInterval

連線中斷時,MQTT 連線重試的間隔上限 (以秒為單位)。

請指定此數值做為未簽署的整數。此為選用值。預設值為 60

useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.
managedRespawn

選用的無線 (OTA) 更新功能,這表示 OTA 代理程式在更新之前需執行自訂程式碼。

有效值為 truefalse。如需詳細資訊,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新

writeDirectory

由 AWS IoT Greengrass 建立所有讀寫資源的寫入目錄。

此為選用值。如需更多詳細資訊,請參閱 設定 的寫入目錄AWS IoT Greengrass

GGC v1.5
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 檔案存在於 /greengrass-root/config 中並包含以下參數:

欄位 描述 備註
caPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT 根 CA 路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。

certPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 憑證路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。
keyPath 相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 私有金鑰路徑。 將檔案儲存在 /greengrass-root/certs 資料夾底下。
thingArn 亞馬遜資源名稱(ARN)的 AWS IoT 代表 AWS IoT Greengrass 核心 設備。 在 AWS IoT Greengrass 主控台 下方 核心,或通過運行 aws greengrass get-core-definition-version CLI命令。
iotHost 您的 AWS IoT 端點。 在 AWS IoT 主控台 的 Settings (設定) 下,或執行 aws iot describe-endpoint 命令尋找此端點。
ggHost 您的 AWS IoT Greengrass 端點。 此值使用的格式為 greengrass.iot.region.amazonaws.com。使用與 iotHost 相同的區域。
keepAlive MQTT KeepAlive 期間 (以秒為單位)。 此為選用值。預設值為 600 秒。
useSystemd 指出您的裝置是否使用 。systemd. 有效值爲 yesno。運行 check_ggc_dependencies 腳本 模塊1 查看您的設備是否使用 systemd.
managedRespawn

選用的無線 (OTA) 更新功能,這表示 OTA 代理程式在更新之前需執行自訂程式碼。

如需更多詳細資訊,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 檔案存在於 /greengrass-root/config 中並包含以下參數:

欄位 描述 備註
caPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT 根 CA 路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。

certPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 憑證路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。
keyPath 相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 私有金鑰路徑。 將檔案儲存在 /greengrass-root/certs 資料夾底下。
thingArn 代表 AWS IoT Greengrass 核心 之 AWS IoT 物件的 Amazon Resource Name (ARN)。 您可以在 AWS IoT 物件定義下的 AWS IoT Greengrass 主控台 中尋找此值。
iotHost 您的 AWS IoT 端點。 您可以在 Settings (設定) 下的 AWS IoT 主控台 中尋找此值。
ggHost 您的 AWS IoT Greengrass 端點。 您可以在附加 greengrass.Settings (設定) 下的 AWS IoT 主控台 中尋找此值。
keepAlive MQTT KeepAlive 期間 (以秒為單位)。 此為選用值。預設值為 600 秒。
useSystemd 二進位標記,如果您的裝置使用 systemd 值為 yesno。請使用單元 1 中的相依性指令碼查看您的裝置是否使用 systemd
managedRespawn

選用的無線 (OTA) 更新功能,這表示 OTA 代理程式在更新之前需執行自訂程式碼。

如需更多詳細資訊,請參閱 AWS IoT Greengrass 核心軟體的 OTA 更新

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 檔案存在於 /greengrass-root/config 中並包含以下參數:

欄位 描述 備註
caPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT 根 CA 路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。

certPath

相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 憑證路徑。

將檔案儲存在 /greengrass-root/certs 資料夾底下。
keyPath 相對於 /greengrass-root/certs 資料夾的 AWS IoT Greengrass 核心 私有金鑰路徑。 將檔案儲存在 /greengrass-root/certs 資料夾底下。
thingArn 代表 AWS IoT Greengrass 核心 之 AWS IoT 物件的 Amazon Resource Name (ARN)。 您可以在 AWS IoT 物件定義下的 AWS IoT Greengrass 主控台 中尋找此值。
iotHost 您的 AWS IoT 端點。 您可以在 Settings (設定) 下的 AWS IoT 主控台 中尋找此值。
ggHost 您的 AWS IoT Greengrass 端點。 您可以在附加 greengrass.Settings (設定) 下的 AWS IoT 主控台 中尋找此值。
keepAlive MQTT KeepAlive 期間 (以秒為單位)。 此為選用值。預設值為 600 秒。
useSystemd 二進位標記,如果您的裝置使用 systemd 值為 yesno。請使用單元 1 中的相依性指令碼查看您的裝置是否使用 systemd
GGC v1.0

在 AWS IoT Greengrass 核心 v1.0 中,config.json 會部署至 greengrass-root/configuration

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 檔案存在於 /greengrass-root/configuration 中並包含以下參數:

欄位 描述 備註
caPath

相對於 /greengrass-root/configuration/certs 資料夾的 AWS IoT 根 CA 路徑。

將檔案儲存在 /greengrass-root/configuration/certs 資料夾底下。

certPath

相對於 /greengrass-root/configuration/certs 資料夾的 AWS IoT Greengrass 核心 憑證路徑。

將檔案儲存在 /greengrass-root/configuration/certs 資料夾底下。
keyPath 相對於 /greengrass-root/configuration/certs 資料夾的 AWS IoT Greengrass 核心 私有金鑰路徑。 將檔案儲存在 /greengrass-root/configuration/certs 資料夾底下。
thingArn 代表 AWS IoT Greengrass 核心 之 AWS IoT 物件的 Amazon Resource Name (ARN)。 您可以在 AWS IoT 物件定義下的 AWS IoT Greengrass 主控台 中尋找此值。
iotHost 您的 AWS IoT 端點。 您可以在 Settings (設定) 下的 AWS IoT 主控台 中尋找此值。
ggHost 您的 AWS IoT Greengrass 端點。

您可以在附加 greengrass.Settings (設定) 下的 AWS IoT 主控台 中尋找此值。

keepAlive MQTT KeepAlive 期間 (以秒為單位)。 此為選用值。預設值為 600 秒。
useSystemd 二進位標記,如果您的裝置使用 systemd 值為 yesno。請使用單元 1 中的相依性指令碼查看您的裝置是否使用 systemd

服務端點必須匹配根CA證書類型

您的 AWS IoT Core 和 AWS IoT Greengrass 端點必須對應於設備上根CA證書的證書類型。如果端點和證書類型不匹配,則認證嘗試在設備與 AWS IoT Core 或 AWS IoT Greengrass. 有關詳細信息,請參閱 服務器身份驗AWS IoT 開發人員指南.

如果您的設備使用AmazonTrustServices(ATS)rootCA證書(這是首選方法),則它還必須使用ATS端點進行設備管理和發現數據平面操作。ATS終點包括 ats 段,如以下語法所示 AWS IoT Core 端點。

prefix-ats.iot.region.amazonaws.com
注意

為了實現回溯相容性,AWS IoT Greengrass 目前可在某些 AWS 區域中支援舊版 VeriSign 根憑證授權機構憑證和端點。如果您使用的是舊式 VeriSign 根 CA 憑證,我們建議您建立 ATS 端點,並改用 ATS 根 CA 憑證。否則,請務必使用對應的舊式端點。有關詳細信息,請參閱 支持的舊端點Amazon Web Services 一般參考.

config.json 中的端點

在Greengrass核心設備上,終點在 coreThing 對象 config.json 文件。TheThethe iotHost 屬性代表 AWS IoT Core 端點。TheThethe ggHost 屬性代表 AWS IoT Greengrass 端點。在下列範例程式碼片段中,這些屬性指定 ATS 端點。

{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
AWS IoT Core endpoint

您可以獲得 AWS IoT Core 端點 aws iot describe-endpoint 適當的CLI命令 --endpoint-type 參數。

  • 若要傳回 ATS 簽署的端點,請執行:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  • 若要傳回舊式 VeriSign 簽署的端點,請執行:

    aws iot describe-endpoint --endpoint-type iot:Data
AWS IoT Greengrass endpoint

您的 AWS IoT Greengrass 終點是 iotHost 主機前綴的端點替換爲 格林草格. 例如,ATS簽名終點是 greengrass-ats.iot.region.amazonaws.com...這使用同一區域 AWS IoT Core 端點。

連線至連接埠 443 或透過網路代理

只有 AWS IoT Greengrass Core v1.7 與更新版本才提供這項功能。

Greengrass 核心會透過 TLS 用戶端身份驗證,使用 MQTT 訊息通訊協定與 AWS IoT Core 通訊。根據慣例,透過 TLS 的 MQTT 使用連接埠 8883。不過,做為安全措施之用,受限環境可能會將傳入和傳出流量限制於小範圍的 TCP 連接埠。例如,企業防火牆可能會針對 HTTPS 流量開放連接埠 443,但關閉較不常用之通訊協定的其他連接埠,例如 MQTT 流量的連接埠 8883。其他受限環境可能會要求所有流量先通過 HTTP 連線,再連線至網際網路。

為了在這些案例中啟用通訊,AWS IoT Greengrass 允許下列設定:

  • 透過連接埠 443 使用 TLS 用戶端身分驗證的 MQTT。. 如果您的網路允許對連接埠 443 的連線,您可以將核心設定為針對 MQTT 流量使用連接埠 443,而不使用預設的連接埠 8883。這可以直接連線至連接埠 443,或透過網路代理伺服器連線。

    AWS IoT Greengrass 使用 應用層協議網絡 (ALPN)TLS擴展以啓用此連接。針對預設組態,連接埠 443 上透過 TLS 的 MQTT 使用憑證型的用戶端身分驗證。

    配置爲使用與端口443直接連接時,核心支持 空中(OTA)更新 對於 AWS IoT Greengrass 軟件。此支援需要 AWS IoT Greengrass 核心版本 1.9.3 或更高版本。

  • 端口443的HTTPS通信... AWS IoT Greengrass 默認情況下,在端口8443上發送HTTPS流量,但您可以將其配置爲使用端口443。

  • 透過網路代理的連線。. 您可以設定網路代理伺服器,做為連線至 Greengrass 核心的中介。僅支援基本身分驗證和 HTTP 與 HTTPS 代理。

    代理配置傳遞到用戶定義的配置 Lambda 通過 http_proxyhttps_proxy,和 no_proxy 環境變量。使用者定義的 Lambda 函數必須使用這些傳入設定,才能透過代理連接。常用庫 Lambda 用於連接的功能(例如Boto3、Curl和Python) requests 包裹)默認使用這些環境變量。如果 Lambda 功能還指定這些相同的環境變量, AWS IoT Greengrass 不會覆蓋它們。

    重要

    配置爲使用網絡代理的Greengrass核心不支持 OTA更新.

透過連接埠 443 設定 MQTT

此功能需要 AWS IoT Greengrass 核心 v。1.7 or later.

此程序可讓 Greengrass 核心將連接埠 443 用於與 傳遞 MQTT 訊息。AWS IoT Core.

  1. 執行下列命令來停止 Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 開放 greengrass-root/config/config.json 由 su 使用者編輯。

  3. coreThing 對象,添加 iotMqttPort 屬性並將值設置爲 443,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotMqttPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... }
  4. 啟動協助程式。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

透過連接埠 443 設定 HTTPS

此功能需要 AWS IoT Greengrass 核心 v。1.8 or later.

此程序會設定核心使用連接埠 443 進行 HTTPS 通訊。

  1. 執行下列命令來停止 Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 開放 greengrass-root/config/config.json 由 su 使用者編輯。

  3. coreThing 對象,添加 iotHttpPortggHttpPort 屬性,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotHttpPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggHttpPort" : 443, "keepAlive" : 600 }, ... }
  4. 啟動協助程式。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

設定網路代理

此功能需要 AWS IoT Greengrass 核心 v。1.7 or later.

此程序可讓 AWS IoT Greengrass 透過 HTTP 或 HTTPS 網路代理來連線至網際網路。

  1. 執行下列命令來停止 Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 開放 greengrass-root/config/config.json 由 su 使用者編輯。

  3. coreThing 對象,添加 網絡代理 對象,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600, "networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } } }, ... }
  4. 啟動協助程式。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

networkProxy 物件

使用 networkProxy 物件,指定網路代理的相關資訊。此物件具有下列屬性。

欄位 描述:
noProxyAddresses

選用。從代理中免除的 IP 地址或主機名稱清單 (以逗號分隔)。

proxy

要連線至的代理。代理具有以下屬性。

  • url代理伺服器的 URL,格式為:。scheme://userinfo@host:port.

    • scheme機制。必須是 http或 。https.

    • userinfo...可選。使用者名稱和密碼資訊。如果指定, usernamepassword 字段被忽略。

    • host代理伺服器的主機名稱或 IP 地址。

    • port...可選。連接埠號碼。若未指定,則會使用以下預設值:

      • http: 80

      • https: 443

  • username...可選。用於向代理伺服器進行身分驗證的使用者名稱。

  • password...可選。用於向代理伺服器進行身分驗證的密碼。

允許端點

Greengrass設備與 AWS IoT Core 或 AWS IoT Greengrass 必須經過驗證。此身份驗證是根據已註冊的 X.509 裝置憑證和加密金鑰。若要允許經驗證的請求通過代理而不需其他加密,請允許以下端點。

Endpoint Port 描述:
greengrass.region.amazonaws.com 443

用於群組管理的控制平面操作。

prefix-ats.iot.region.amazonaws.com

prefix.iot.region.amazonaws.com

MQTT:8883 或 443

HTTPS:8443 或 443

用於裝置管理的資料平面操作,例如陰影同步。

允許使用一個或兩個端點,這取決於您的核心和連線裝置是使用 Amazon Trust Services (偏好) 根 CA 憑證、舊版根 CA 憑證,或兩者皆是。如需詳細資訊,請參閱服務端點必須匹配根CA證書類型.

greengrass-ats.iot.region.amazonaws.com

greengrass.iot.region.amazonaws.com

8443 或 443

用於裝置探索操作。

允許使用一個或兩個端點,這取決於您的核心和連線裝置是使用 Amazon Trust Services (偏好) 根 CA 憑證、舊版根 CA 憑證,或兩者皆是。如需詳細資訊,請參閱服務端點必須匹配根CA證書類型.

注意

在連接埠 443 上連接的用戶端,必須實作應用層協定溝通 (ALPN) TLS 延伸模組,並將 x-amzn-http-ca 傳遞為 ProtocolNameList 中的 ProtocolName。如需詳細資訊,請參閱《AWS IoT 開發人員指南》中的通訊協定

*.s3.amazonaws.com 443

用於部署操作和無線更新。此格式包括 * 字元,因為端點字首是由內部控制,並可能隨時變更。

logs.region.amazonaws.com 443

在 Greengrass 群組設定為寫入日誌到 時為必要。CloudWatch.

設定 的寫入目錄AWS IoT Greengrass

只有 AWS IoT Greengrass Core v1.6 與更新版本才提供這項功能。

默認情況下, AWS IoT Greengrass 核心軟件部署在單個根目錄下 AWS IoT Greengrass 執行所有讀寫操作。不過,您可以將 AWS IoT Greengrass 設定為使用單獨目錄進行所有寫入操作,其中也包括建立目錄和檔案。在此情況下,AWS IoT Greengrass 使用兩個頂層目錄:

  • TheThethe greengrass-root 目錄,您可以將其保留爲讀寫或選擇性地製作只讀。這包含 AWS IoT Greengrass Core 軟體和其他應在執行時間保持不可變的重要元件,例如憑證和 。config.json.

  • 指定的寫入目錄。這包含可寫入的內容,如:日誌、狀態資訊和使用者部署定義的 Lambda 函數。

此組態結果為下列目錄結構。

Greengrass 根目錄
greengrass-root/ |-- certs/ | |-- root.ca.pem | |-- hash.cert.pem | |-- hash.private.key | |-- hash.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |-- package-version/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version.html | |-- runtime/ | |-- java8/ | |-- nodejs8.10/ | |-- python3.7/ | |-- core/
寫入目錄
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

設定寫入目錄

  1. 執行下列命令停用 AWS IoT Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 開放 greengrass-root/config/config.json 由 su 使用者編輯。

  3. 新增 writeDirectory 為參數並指定目標目錄路徑,如下所示。

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }
    注意

    您隨時可以更新 writeDirectory 設定。設定更新後,AWS IoT Greengrass 於下一次開始使用新指定的寫入目錄,但遷移之前寫入目錄中的內容。

  4. 現在,您的寫入目錄已設定,您可以選擇設定 greengrass-root 目錄為唯讀。有關說明,請參閱 要使Greengrass根目錄只讀.

    否則,請啟動 AWS IoT Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

將 Greengrass 根目錄設為唯讀

只有在您想要將 Greengrass 根目錄設為唯讀狀態時,才需依照下列步驟執行。開始之前,必須先設定寫入目錄。

  1. 授與必要目錄的存取許可:

    1. 將讀取和寫入許可提供給 config.json 擁有者。

      sudo chmod 0600 /greengrass-root/config/config.json
    2. 使 ggc_user 成為憑證和系統 Lambda 目錄的擁有者。

      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.10.2/lambda/
      注意

      預設會使用 ggc_user 和 ggc_group 帳戶執行系統 Lambda 函數。如果您配置了組級別 默認訪問身份 要使用不同的帳戶,您應該對該用戶(UID)和組(GID)給予權限。

  2. 使用您偏好的機制將 greengrass-root 目錄設為唯讀。

    注意

    其中一種設定 greengrass-root 目錄為唯讀的方法是掛載目錄為唯讀。不過,若要將無線 (OTA) 更新套用至掛載目錄中的 AWS IoT Greengrass Core 軟體,必須先移除掛載目錄,待更新完成後再次掛載目錄。您可以添加這些 umountmount 運營到 ota_pre_updateota_post_update 腳本。如需 OTA 更新的詳細資訊,請參閱 Greengrass OTA 更新代理程式 和 。透過 OTA 更新受管的 respawn.

  3. 啟動協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    如果未正確設定步驟 1 的許可,則協助程式不會啟動。

配置 MQTT 設定

在 AWS IoT Greengrass 環境、本地設備、 Lambda 功能、連接器和系統組件可以相互通信, AWS IoT Core. 所有溝通都通過核心部分,管理 訂閱 授權實體之間的MQTT通信。

如需可為 AWS IoT Greengrass 設定 MQTT 設定的相關資訊,請參閱下列各節:

注意

OPC-UA 是一個用於工業通訊的資訊交換標準。爲了支持GreengrassCore的OPC-UA,您可以使用 IoT SiteWise 連接器. 此連接器可將產業裝置資料從 OPC-UA 伺服器傳送至 中的資產屬性。AWS IoT SiteWise.

訊息服務品質

AWS IoT Greengrass 支援服務品質 (QoS) 等級 0 或 1,視您的組態和通訊的目標和方向而定。Greengrass 核心做為與 AWS IoT Core 通訊的用戶端,以及區域網路上通訊用的訊息代理程式。


                        核心做為用戶端和本機訊息代理程式。

有關MQTT和Qos的更多信息,請參閱 入門 在MQTT網站上。

與 AWS 雲端通訊
  • 使用 QoS 1 的傳出訊息

    核心會使用 QoS 1 傳送送往 AWS 雲端目標的訊息。AWS IoT Greengrass 會使用 MQTT 訊息佇列來處理這些訊息。如果 AWS IoT Core 未確認訊息交付,訊息將經過多工緩衝處理,等待稍後重試 (除非佇列已滿)。這有助於將間歇連線所造成的資料遺失降至最低。

    如需詳細資訊,包括如何設定本機儲存快取以保存送往 AWS 雲端目標的訊息,請參閱 雲端目標的 MQTT 訊息佇列.

     

  • 使用 QoS 0 (預設值) 或 QoS 1 的傳入訊息

    根據預設,核心會以 QoS 0 訂閱來自 AWS 雲端來源的訊息。如果您啟用持久性工作階段,該核心會使用 QoS 1 進行訂閱。這有助於將間歇連線所造成的資料遺失降至最低。若要管理這些訂閱的 QoS,請在本機多工緩衝處理器系統元件上設定持久性設定。

    如需詳細資訊,包括如何讓核心透過 AWS 雲端目標建立持久性工作階段,請參閱 與 的 MQTT 持久性工作階段AWS IoT Core.

與本機目標的通訊

所有本機通訊都使用 QoS 0。核心是嘗試向本地目標發送消息,這可以是 Greengrass Lambda 功能、連接器,或 連接的設備. 核心不會存放訊息或確認交付。您可以在元件之間任意刪除訊息。

注意

雖然 Lambda 函數之間的直接通訊不會使用 MQTT 簡訊,但行為模式相同。

雲端目標的 MQTT 訊息佇列

送往 AWS 雲端目標的 MQTT 訊息會加入佇列以等待處理。佇列的訊息依先進先出 (FIFO) 順序處理。當訊息經過處理並發佈至 AWS IoT Core 後,該訊息就會從佇列中移除。

依預設,Greengrass 核心會將送往 AWS 雲端目標的未處理訊息存放在記憶體中。您可以設定該核心,以將未處理的訊息改存放於本機儲存快取中。與記憶體內儲存不同,本機儲存快取能夠持續跨核心重啟 (例如,在群組部署或重新啟動裝置後),因此 AWS IoT Greengrass 可以繼續處理訊息。您也可以設定儲存大小。

AWS IoT Greengrass 使用SpoOler系統組件 GGCloudSpooler Lambda 函數)來管理消息隊列。您可以使用下列 GGCloudSpooler 環境變數來設定儲存設定。

  • GG_CONFIG_STORAGE_TYPE。. 訊息佇列的位置。以下為有效值:

    • FileSystem將未處理的訊息儲存在實體核心裝置磁碟上的本機儲存快取中。核心重新啟動時,會保留佇列中的訊息以待處理。訊息處理後會移除。

    • Memory (默認)。將未處理的訊息存放於記憶體。核心重新啟動時,佇列的訊息會遺失。

      此選項針對具有限硬體功能的裝置進行最佳化。若使用此組態,建議您在服務中斷最低時部署群組或重新啟動裝置。

  • GG_CONFIG_MAX_SIZE_BYTES。. 儲存大小,以位元組計。該值可以是任何非負整數 大於等於262144 (256KB);較小尺寸可防止 AWS IoT Greengrass 開始的核心軟件。預設大小為 2.5 MB。超過大小限制時,舊佇列訊息會由新訊息取代。

注意

只有 AWS IoT Greengrass Core v1.6 與更新版本才提供這項功能。 較早版本使用 2.5 MB 佇列大小的記憶體內儲存容量。您不能設定舊版的儲存設定。

在本機儲存快取訊息

您可以設定 AWS IoT Greengrass 以快取訊息至檔案系統中,讓跨核心重新啟動時能存留。爲此,您可以部署一個功能定義版本,其中 GGCloudSpooler 功能將存儲類型設置爲 FileSystem...您必須使用 AWS IoT Greengrass API以配置本地存儲緩存。您無法在主控台執行這項操作。

以下程序使用 create-function-definition-version CLI命令以配置spooler將隊列消息保存到文件系統。這還會設定一個 2.6 MB 大小的佇列。

  1. 取得目標 Greengrass 群組 ID 和目標群組版本 ID。在此程序中,假設這是最新的群組和群組版本。以下命令會傳回最近建立的群組。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您可以依名稱查詢。群組名稱不需要是唯一名稱,因此可能會傳回多個群組。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您也可以在 中找到這些值。AWS IoT 主控台. 組ID顯示在組的 設置 第頁。組版本ID顯示在組的 部署 第頁。

  2. 從輸出中的目標群組複製 IdLatestVersion 值。

  3. 取得最新的群組版本。

    • 以您複製的 Id 取代 group-id

    • 以您複製的 LatestVersion 取代 latest-group-version-id

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 從輸出中的 Definition 物件,複製 CoreDefinitionVersionArn 以及所有其他群組元件的 ARN,但 FunctionDefinitionVersionArn 除外。建立新群組版本時,您會需要使用這些數值。

  5. 從輸出中的 FunctionDefinitionVersionArn,複製函數定義的 ID。該 ID 是 ARN 中跟在 functions 區段後面的 GUID,如下列範例所示。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    注意

    或者,您可以執行 create-function-definition 命令來建立函數定義,然後從輸出複製 ID。

  6. 新增函數定義版本至函數定義。

    • Replace (取代) function-definition-idId 您已爲功能定義複製了。

    • Replace (取代) arbitrary-function-id 用於功能的名稱,例如 spooler-function.

    • 添加任何 Lambda 您希望在此版本中添加到 functions 陣列。您可以使用 get-function-definition-version 命令獲取 Greengrass Lambda 現有功能定義版本的功能。

    警告

    確保您指定的值 GG_CONFIG_MAX_SIZE_BYTES 這是 大於等於262144. 較小的值可以預防 AWS IoT Greengrass Core 軟體啟動。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    注意

    如果您以前設置 GG_CONFIG_SUBSCRIPTION_QUALITY 環境變量 支持持續會話 AWS IoT Core,在此函數實例中包括。

  7. 從輸出複製函數定義版本的 Arn

  8. 建立包含系統 Lambda 函數的群組版本。

    • 為該群組將 group-id 取代為 Id

    • core-definition-version-arn 取代為您從最新群組版本所複製的 CoreDefinitionVersionArn

    • function-definition-version-arn 取代為您為功能定義版本所複製的 Arn

    • 取代您已從最新群組版本複製之其他群組元件 (例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn) 的 ARN。

    • 移除任何未使用的參數。比如說若您的群組版本不包含任何資源,則請移除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 從輸出複製 Version。這是新群組版本的 ID。

  10. 部署具有新群組版本的群組。

    • group-id 取代為您為群組所複製的 Id

    • group-version-id 取代為您為新群組版本所複製的 Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

要更新存儲設置,請使用 AWS IoT Greengrass API以創建包含 GGCloudSpooler 使用更新配置功能。然後,請將函數定義版本新增至新群組版本 (以及其他群組元件) 和部署群組的版本中。如果想要還原預設組態,您可以部署一個不包含 GGCloudSpooler 函數的函數定義版本。

此系統 Lambda 函數不會顯示於主控台。然而,在函數新增至最新的群組版本後,除非您使用 API 執行取代或移除作業,否則其將包含在從主控台進行的部署中。

與 的 MQTT 持久性工作階段AWS IoT Core

只有 AWS IoT Greengrass Core v1.10 與更新版本才提供這項功能。

Greengrass 核心可以建立與 AWS IoT 訊息代理程式的持久性工作階段。持久性工作階段是持續的連線,允許核心在離線時接收傳送的訊息。該核心是連線中的用戶端。

在持久性工作階段中,AWS IoT 訊息代理程式會儲存核心在連線期間所進行的所有訂閱。如果核心斷開, AWS IoT 消息代理商存儲未確認的新消息,並且新消息發佈爲Qos1,並且用於當地目標,例如 Lambda 功能和 連接的設備. 當核心重新連線時,持久性工作階段會繼續,且 AWS IoT 訊息代理程式會以每秒最多 10 則訊息的速率傳送儲存的訊息至核心。持久性工作階段的預設到期時間為 1 小時,並在訊息代理程式偵測到核心中斷連線時開始。有關詳細信息,請參閱 MQTT持續會話AWS IoT 開發人員指南.

AWS IoT Greengrass 使用SpoOler系統組件 GGCloudSpooler Lambda 功能)創建訂閱 AWS IoT 作爲源。您可以使用下列 GGCloudSpooler 環境變數來設定持久性工作階段。

  • GG_CONFIG_SUBSCRIPTION_QUALITY。. 以 AWS IoT 做為來源之訂閱的品質。以下為有效值:

    • AtMostOnce (默認)。停用持久性工作階段。使用 QoS 0 的訂閱。

    • AtLeastOncePersistent啟用持久性工作階段。設置 cleanSession 標誌到 0CONNECT Qos1的消息並訂閱。

      核心接收到的 QoS 1 發佈訊息,會保證達到 Greengrass 協助程式的記憶體內工作佇列。核心會在訊息新增至佇列後確認訊息。從隊列到本地目標的後續通信(例如, Greengrass Lambda 函數、連接器或設備)發送爲Qos0。 AWS IoT Greengrass 不保證交付至當地目標。

      注意

      您可以使用 MaxWorkItem計數 配置屬性以控制工作項隊列的大小。例如,如果您的工作負載需要大量的 MQTT 流量,您可以提升佇列大小。

      持久性工作階段啟用時,核心會開啟至少一個額外的連線以供 MQTT 與 交換訊息。AWS IoT. 如需詳細資訊,請參閱使用 之 MQTT 連線的用戶端 IDAWS IoT.

設定 MQTT 持久性工作階段

您可以配置 AWS IoT Greengrass 使用 AWS IoT Core. 爲此,您可以部署一個功能定義版本,其中 GGCloudSpooler 功能將訂閱質量設置爲 AtLeastOncePersistent...此設置適用於您的所有訂閱 AWS IoT Core (cloud)作爲源。您必須使用 AWS IoT Greengrass API 來設定持久性工作階段。您無法在主控台執行這項操作。

以下程序使用 create-function-definition-version CLI命令配置使用永久會話的spooler。在此程序中,我們假設您正在更新現有群組的最新群組版本設定。

  1. 取得目標 Greengrass 群組 ID 和目標群組版本 ID。在此程序中,假設這是最新的群組和群組版本。以下命令會傳回最近建立的群組。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您可以依名稱查詢。群組名稱不需要是唯一名稱,因此可能會傳回多個群組。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您也可以在 中找到這些值。AWS IoT 主控台. 組ID顯示在組的 設置 第頁。組版本ID顯示在組的 部署 第頁。

  2. 從輸出中的目標群組複製 IdLatestVersion 值。

  3. 取得最新的群組版本。

    • 以您複製的 Id 取代 group-id

    • 以您複製的 LatestVersion 取代 latest-group-version-id

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 從輸出中的 Definition 物件,複製 CoreDefinitionVersionArn 以及所有其他群組元件的 ARN,但 FunctionDefinitionVersionArn 除外。建立新群組版本時,您會需要使用這些數值。

  5. 從輸出中的 FunctionDefinitionVersionArn,複製函數定義的 ID。該 ID 是 ARN 中跟在 functions 區段後面的 GUID,如下列範例所示。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    注意

    或者,您可以執行 create-function-definition 命令來建立函數定義,然後從輸出複製 ID。

  6. 新增函數定義版本至函數定義。

    • Replace (取代) function-definition-idId 您已爲功能定義複製了。

    • Replace (取代) arbitrary-function-id 用於功能的名稱,例如 spooler-function.

    • 添加任何 Lambda 您希望在此版本中添加到 functions 陣列。您可以使用 get-function-definition-version 命令獲取 Greengrass Lambda 現有功能定義版本的功能。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    注意

    如果您以前設置 GG_CONFIG_STORAGE_TYPEGG_CONFIG_MAX_SIZE_BYTES 環境變量至 定義存儲設置,在此功能實例中包括這些內容。

  7. 從輸出複製函數定義版本的 Arn

  8. 建立包含系統 Lambda 函數的群組版本。

    • 為該群組將 group-id 取代為 Id

    • core-definition-version-arn 取代為您從最新群組版本所複製的 CoreDefinitionVersionArn

    • function-definition-version-arn 取代為您為功能定義版本所複製的 Arn

    • 取代您已從最新群組版本複製之其他群組元件 (例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn) 的 ARN。

    • 移除任何未使用的參數。比如說若您的群組版本不包含任何資源,則請移除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 從輸出複製 Version。這是新群組版本的 ID。

  10. 部署具有新群組版本的群組。

    • group-id 取代為您為群組所複製的 Id

    • group-version-id 取代為您為新群組版本所複製的 Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment
  11. (可選)增加 MaxWorkItem計數 核心配置文件中的屬性。這有助核心處理增加的 MQTT 流量以及與本機目標之間的通訊。

要更新這些配置更改的核心,您使用 AWS IoT Greengrass API以創建包含 GGCloudSpooler 使用更新配置功能。然後,請將函數定義版本新增至新群組版本 (以及其他群組元件) 和部署群組的版本中。如果想要還原預設組態,您可以建立一個不包含 GGCloudSpooler 函數的函數定義版本。

此系統 Lambda 函數不會顯示於主控台。然而,在函數新增至最新的群組版本後,除非您使用 API 執行取代或移除作業,否則其將包含在從主控台進行的部署中。

使用 之 MQTT 連線的用戶端 IDAWS IoT

只有 AWS IoT Greengrass Core v1.8 與更新版本才提供這項功能。

Greengrass 核心會開啟與 AWS IoT Core 的 MQTT 連線,以用於陰影同步和憑證管理一類操作。對於這些連線,核心會根據核心物件名稱產生可預測的用戶端 ID。可預測的客戶端ID可與監控、審計和定價功能一起使用,包括 AWS IoT Device Defender 和 AWS IoT 生命週期事件. 您還可以圍繞可預測的客戶端ID創建邏輯(例如, 訂閱策略 基於證書屬性的模板)。

GGC v1.9 and later

有兩個 Greengrass 系統元件會開啟與 的 MQTT 連線。AWS IoT Core. 這些元件使用下列模式來產生連線的用戶端 ID。

Operation 用戶端 ID 模式
部署。

core-thing-name

示例: MyCoreThing

此用戶端 ID 可用來連線、中斷連線、訂閱和取消訂閱生命週期事件通知。

與 交換 MQTT 訊息AWS IoT Core

core-thing-name-cnn

示例: MyCoreThing-c01

nn 是從 00 起始的整數,隨著每個新連線遞增,最大到 05。連接數量由同步陰影狀態的設備數量確定 AWS IoT Core (每組200次)和訂閱數量 cloud 作爲組中的來源(每組50次)。

多工緩衝處理器系統元件會建立與 AWS IoT Core 的連線,以便與雲端來源或目標交換訂閱訊息。多工緩衝處理器也做為 AWS IoT Core 與本機陰影服務和 Device Certificate Manager 之間訊息交換的代理。

注意

如果您啓用 持續會話 用於訂閱 AWS IoT Core,核心在持續會話中打開至少一個附加連接。系統組件不支援持久性工作階段,因此它們不能共用該連線。

GGC v1.8

有數個 Greengrass 系統元件會開啟與 的 MQTT 連線。AWS IoT Core. 這些元件使用下列模式來產生連線的用戶端 ID。

Operation 用戶端 ID 模式
部署。

core-thing-name

示例: MyCoreThing

此用戶端 ID 可用來連線、中斷連線、訂閱和取消訂閱生命週期事件通知。

與 交換 MQTT 訊息AWS IoT Core

core-thing-name-spr

示例: MyCoreThing-spr

影子同步

core-thing-name-snn

示例: MyCoreThing-s01

nn 是從 00 起始的整數,隨著每個新連線遞增,最大到 03。連線數量取決於對 AWS IoT Core 同步其陰影狀態的裝置數目 (每個群組最多 200 個裝置) (每個連線最多 50 個訂閱)。

裝置憑證管理

core-thing-name-dcm

示例: MyCoreThing-dcm

注意

同時連線中使用重複的用戶端 ID,可能會導致連線-中斷連線的無限迴圈。如果另一個裝置已硬式編碼為在連線中使用核心裝置名稱做為用戶端 ID,就會發生這種情形。有關詳細信息,請參閱 故障排除步驟.

Greengrass 裝置也與 的機群索引服務完全整合。AWS IoT Device Management. 這可讓您根據裝置屬性、影子狀態和雲端連線狀態,索引和搜尋裝置。例如,Greengrass 裝置使用實物名稱當做用戶端 ID 建立至少一個連線,因此您可以使用裝置連線索引,探索哪些 Greengrass 裝置目前與 連線或中斷連線。AWS IoT Core. 有關詳細信息,請參閱 車隊索引服務AWS IoT 開發人員指南.

設定本機簡訊的 MQTT 連接埠

此功能需要 AWS IoT Greengrass 核心 v。1.10 or later.

GreengrassCore充當本地消息經紀人,用於本地Lambda功能、連接器之間的MQTT消息,以及 Greengrass設備. 根據預設,核心會使用連接埠 8883 以供區域網路上的 MQTT 流量使用。您可能會想變更連接埠,以避免與在連接埠 8883 上執行的其他軟體發生衝突。

設定核心用於本機 MQTT 流量的連接埠號碼

  1. 執行下列命令來停止 Greengrass 協助程式:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 開放 greengrass-root/config/config.json 由 su 使用者編輯。

  3. coreThing 對象,添加 ggMqttPort 屬性並將值設置爲要使用的端口號。有效值為 1024 到 65535。下列範例會將連接埠號碼設定為 9000.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggMqttPort" : 9000, "keepAlive" : 600 }, ... }
  4. 啟動協助程式。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start
  5. IFIFIF 自動IP檢測 已爲核心啓用,配置已完成。

    如果自動 IP 偵測未啟用,您必須更新核心的連線資訊。這可讓 Greengrass 裝置在探索操作期間接收正確的連接埠號碼,以取得核心連線資訊。您可以使用 AWS IoT 主控台 或 AWS IoT Greengrass API以更新核心連接信息。在此程序中,您只會更新連接埠號碼。核心的本機 IP 地址會保持不變。

    更新核心 (主控台) 的連線資訊
    1. 在組配置頁面上,選擇 核心,然後選擇核心。

    2. 在覈心詳情頁面上,選擇 連接,然後選擇 編輯.

    3. 選擇 添加另一個連接,輸入當前的本地IP地址和新端口號。下列範例會設定 IP 地址 9000 的連接埠號碼 。192.168.1.8.

      
                                                核心做為用戶端和本機訊息代理程式。
    4. 刪除廢棄端點,然後選擇 更新

    更新核心 (API) 的連線資訊
    • 使用 UpdatEconnectivityInfo 操作。以下示例使用 update-connectivity-info 在 AWS CLI 設置端口號 9000 IP地址 192.168.1.8.

      aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
    注意

    您也可以設定核心用於與 傳遞 MQTT 訊息的連接埠。AWS IoT Core. 如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.

在與 AWS 雲端的 MQTT 連線中發佈、訂閱和取消訂閱操作的逾時

此功能可在 AWS IoT Greengrass v1.10.2 或更新版本中使用。

您可以設定允許 Greengrass 核心在與 的 MQTT 連線中完成發佈、訂閱或取消訂閱操作的時間量 (以秒為單位)。AWS IoT Core. 如果因為頻寬限制或高延遲而造成操作逾時,您可能會想要調整此設定。要在 配置JSON 文件、添加或更改 mqttOperationTimeout 屬性在 coreThing 對象。例如: 。

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

預設逾時時間為 5 秒。最小逾時為 5 秒。

啟動自動 IP 偵測

您可以配置 AWS IoT Greengrass 在Greengrass集團中啓用設備,以自動發現GreengrassCore。啓用時,核心手錶會對其IP地址進行更改。如果地址更改,核心會發布更新的地址列表。這些地址適用於與Greengrass集團相同的設備。

注意

TheThethe AWS IoT 已連接設備的政策必須授予 greengrass:Discover 允許設備檢索核心連接信息的權限。如需有關此政策陳述式的詳細資訊,請參閱發現授權.

要啓用此功能,請從 AWS IoT Greengrass 主控台,選擇 自動檢測 當您第一次部署Greengrass集團時。您還可以啓用或禁用組的此功能 設置 頁面下方 核心連接信息. 如果啓用IP檢測 自動檢測和覆蓋連接信息 已選擇。

如何使用 AWS IoT Greengrass API,您必須配置 IPDetector 系統 Lambda 功能。以下步驟顯示如何使用 創建功能-定義版本 CLI命令配置GreengrassCore的自動發現。

  1. 取得目標 Greengrass 群組 ID 和目標群組版本 ID。在此程序中,假設這是最新的群組和群組版本。以下命令會傳回最近建立的群組。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您可以依名稱查詢。群組名稱不需要是唯一名稱,因此可能會傳回多個群組。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您也可以在 中找到這些值。AWS IoT 主控台. 組ID顯示在組的 設置 第頁。組版本ID顯示在組的 部署 第頁。

  2. 從輸出中的目標群組複製 IdLatestVersion 值。

  3. 取得最新的群組版本。

    • 以您複製的 Id 取代 group-id

    • 以您複製的 LatestVersion 取代 latest-group-version-id

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 從輸出中的 Definition 物件,複製 CoreDefinitionVersionArn 以及所有其他群組元件的 ARN,但 FunctionDefinitionVersionArn 除外。建立新群組版本時,您會需要使用這些數值。

  5. 從輸出中的 FunctionDefinitionVersionArn,複製函數定義的 ID 和函數定義版本:

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
    注意

    您可以通過運行 create-function-definition 命令,然後從輸出複製ID。

  6. 使用 get-function-definition-version 命令以獲取當前定義狀態。使用 。function-definition-id 您已爲功能定義複製。例如: 。4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    aws greengrass get-function-definition-version --function-definition-id function-definition-id --function-definition-version-id function-definition-version-id

    請記下列出的函數組態。您需要在建立新的函數定義版本中包含這些組態,以防止目前的定義設定遺失。

  7. 新增函數定義版本至函數定義。

    • Replace (取代) function-definition-idId 您已爲功能定義複製了。例如: 。4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3.

    • Replace (取代) arbitrary-function-id 用於功能的名稱,例如 auto-detection-function.

    • 添加全部 Lambda 您希望在此版本中添加到 functions 陣列,例如上一步中列出的任何列表。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2
  8. 從輸出複製函數定義版本的 Arn

  9. 建立包含系統 Lambda 函數的群組版本。

    • 為該群組將 group-id 取代為 Id

    • core-definition-version-arn 取代為您從最新群組版本所複製的 CoreDefinitionVersionArn

    • function-definition-version-arn 取代為您為功能定義版本所複製的 Arn

    • 取代您已從最新群組版本複製之其他群組元件 (例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn) 的 ARN。

    • 移除任何未使用的參數。比如說若您的群組版本不包含任何資源,則請移除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. 從輸出複製 Version。這是新群組版本的 ID。

  11. 部署具有新群組版本的群組。

    • group-id 取代為您為群組所複製的 Id

    • group-version-id 取代為您為新群組版本所複製的 Version

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

如果想要手動輸入 Greengrass 核心的 IP 地址,您可以使用不包含 IPDetector 函數的不同函數定義來完成此教學課程。這可防止偵測功能自動定位和輸入您的 Greengrass 核心 IP 地址。

此係統 Lambda 功能不可見 Lambda 控制檯。將函數新增至最新的群組版本後,它會包含在您從主控台執行的部署中,除非您使用 API 將其取代或移除。

設定初始化系統,啟動 Greengrass 協助程式

設定您的初始化系統在開機時啟動 Greengrass 協助程式是很好的實務練習,尤其是在管理大型叢集裝置時。

注意

如果您使用 apt 安裝 AWS IoT Greengrass 核心軟件,您可以使用SystemD腳本啓動啓動。如需詳細資訊,請參閱使用 systemd 指令碼以管理 Greengrass 協助程式生命週期.

有不同類型的初始化系統,例如 initd、systemd、SystemV,以及其所使用類似的組態參數。以下範例為 systemd 的服務檔案:TheThethe Type 參數設置爲 forking 因爲Greengrassd(用於開始Greengrass)ForksTheGreengrassDaemonProcess Restart 參數設置爲 on-failure 如果綠草進入失敗的狀態,請直接SystemD重新啓動Greengrass。

注意

要查看您的設備是否使用SystemD,請運行 check_ggc_dependencies 腳本如所述 模塊1. 然後使用SystemD,確保 useSystemd 參數 config.json 設置爲 yes.

[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target

有關如何在樹莓派上創建和啓用系統D的服務文件的信息,請參閱 系統D 樹莓派文檔。

另請參閱 。