

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 如何使用 設定本機資源存取 AWS 管理主控台
<a name="lra-console"></a>

此功能適用於 AWS IoT Greengrass Core v1.3 和更新版本。

您可以設定 Lambda 函數，以安全地存取主機 Greengrass 核心裝置上的本機資源。*本機資源*指實際存在於主機上的匯流排及週邊設備，或主機作業系統上的檔案系統磁碟區。如需包括要求和限制的詳細資訊，請參閱[使用 Lambda 函數和連接器存取本機資源](access-local-resources.md)。

本教學說明如何使用 AWS 管理主控台 設定對 AWS IoT Greengrass 核心裝置上存在的本機資源的存取。包含以下高階執行步驟：

1. [建立 Lambda 函數部署套件](#lra-console-create-package)

1. [建立和發佈 Lambda 函數](#lra-console-create-function)

1. [將 Lambda 函數新增至群組](#lra-console-add-function)

1. [新增本機資源至群組](#lra-console-create-resource)

1. [新增訂閱到群組](#lra-console-add-subscription)

1. [部署群組](#lra-console-deploy-group)

如需使用 的教學課程 AWS Command Line Interface，請參閱 [如何使用 AWS 命令列界面設定本機資源存取](lra-cli.md)。

## 先決條件
<a name="lra-console-prerequisites"></a>

為完成此教學課程您需要：
+ Greengrass 群組和 Greengrass 核心 (v1.3 或更新版本）。若要建立 Greengrass 群組或核心，請參閱 [入門 AWS IoT Greengrass](gg-gs.md)。
+ 以下目錄位於 Greengrass 核心裝置：
  + /src/LRAtest
  + /dest/LRAtest

  這些目錄的擁有者群組必須擁有讀取和寫入存取目錄的權限。您可以使用以下命令來授與存取權限：

  ```
  sudo chmod 0775 /src/LRAtest
  ```

## 步驟 1：建立 Lambda 函數部署套件
<a name="lra-console-create-package"></a>

在此步驟中，您會建立 Lambda 函數部署套件，這是一個包含函數程式碼和相依性的 ZIP 檔案。您也可以下載 AWS IoT Greengrass 核心 SDK，以做為相依性包含在套件中。

1. 在您的電腦中複製以下 Python 指令碼到本機檔案 `lraTest.py`。這是 Lambda 函數的應用程式邏輯。

   ```
   # Demonstrates a simple use case of local resource access.
   # This Lambda function writes a file test to a volume mounted inside
   # the Lambda environment under destLRAtest. Then it reads the file and 
   # publishes the content to the AWS IoT LRAtest topic. 
   
   import sys
   import greengrasssdk
   import platform
   import os
   import logging
   
   # Setup logging to stdout
   logger = logging.getLogger(__name__)
   logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
   
   # Create a Greengrass Core SDK client.
   client = greengrasssdk.client('iot-data')
   volumePath = '/dest/LRAtest'
   
   def function_handler(event, context):
       try:
           client.publish(topic='LRA/test', payload='Sent from AWS IoT Greengrass Core.')
           volumeInfo = os.stat(volumePath)
           client.publish(topic='LRA/test', payload=str(volumeInfo))
           with open(volumePath + '/test', 'a') as output:
               output.write('Successfully write to a file.')
           with open(volumePath + '/test', 'r') as myfile:
               data = myfile.read()
           client.publish(topic='LRA/test', payload=data)
       except Exception as e:
           logger.error('Failed to publish message: ' + repr(e))
       return
   ```

1. <a name="download-ggc-sdk"></a> 從[AWS IoT Greengrass 核心開發套件](what-is-gg.md#gg-core-sdk-download)下載頁面，將適用於 Python AWS IoT Greengrass 的核心開發套件下載至您的電腦。

1. <a name="unzip-ggc-sdk"></a>解壓縮下載的封裝，以取得軟體開發套件。SDK 為 `greengrasssdk` 資料夾。

1. 請將下列項目壓縮成一個檔案，並命名為 `lraTestLambda.zip`：
   + `lraTest.py`。 應用程式邏輯。
   + `greengrasssdk`。 所有 Python Lambda 函數所需的程式庫。

   `lraTestLambda.zip` 檔案是您的 Lambda 函數部署套件。現在您已準備好建立 Lambda 函數並上傳部署套件。

## 步驟 2：建立和發佈 Lambda 函數
<a name="lra-console-create-function"></a>

在此步驟中，您會使用 AWS Lambda 主控台來建立 Lambda 函數，並將其設定為使用您的部署套件。然後，您會發佈函數版本和建立別名。

首先，建立 Lambda 函數。

1. 在 中 AWS 管理主控台，選擇**服務**，然後開啟 AWS Lambda 主控台。

1. 選擇 **函數**。

1. <a name="lambda-console-create-function"></a>選擇**建立函數**，然後選擇**從頭開始撰寫**。

1. 在 **Basic information (基本資訊)** 區段中，使用下列值。

   1. 針對**函數名稱**，請輸入 **TestLRA**。

   1. 針對**執行期**，選擇 **Python 3.7**。

   1. 對於**許可**，請保留預設設定。這會建立授予基本 Lambda 許可的執行角色。不會使用此角色 AWS IoT Greengrass。

1. 選擇**建立函數**。  
![\[[建立函數] 頁面反白顯示 [建立函數]。\]](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/lra-console/create-function.png)

    

1. 上傳您的 Lambda 函數部署套件並註冊處理常式。

   1. <a name="lambda-console-upload"></a>在**程式碼**索引標籤的**程式碼來源**下，選擇**上傳來源**。從下拉式清單中，選擇 **.zip 檔案**。  
![\[從下拉式清單上傳，並反白顯示 .zip 檔案。\]](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. 選擇**上傳**，然後選擇您的`lraTestLambda.zip`部署套件。然後選擇 **Save (儲存)**。

   1. <a name="lambda-console-runtime-settings-para"></a>在函數的**程式碼**索引標籤的**執行時間設定**下，選擇**編輯**，然後輸入下列值。
      + 針對**執行期**，選擇 **Python 3.7**。
      + 針對 **Handler (處理常式)**，輸入 **lraTest.function\$1handler**。

   1. <a name="lambda-console-save-config"></a>選擇**儲存**。
**注意**  
 AWS Lambda 主控台上的**測試**按鈕不適用於此函數。 AWS IoT Greengrass 核心 SDK 不包含在 AWS Lambda 主控台中獨立執行 Greengrass Lambda 函數所需的模組。這些模組 （例如 `greengrass_common`) 會在部署到您的 Greengrass 核心之後提供給函數。

   接著，發佈 Lambda 函數的第一個版本。然後，建立[版本的別名](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)。

   Greengrass 群組可以依別名 （建議） 或版本參考 Lambda 函數。使用別名可讓您更輕鬆地管理程式碼更新，因為您不必在更新函數程式碼時變更訂閱資料表或群組定義。反之，您只需將別名指向新的函數版本。

1. 從 **Actions (動作)**，選擇 **Publish new version (發佈新版本)**。

1. 針對 **Version description (版本描述)**，輸入 **First version**，然後選擇 **Publish (發佈)**。

1. 在 **TestLRA: 1** 組態頁面，從**Actions (動作)** 中選擇 **Create alias (建立別名)**。

1. 在**建立別名**頁面上，針對**名稱**輸入 **test**。針對 **Version (版本)** 輸入 **1**。
**注意**  
AWS IoT Greengrass 不支援 **\$1LATEST** 版本的 Lambda 別名。

1. 選擇**建立**。  
![\[[建立新的函數] 頁面反白顯示 [建立]。\]](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/lra-console/create-alias.png)

   您現在可以將 Lambda 函數新增至 Greengrass 群組。

## 步驟 3：將 Lambda 函數新增至 Greengrass 群組
<a name="lra-console-add-function"></a>

在此步驟中，您將會將此函數新增到您的群組，以及設定函數的生命週期。

首先，將 Lambda 函數新增至 Greengrass 群組。

1. 在 AWS IoT 主控台導覽窗格的**管理**下，展開 **Greengrass 裝置**，然後選擇**群組 (V1)**。

1. 選擇您要新增 Lambda 函數的 Greengrass 群組。

1. 在群組組態頁面上，選擇 **Lambda 函數**索引標籤。

1. 在**我的 Lambda 函數**區段下，選擇**新增**。

1. 在**新增 Lambda 函數**頁面上，選擇 **Lambda 函數**。選取 **TestLRA**。

1. 選擇 **Lambda 函數版本**。

1. 在 **Lambda 函數組態**區段中，選取**系統使用者和群組**以及 **Lambda 函數容器化**。

    

   接著，設定 Lambda 函數的生命週期。

1. 針對 **Timeout (逾時)**，選擇 **30 seconds (30 秒)**。
**重要**  
使用本機資源 （如本程序所述） 的 Lambda 函數必須在 Greengrass 容器中執行。否則，部署會在您嘗試部署函數時失敗。如需詳細資訊，請參閱[容器化](lambda-group-config.md#lambda-function-containerization)。

1. 在頁面底部，選擇**新增 Lambda 函數**。

## 步驟 4：新增本機資源至 Greengrass 群組
<a name="lra-console-create-resource"></a>

在此步驟中，您將新增本機磁碟區資源至 Greengrass 群組，並授予函數對該項資源的讀取及寫入存取權。本機資源擁有群組等級範圍。您可以授予群組中任何 Lambda 函數存取資源的許可。

1. 在群組組態頁面上，選擇**資源**索引標籤。

1. 在**本機資源**區段下，選擇**新增**。

1. 在**新增本機資源**頁面上，使用下列值。

   1. 針對**資源名稱**，輸入 **testDirectory**。

   1. 針對 **Resource type (資源類型)**，選擇 **Volume (磁碟區)**。

   1. 針對**本機裝置路徑**，輸入 **/src/LRAtest**。此路徑必須存在於主機作業系統。

      本機裝置路徑是核心裝置檔案系統上資源的本機絕對路徑。此位置位於函數執行所在的[容器](lambda-group-config.md#lambda-function-containerization)外。此路徑不能以 `/sys` 做為開頭。

   1. 針對 **Destination path (目的地路徑)**，輸入 **/dest/LRAtest**。此路徑必須存在於主機作業系統。

      目的地路徑是 Lambda 命名空間中資源的絕對路徑。此位置位於函數執行所在的容器內。

   1. 在**系統群組擁有者和檔案存取許可**下，選取**自動新增擁有資源之系統群組的檔案系統許可**。

      **系統群組擁有者和檔案存取許可**選項可讓您將其他檔案存取許可授予 Lambda 程序。如需詳細資訊，請參閱[群組擁有者檔案存取許可](access-local-resources.md#lra-group-owner)。

1. 選擇 **Add resource (新增資源)**。**資源**頁面會顯示新的 testDirectory 資源。

## 步驟 5：將訂閱新增到 Greengrass 群組
<a name="lra-console-add-subscription"></a>

在此步驟中，您將新增兩個訂閱到 Greengrass 群組。這些訂閱可啟用 Lambda 函數與 之間的雙向通訊 AWS IoT。

首先，為 Lambda 函數建立要傳送訊息的訂閱 AWS IoT。

1. 在群組組態頁面上，選擇**訂閱**索引標籤。

1. 選擇**新增**。

1. 在**建立訂閱**頁面上，設定來源和目標，如下所示：

   1. 針對**來源類型**，選擇 **Lambda 函數**，然後選擇 **TestLRA**。

   1. 針對**目標類型**，選擇**服務**，然後選擇 **IoT 雲端**。

   1. 針對**主題篩選條件**，輸入 **LRA/test**，然後選擇**建立訂閱**。

1. **訂閱**頁面會顯示新的訂閱。

    

   接著，設定從中叫用函數的訂閱 AWS IoT。

1. 在**訂閱**頁面上，選擇**新增訂閱**。

1. 在 **Select your source and target (選擇您的來源和目標)** 頁面設定來源和目標，如下所示：

   1. 針對**來源類型**，選擇 **Lambda 函數**，然後選擇 **IoT Cloud**。

   1. 針對**目標類型**，選擇**服務**，然後選擇 **TestLRA**。

   1. 選擇**下一步**。

1. 在 **Filter your data with a topic (使用主題篩選您的資料)** 頁面上，對於 **Topic filter (主題篩選條件)**，輸入 **invoke/LRAFunction**，然後選擇 **Next (下一步)**。

1. 選擇**完成**。**訂閱**頁面會顯示這兩個的訂閱。

## 步驟 6：部署 AWS IoT Greengrass 群組
<a name="lra-console-deploy-group"></a>

在此步驟中，您將部署目前群組定義的版本。

1. 確定 AWS IoT Greengrass 核心正在執行。如果需要，請在您的 Raspberry Pi 終端機執行以下命令。

   1. 檢查精靈是否有在運作：

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      若輸出的 `root` 含有 `/greengrass/ggc/packages/1.11.6/bin/daemon` 項目，則精靈有在運作。
**注意**  
路徑中的版本取決於核心裝置上安裝的核心 AWS IoT Greengrass 軟體版本。

   1. 若要啟動協助程式：

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. 在群組組態頁面上，選擇**部署**。
**注意**  
如果您在沒有容器化的情況下執行 Lambda 函數，並嘗試存取連接的本機資源，則部署會失敗。

1. 如果出現提示，請在 **Lambda 函數**索引標籤的系統 **Lambda 函數**下，選取 **IP 偵測器**，然後選取**編輯**，然後**自動偵測**。

   這可讓裝置自動取得核心的連接資訊，例如 IP 位址、DNS、連接埠編號。建議自動偵測，但 AWS IoT Greengrass 也支援手動指定的端點。只會在第一次部署群組時收到復原方法的提示。
**注意**  
如果出現提示，請授予許可來建立 [Greengrass 服務角色](service-role.md)，並將其與目前 AWS 帳戶 中的 建立關聯 AWS 區域。此角色允許 AWS IoT Greengrass 存取 AWS 服務中的資源。

   此**部署**頁面會顯示部署時間戳記、版本 ID 和狀態。完成時，部署狀態為**已完成**。

   如需故障診斷協助，請參閱[故障診斷 AWS IoT Greengrass](gg-troubleshooting.md)。

## 測試本機資源存取
<a name="lra-console-test-results"></a>

現在您可以驗證本機資源存取是否已正確設定。若要測試，請訂閱 `LRA/test` 主題並發佈到 `invoke/LRAFunction` 主題。如果 Lambda 函數將預期的承載傳送至 ，則測試成功 AWS IoT。

1. 從 AWS IoT 主控台導覽功能表的測試下****，選擇 **MQTT 測試用戶端**。

1. 在**訂閱主題**下，針對**主題篩選條件**，輸入 **LRA/test**。

1. 在**其他資訊**下，針對 **MQTT 承載顯示**，選取將**承載顯示為字串**。

1. 選擇 **Subscribe (訂閱)**。您的 Lambda 函數會發佈至 LRA/測試主題。  
![\[[訂閱] 頁面反白顯示 [訂閱主題]。\]](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/lra-console/test-subscribe.png)

1. 在**發佈至主題**下，在**主題名稱**中輸入 **invoke/LRAFunction**，然後選擇**發佈**以叫用您的 Lambda 函數。如果頁面會顯示該函數的三個承載訊息，則表示測試成功。  
![\[[訂閱] 頁面反白顯示 [invoke/LRA 主題] 和 [Publish to topic (發佈到主題)]，也提供訊息資料的結果。\]](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/lra-console/test-publish.png)

Lambda 函數建立的測試檔案位於 Greengrass 核心裝置上的 `/src/LRAtest`目錄中。雖然 Lambda 函數會寫入 `/dest/LRAtest`目錄中的檔案，但該檔案只會顯示在 Lambda 命名空間中。您無法在一般 Linux 命名空間中看到它。目的地路徑的所有變更都會反映在檔案系統的來源路徑上。

如需故障診斷協助，請參閱[故障診斷 AWS IoT Greengrass](gg-troubleshooting.md)。