快速入門:Greengrass 裝置安裝 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長壽命階段。如需詳細資訊,請參閱 AWS IoT Greengrass V1 維護政策 。在此日期之後, AWS IoT Greengrass V1 不會發佈提供功能、增強功能、錯誤修正或安全修補程式的更新。在 上執行的裝置 AWS IoT Greengrass V1 不會中斷,並會繼續運作和連線至雲端。我們強烈建議您遷移至 AWS IoT Greengrass Version 2,這會新增重要的新功能,並支援其他平台

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

快速入門:Greengrass 裝置安裝

Greengrass 設備設置是一個腳本,可以在幾分鐘內設置您的核心設備,以便您可以開始使用. AWS IoT Greengrass使用此指令碼可以:

  1. 設定您的裝置並安裝 AWS IoT Greengrass Core 軟體。

  2. 設定您的雲端資源。

  3. 選擇性地部署具有 Hello World Lambda 函數的 Greengrass 群組,該函數會將MQTT訊息 AWS IoT 從核心傳送至。 AWS IoT Greengrass 這將設置如下圖所示的 Greengrass 環境。

    你好世界 Lambda 函數 AWS IoT 從 AWS IoT Greengrass 核心發送MQTT消息。

要求

Greengrass 裝置安裝具有下列需求:

  • 您的核心裝置必須使用支援的平台。裝置必須安裝適當的套件管理員:aptyumopkg

     

  • 執行指令碼的 Linux 使用者必須具備以 sudo 執行的許可。

     

  • 您必須提供您的 AWS 帳戶 憑據。如需詳細資訊,請參閱提供 AWS 帳戶 認證

    注意

    Greengrass 裝置安裝程式會在裝置上安裝最新版本的 AWS IoT Greengrass Core 軟體。安裝 AWS IoT Greengrass 核心軟體即表示您同意 Greengrass 核心軟體授權合約。

執行 Greengrass 裝置安裝

您只需要幾個步驟,便能執行 Greengrass 裝置安裝。提供 AWS 帳戶 認證之後,指令碼會佈建您的 Greengrass 核心裝置,並在幾分鐘內部署 Greengrass 群組。請在目標裝置的終端機視窗中執行下列命令。

注意

下列步驟說明如何在互動模式下執行指令碼,這會提示您輸入或接受每個輸入值。如需如何以無提示的方式執行指令碼的資訊,請參閱在無提示模式下執行 Greengrass 裝置設定

 

  1. 提供您的登入資料。在此程序中,我們會假設您已提供暫時安全憑證做為環境變數。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注意

    如果您要在 Raspbian 或 OpenWrt 平台上執行 Greengrass 裝置設定,請複製這些命令。將裝置重新開機後,您必須再次提供這些命令。

  2. 下載及啟動指令碼。您可以使用 wgetcurl 下載指令碼。

    wget:

    wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive

    curl:

    curl https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh > gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
  3. 繼續完成輸入值的命令提示。您可以按 Enter 鍵來使用預設值,或是輸入自訂值並按 Enter

    指令碼會將狀態訊息寫入與以下相似的終端機。

    終端機中的輸出訊息。
  4. 如果您的核心裝置正在執行 Raspbian OpenWrt,或者在出現提示時重新開機裝置,提供您的認證,然後重新啟動指令碼。

    1. 當出現提示要求重新開機裝置時,執行以下其中一個命令。

      針對 Raspbian 平台:

      sudo reboot

      對於 OpenWrt 平台:

      reboot
    2. 在裝置重新開機後,請開啟終端機並提供您的登入資料做為環境變數。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 重新啟動指令碼。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
    4. 當出現提示,詢問您是要使用先前工作階段的輸入值,還是啟動新的安裝時,請輸入 yes 來重新使用您的輸入值。

      注意

      在需要重新開機的平台上,您先前工作階段的輸入值 (登入資料除外) 會暫時存放在 GreengrassDeviceSetup.config.info 檔案中。

    安裝完成後,終端機會顯示予以下相似的成功狀態訊息。

    終端機輸出中的成功訊息。
  5. 檢閱指令碼使用您提供的輸入值設定的新 Greengrass 群組。

    1. 在電腦AWS Management Console上登入並開啟主 AWS IoT 控台。

      注意

      請確定在主控台中 AWS 區域 選取的項目與您用來設定 Greengrass 環境的相同。根據預設,「區域」為美國西部 (奧勒岡)。

    2. 在瀏覽窗格中,展開 Greengrass 裝置,然後選擇 [群組 (V1)] 以尋找新建立的群組。

  6. 如果您包含了 Hello World Lambda 函數,Greengrass 裝置安裝程式會將 Greengrass 群組部署到您的核心裝置。若要測試 Lambda 函數,或如需如何從群組驗證 Lambda 函數正在核心裝置上執行中移除 Lambda 函數的相關資訊,請繼續閱讀入門教學課程的單元 3-1。

    注意

    請確定在主控台中 AWS 區域 選取的項目與您用來設定 Greengrass 環境的相同。根據預設,「區域」為美國西部 (奧勒岡)。

    如果您沒有包含 Hello World Lambda 函數,您可以建立自己的 Lambda 函數或嘗試其他 Greengrass 功能。例如,您可以將 Docker 應用程式部署連接器新增至您的群組,並用該連接器來將 Docker 容器部署到您的核心裝置。

     

疑難排解 問題

您可以使用下列資訊疑難排解 AWS IoT Greengrass 裝置設定的問題。

錯誤:找不到 Python(python3.7)。正在嘗試安裝它...

解決方案:使用 Amazon EC2 執行個體時,您可能會看到此錯誤。當 Python 未安裝在/usr/bin/python3.7資料夾中時,就會發生這個錯誤。要解決此錯誤,請在安裝 Python 後將其移至正確的目錄中:

sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3.7

其他疑難排

若要疑難排解 AWS IoT Greengrass 裝置設定的其他問題,您可以在記錄檔中尋找偵錯資訊:

  • 針對 Greengrass 裝置安裝組態的問題,請檢查 /tmp/greengrass-device-setup-bootstrap-epoch-timestamp.log 檔案。

  • 針對 Greengrass 群組或核心環境安裝的問題,請檢查與 gg-device-setup-latest.sh 相同目錄,或是在您指定位置的 GreengrassDeviceSetup-date-time.log 檔案。

如需更多疑難排解說明,請參閱AWS IoT Greengrass 疑難排解或查看 AWS Re: POST 上的AWS IoT Greengrass 標籤

Greengrass 裝置安裝組態選項

您可以配置 Greengrass 設備設置來訪問您的 AWS 資源並設置您的 Greengrass 環境。

提供 AWS 帳戶 認證

Greengrass 裝置設定會使用您的 AWS 帳戶 認證來存取您的資源。 AWS 它支援IAM使用者的長期認證或來自IAM角色的臨時安全登入資料。

首先,請取得您的登入資料。

注意

基於本教學課程的目的,我們假設使IAM用者或IAM角色具有管理員存取權限。

接著,透過下列兩種方式的其中一種,向 Greengrass 裝置設定提供您的登入資料:

  • 環境變數。在您啟動指令碼前設定 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN (如需要的話) 環境變數,如 執行 Greengrass 裝置安裝 的步驟 1 所示。

     

  • 輸入值。啟動指令碼後,直接在終端機中輸入您的存取金鑰 ID、私密存取金鑰和工作階段字符 (如需要) 值。

Greengrass 裝置安裝不會儲存或存放您的登入資料。

 

提供輸入值

在互動模式下,Greengrass 裝置設定會提示您提供輸入值。您可以按 Enter 鍵來使用預設值,或是輸入自訂值並按 Enter。在無提示模式下,您需要在啟動指令碼後提供輸入值。

AWS 存取金鑰 ID

長期或暫時安全憑證的存取金鑰 ID。只有在您沒有提供登入資料做為環境變數時,才指定此選項做為輸入值。如需詳細資訊,請參閱提供 AWS 帳戶 認證

無提示模式的選項名稱:--aws-access-key-id

AWS 私密存取金鑰

長期或暫時安全憑證的私密存取金鑰。只有在您沒有提供登入資料做為環境變數時,才指定此選項做為輸入值。如需詳細資訊,請參閱提供 AWS 帳戶 認證

無提示模式的選項名稱:--aws-secret-access-key

AWS 會話令牌

暫時安全憑證的工作階段字符。只有在您沒有提供登入資料做為環境變數時,才指定此選項做為輸入值。如需詳細資訊,請參閱提供 AWS 帳戶 認證

無提示模式的選項名稱:--aws-session-token

AWS 區域

您想要建立綠色群組的 AWS 區域 位置。如需支援 AWS 區域的清單,請參閱AWS IoT Greengrass中的Amazon Web Services 一般參考

預設值:us-west-2

無提示模式的選項名稱:--region

Group name (群組名稱)

Greengrass 群組名稱。

預設值:GreengrassDeviceSetup_Group_guid

無提示模式的選項名稱:--group-name

核心名稱

Greengrass 核心的名稱。核心是執行 AWS IoT Greengrass 核心軟體的 AWS IoT 裝置 (物件)。核心會新增至 AWS IoT 登錄和 Greengrass 群組。如果您提供名稱,該名稱在和中必須是唯一 AWS 帳戶 的 AWS 區域。

預設值:GreengrassDeviceSetup_Core_guid

無提示模式的選項名稱:--core-name

AWS IoT Greengrass 核心軟體安裝路徑

裝置檔案系統中您要安裝 AWS IoT Greengrass Core 軟體的位置。

預設值:/

無提示模式的選項名稱:--ggc-root-path

Hello World Lambda 函數

指示是否要在 Greengrass 群組中包含 Hello 世界 Lambda 函數。函數每五秒會向hello/world主題發佈一MQTT則訊息。

指令碼會在中建立並發佈此使用者定義的 Lambda 函數, AWS Lambda 並將其新增至您的 Greengrass 群組。此指令碼也會在群組中建立訂閱,以允許函式將MQTT訊息傳送至 AWS IoT。

注意

這是一個 Python 3.7 Lambda 函數。如果並未在裝置上安裝 Python 3.7,且指令碼無法進行安裝,指令碼便會在終端機中印出錯誤訊息。若要在群組中包含 Lambda 函數,您必須手動安裝 Python 3.7 並重新啟動指令碼。若要建立不含 Lambda 函數的 Greengrass 群組,請重新啟動指令碼,並在提示您包含函數no時輸入。

預設值:no

無提示模式的選項名稱:--hello-world-lambda - 此選項不採用數值。若要建立函數,請將它加入您的命令中。

部署逾時

Greengrass 裝置安裝停止檢查 Greengrass 群組部署狀態前的秒數。這只會在群組包含 Hello World Lambda 函數時使用。否則便不會部署群組。

部署時間取決於您的網路速度。針對緩慢的網路速度,您可以增加這個值。

預設值:180

無提示模式的選項名稱:--deployment-timeout

日誌路徑

日誌檔案的位置,其中包含 Greengrass 群組和核心安裝操作的相關資訊。請使用此日誌來針對 Greengrass 群組和核心安裝的部署及其他問題進行故障診斷。

預設值:./

無提示模式的選項名稱:--log-path

Verbosity (詳細資訊)

指出指令碼執行時,是否在終端機中列印詳細日誌資訊。您可以使用此資訊來對裝置設定進行故障診斷。

預設值:no

無提示模式的選項名稱:--verbose - 此選項不採用數值。若要列印詳細日誌資訊,請將它加入您的命令中。

 

在無提示模式下執行 Greengrass 裝置設定

您可以在無提示模式下執行 Greengrass 裝置設定,這樣指令碼就不會提示您輸入任何值。若要在無提示模式下執行,請在啟動指令碼後指定 bootstrap-greengrass 模式和輸入值。若要使用其預設值,則可以忽略輸入值。

此程序取決於您在啟動指令碼之前是否將 AWS 帳戶 認證當做環境變數提供,還是在啟動指令碼之後作為輸入值提供。

  1. 提供登入資料做為環境變數 下列範例會匯出臨時登入資料,其中包括工作階段字符。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注意

    如果您要在 Raspbian 或 OpenWrt 平台上執行 Greengrass 裝置設定,請複製這些命令。將裝置重新開機後,您必須再次提供這些命令。

  2. 下載及啟動指令碼。視需要提供輸入值。例如:

    • 若要使用所有預設值:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    • 若要指定自訂值:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注意

    若要使用 curl 下載指令碼,請將命令中的 wget -q -O 換為 curl

  3. 如果您的核心裝置正在執行 Raspbian OpenWrt,或者在出現提示時重新開機裝置,提供您的認證,然後重新啟動指令碼。

    1. 當出現提示要求重新開機裝置時,執行以下其中一個命令。

      針對 Raspbian 平台:

      sudo reboot

      對於 OpenWrt 平台:

      reboot
    2. 在裝置重新開機後,請開啟終端機並提供您的登入資料做為環境變數。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 重新啟動指令碼。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    4. 當出現提示,詢問您是要使用先前工作階段的輸入值,還是啟動新的安裝時,請輸入 yes 來重新使用您的輸入值。

      注意

      在需要重新開機的平台上,您先前工作階段的輸入值 (登入資料除外) 會暫時存放在 GreengrassDeviceSetup.config.info 檔案中。

    安裝完成後,終端機會顯示予以下相似的成功狀態訊息。

    終端機輸出中的成功訊息。
  4. 如果您包含了 Hello World Lambda 函數,Greengrass 裝置安裝程式會將 Greengrass 群組部署到您的核心裝置。若要測試 Lambda 函數,或如需如何從群組驗證 Lambda 函數正在核心裝置上執行中移除 Lambda 函數的相關資訊,請繼續閱讀入門教學課程的單元 3-1。

    注意

    請確定在主控台中 AWS 區域 選取的項目與您用來設定 Greengrass 環境的相同。根據預設,「區域」為美國西部 (奧勒岡)。

    如果您沒有包含 Hello World Lambda 函數,您可以建立自己的 Lambda 函數或嘗試其他 Greengrass 功能。例如,您可以將 Docker 應用程式部署連接器新增至您的群組,並用該連接器來將 Docker 容器部署到您的核心裝置。

     

  1. 下載及啟動指令碼。提供您的登入資料和您要指定的任何其他輸入值。下列範例說明如何提供臨時登入資料,其中包括工作階段字符。

    • 若要使用所有預設值:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    • 若要指定自訂值:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE= --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注意

    如果您在 Raspbian 或 OpenWrt 平台上執行 Greengrass 裝置設定,請複製您的憑證。將裝置重新開機後,您必須再次提供這些命令。

    若要使用 curl 下載指令碼,請將命令中的 wget -q -O 換為 curl

  2. 如果您的核心裝置正在執行 Raspbian OpenWrt,或者在出現提示時重新開機裝置,提供您的認證,然後重新啟動指令碼。

    1. 當出現提示要求重新開機裝置時,執行以下其中一個命令。

      針對 Raspbian 平台:

      sudo reboot

      對於 OpenWrt 平台:

      reboot
    2. 重新啟動指令碼。您必須在命令中加入您的登入資料,而不是其他輸入值。例如:

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 當出現提示,詢問您是要使用先前工作階段的輸入值,還是啟動新的安裝時,請輸入 yes 來重新使用您的輸入值。

      注意

      在需要重新開機的平台上,您先前工作階段的輸入值 (登入資料除外) 會暫時存放在 GreengrassDeviceSetup.config.info 檔案中。

    安裝完成後,終端機會顯示予以下相似的成功狀態訊息。

    終端機輸出中的成功訊息。
  3. 如果您包含了 Hello World Lambda 函數,Greengrass 裝置安裝程式會將 Greengrass 群組部署到您的核心裝置。若要測試 Lambda 函數,或如需如何從群組驗證 Lambda 函數正在核心裝置上執行中移除 Lambda 函數的相關資訊,請繼續閱讀入門教學課程的單元 3-1。

    注意

    請確定在主控台中 AWS 區域 選取的項目與您用來設定 Greengrass 環境的相同。根據預設,「區域」為美國西部 (奧勒岡)。

    如果您沒有包含 Hello World Lambda 函數,您可以建立自己的 Lambda 函數或嘗試其他 Greengrass 功能。例如,您可以將 Docker 應用程式部署連接器新增至您的群組,並用該連接器來將 Docker 容器部署到您的核心裝置。