可選:為 IDT 設定您的 Docker 容器AWS IoT 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,這會新增重要的新功能,並支援其他平台

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

可選:為 IDT 設定您的 Docker 容器AWS IoT Greengrass

AWS IoT Greengrass 提供 Docker 映像和 Dockerfile 映像,以便更輕鬆地執行 Docker 容器中的 AWS IoT Greengrass 核心軟體。設定 AWS IoT Greengrass 容器之後,您可以執行 IDT 測試。目前,僅支援 x86_64 Docker 架構來執行 IDT for AWS IoT Greengrass。

此功能需要 IDT v2.3.0 或更新版本。

設定 Docker 容器以執行 IDT 測試的處理程序取決於您使用 AWS IoT Greengrass 提供的 Docker 映像還是 Dockerfile。

  • 使用 Docker 映像。Docker 映像已安裝 AWS IoT Greengrass 核心軟體和依存項目。

  • 使用 Dockerfile。Dockerfile 包含可用來建立自訂 AWS IoT Greengrass 容器映像的原始程式碼。您可以修改映像,以在不同平台架構上執行或減少映像大小。

    注意

    AWS IoT Greengrass不提供碼頭文件或 Docker 圖像AWS IoT Greengrass核心軟體 1.11.1 版。若要在您自己的自訂容器映像上執行 IDT 測試,您的映像必須包含 AWS IoT Greengrass 提供之 Dockerfile 中定義的依存項目。

當您在 Docker 容器中執行 AWS IoT Greengrass 時,無法使用下列功能:

  • 連接器在中執行Greengrass 容器模式。若要在 Docker 容器中執行連接器,連接器必須以 No container (無容器) 模式執行。若要尋找支援 No container (無容器) 模式的連接器,請參閱 AWS-提供 Greengrass 連接器。其中一些連接器具有隔離模式參數,您必須設定為 No container (無容器)

  • 本機裝置和磁碟區資源。在 Docker 容器中執行的使用者定義 Lambda 函數必須直接存取核心上的裝置和磁帶區。

設定 AWS IoT Greengrass 提供的 Docker 映像

請依照下列步驟來設定 AWS IoT Greengrass Docker 映像以執行 IDT 測試。

先決條件

開始本教學課程之前,您必須執行以下作業。

  • 您必須在主機電腦上安裝以下軟體和版本,並根據AWS Command Line Interface(AWS CLI)版本。

    AWS CLI version 2
    • 碼頭工人18.09 版或更新版本。早期版本或許也可運作,但我們建議使用 18.09 或更新版本。

    • AWS CLI2.0.0 或更新版本。

      注意

      要升級到更高版本AWS CLI第 2 版,您必須重複MSI 安裝程序。

    AWS CLI version 1
    • 碼頭工人18.09 版或更新版本。早期版本或許也可運作,但我們建議使用 18.09 或更新版本。

    • 蟒蛇3.6 或更新版本。

    • pip 版本 18.1 或更新版本。

    • AWS CLI1.17.10 版或更新版本

      • 安裝AWS CLI第 1 版,請參安裝AWS CLI第 1 版

      • 若要設定AWS CLI,請參設定AWS CLI

      • 若要升級到最新版本AWS CLI第 1 版,執行以下命令。

        pip install awscli --upgrade --user
      注意

      如果您使用MSI 安裝的AWS CLI版本 1,請注意以下事項:

      • 如果AWS CLI第 1 版安裝程式無法安裝 botocore,請嘗試使用Python 和 pip 安裝

      • 要升級到更高版本AWS CLI第 1 版,您必須重複 MSI 安裝程序。

  • 若要訪問 Amazon Elastic Container Registry (Amazon ECR) 資源,您必須授予以下許可。

    • 亞馬遜 ECR 要求用户授予ecr:GetAuthorizationToken權限通過AWS Identity and Access Management(IAM) 政策,然後才能對登錄檔進行身分驗證,並從 Amazon ECR 儲存庫推送或提取映像。如需詳細資訊,請參閱「」Amazon ECR 儲存庫政策範例存取一個 Amazon ECR 儲存庫中的Amazon Elastic Container Registry 使用指南

 

  1. 下載 Docker 映像並設定容器。您可以從下載預先建置的映像Docker Hub或者Amazon Elastic Container Registry(Amazon ECR) 並在 Windows、macOS、Linux (x86_64) 平台上執行。

    若要從 Amazon ECR 下載 Docker 映像,請完成步驟 1:從 Amazon ECR 提取AWS IoT Greengrass容器映像。然後,返回此主題以繼續進行設定。

  2. 僅限 Linux 使用者:確定運行 IDT 的使用者擁有執行 Docker 命令的許可。如需詳細資訊,請參閱 Docker 文件中的以非根使用者身分管理 Docker

  3. 若要執行 AWS IoT Greengrass 容器,請為您的作業系統使用命令:

    Linux
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ -v <host-path-to-kernel-config-file>:<container-path> \ <image-repository>:<tag>
    • <host-path-to-kernel-config-file> 替換為主機上核心組態檔案的路徑,並將 <container-path> 替換為容器中裝載磁碟區的路徑。

      主機上的核心組態圖通常位於 /proc/config.gz/boot/config-<kernel-release-date>。您可以執行 uname -r 以尋找 <kernel-release-date> 值。

      範例:若要從裝載組態檔/boot/config-<kernel-release-date>

      -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \

      範例:若要從裝載組態檔proc/config.gz

      -v /proc/config.gz:/proc/config.gz \
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行以下命令。

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    macOS
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行下列命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    Windows
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行下列命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    重要

    使用 IDT 測試時,請勿包含用於執行映像以供一般 AWS IoT Greengrass 用途的 --entrypoint /greengrass-entrypoint.sh \ 引數。

  4. 後續步驟:設定AWS登入資料和device.json文件

設定 AWS IoT Greengrass 提供的 Dockerfile

請依照下列步驟來設定從 AWS IoT Greengrass Dockerfile 建置的 Docker 映像以執行 IDT 測試。

  1. AWS IoT Greengrass 泊塢視窗軟體 中,將 Dockerfile 套件下載到您的主機電腦,並將其解壓縮。

  2. 打開 README.md. 接下來的三個步驟,請參閱此檔案中的章節。

  3. 請確定您符合先決條件一節中的需求。

  4. 僅限 Linux 使用者:完成啟用符號鏈接和硬鏈路保護啟用 IPv4 網路轉發步驟。

  5. 若要建置 Docker 映像,請完成步驟 1. 建置AWS IoT GreengrassDocker 影像。然後,返回此主題以繼續進行設定。

  6. 若要執行 AWS IoT Greengrass 容器,請為您的作業系統使用命令:

    Linux
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ -v <host-path-to-kernel-config-file>:<container-path> \ <image-repository>:<tag>
    • <host-path-to-kernel-config-file> 替換為主機上核心組態檔案的路徑,並將 <container-path> 替換為容器中裝載磁碟區的路徑。

      主機上的核心組態圖通常位於 /proc/config.gz/boot/config-<kernel-release-date>。您可以執行 uname -r 以尋找 <kernel-release-date> 值。

      範例:若要從裝載組態檔/boot/config-<kernel-release-date>

      -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \

      範例:若要從裝載組態檔proc/config.gz

      -v /proc/config.gz:/proc/config.gz \
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行以下命令。

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    macOS
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行下列命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    Windows
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 將命令中的 <image-repository>:<tag> 替換為儲存庫的名稱和目標映像的標籤。

      範例:若要指出最新版本AWS IoT Greengrass核心軟體

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      若要取得 AWS IoT Greengrass Docker 映像的清單,請執行下列命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    重要

    使用 IDT 測試時,請勿包含用於執行映像以供一般 AWS IoT Greengrass 用途的 --entrypoint /greengrass-entrypoint.sh \ 引數。

  7. 後續步驟:設定AWS登入資料和device.json文件

為 IDT for AWS IoT Greengrass 疑難排解您的 Docker 容器

使用以下資訊,幫助針對 IDT for AWS IoT Greengrass 測試執行 Docker 容器發生的問題進行疑難排解。

警告:載入 config file: /home/user/.docker/config.json-stat /home/ <user>/.docker/config.json 時發生錯誤:權限遭拒

如果在 Linux 上執行 docker 命令時發生錯誤,請執行下列命令。使用執行 IDT 的使用者取代下列命令中的 <user>

sudo chown <user>:<user> /home/<user>/.docker -R sudo chmod g+rwx /home/<user>/.docker -R