可选:为 IDT 配置你的 Docker 容器 Amazon IoT Greengrass - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

可选:为 IDT 配置你的 Docker 容器 Amazon IoT Greengrass

Amazon IoT Greengrass 提供了 Docker 镜像和 Dockerfile,可以更轻松地在 Docker 容器中运行 Amazon IoT Greengrass 核心软件。设置 Amazon IoT Greengrass 容器后,您可以运行 IDT 测试。目前,只有 x86_64 Docker 架构支持运行适用于 Amazon IoT Greengrass的 IDT。

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

设置 Docker 容器以运行 IDT 测试的过程取决于您使用的是提供的 Docker 镜像还是使用的 Dockerfile。 Amazon IoT Greengrass

  • 使用 Docker 映像。Docker 镜像安装了 Amazon IoT Greengrass 核心软件和依赖项。

  • 使用 Dockerfile。Dockerfile 包含可用于构建自定义 Amazon IoT Greengrass 容器镜像的源代码。可对镜像进行修改以在不同的平台架构上运行或减少镜像的大小。

    注意

    Amazon IoT Greengrass 不为 Amazon IoT Greengrass 核心软件版本 1.11.1 提供 Dockerfile 或 Docker 镜像。要对您自己的自定义容器映像运行 IDT 测试,您的映像必须包含在提供的 Dockerfile 中定义的依赖关系。 Amazon IoT Greengrass

在 Docker 容器 Amazon IoT Greengrass 中运行时,以下功能不可用:

  • Greengrass 容器模式下运行的连接器。要在 Docker 容器中运行连接器,该连接器必须在无容器模式下运行。要查找支持无容器模式的连接器,请参阅Amazon提供的 Greengrass 连接器。其中一些连接器具有隔离模式参数,您必须将此参数设为无容器

  • 本地设备和卷资源。在 Docker 容器中运行的用户定义 Lambda 函数必须直接访问核心上的设备和卷。

配置由提供的 Docker 镜像 Amazon IoT Greengrass

按照以下步骤配置 Amazon IoT Greengrass Docker 镜像以运行 IDT 测试。

先决条件

在开始本教程之前,必须执行以下操作。

  • 您必须根据您选择的 Amazon Command Line Interface (Amazon CLI) 版本在主机上安装以下软件和版本。

    Amazon CLI version 2
    • Docker 版本 18.09 或更高版本。早期版本也可能有效,但我们建议使用 18.09 或更高版本。

    • Amazon CLI 版本 2.0.0 或更高版本。

      注意

      要在 Windows 计算机上升级到更高 Amazon CLI 版本 2,必须重复 MSI 安装过程。

    Amazon CLI version 1
    • Docker 版本 18.09 或更高版本。早期版本也可能有效,但我们建议使用 18.09 或更高版本。

    • Python 版本 3.6 或更高版本。

    • pip 版本 18.1 或更高版本。

    • Amazon CLI 版本 1.17.10 或更高版本

      • 要安装 Amazon CLI 版本 1,请参阅安装 Amazon CLI 版本 1

      • 要配置 Amazon CLI,请参阅配置 Amazon CLI

      • 要升级到版本 1 的最新 Amazon CLI 版本,请运行以下命令。

        pip install awscli --upgrade --user
      注意

      如果你在 Windows 上使用 MSI 安装 Amazon CLI 版本 1,请注意以下几点:

      • 如果 Amazon CLI 版本 1 安装无法安装 botocore,请尝试使用 Pyth on 和 pip 安装。

      • 要升级到更高 Amazon CLI 版本 1,必须重复 MSI 安装过程。

  • 要访问 Amazon Elastic Container Registry (Amazon ECR) 资源,您必须授予以下权限。

    • Amazon ECR 要求用户通过 Amazon Identity and Access Management (IAM) 策略授予ecr:GetAuthorizationToken权限,然后才能向注册表进行身份验证以及从 Amazon ECR 存储库推送或拉取映像。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的 Amazon ECR 存储库策略示例访问一个 Amazon ECR 存储库

 

  1. 下载 Docker 映像并配置容器。您可以从 Docker HubAmazon Elastic Container Registry (Amazon ECR) 下载预构建的映像并在 Windows、macOS 和 Linux (x86_64) 平台上运行它。

    要从 Amazon ECR 下载 Docker 映像,请完成 第 1 步:从 Amazon ECR 获取 Amazon IoT Greengrass 容器镜像 中的所有步骤。然后,返回到本主题以继续配置。

  2. 仅限 Linux 用户:请确保运行 IDT 的用户有权运行 Docker 命令。有关更多信息,请参阅 Docker 文档中的以非根用户身份管理 Docker

  3. 要运行 Amazon 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> 装载 Config 文件

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

      示例:proc/config.gz 装载 Config 文件

      -v /proc/config.gz:/proc/config.gz \
    • <image-repository><tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon 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>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon 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>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon IoT Greengrass Docker 镜像列表,请运行以下命令:

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

    使用 IDT 进行测试时,请勿包含用于运行图像以供一般 Amazon IoT Greengrass 用途的--entrypoint /greengrass-entrypoint.sh \参数。

  4. 下一步:配置您的 Amazon 凭据和device.json文件

配置由提供的 dockerfile Amazon IoT Greengrass

按照以下步骤配置从 Dockerf Amazon IoT Greengrass ile 构建的 Docker 镜像以运行 IDT 测试。

  1. Amazon IoT Greengrass Docker 软件,将 Dockerfile 包下载到您的主机并将其解压缩。

  2. 打开 README.md。接下来的三个步骤将参考此文件中的部分。

  3. 请确保您满足先决条件部分中的要求。

  4. 仅限 Linux 用户:完成启用符号链接和硬链接保护以及启用 IPv4 网络转发步骤

  5. 要构建 Docker 映像,请完成步骤 1。构建 Amazon IoT Greengrass Docker 镜像。然后,返回到本主题以继续配置。

  6. 要运行 Amazon 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> 装载 Config 文件

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

      示例:proc/config.gz 装载 Config 文件

      -v /proc/config.gz:/proc/config.gz \
    • <image-repository><tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon 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>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon 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>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 Amazon IoT Greengrass Core 软件

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

      要获取 Amazon IoT Greengrass Docker 镜像列表,请运行以下命令:

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

    使用 IDT 进行测试时,请勿包含用于运行图像以供一般 Amazon IoT Greengrass 用途的--entrypoint /greengrass-entrypoint.sh \参数。

  7. 下一步:配置您的 Amazon 凭据和device.json文件

对适用于 IDT 的 Docker 容器设置进行故障排除 Amazon IoT Greengrass

使用以下信息来帮助解决运行适用于 IDT 的 Docker 容器进行测试时遇到的问题。 Amazon IoT Greengrass

警告:加载配置时出错 <user>//.docker file:/home/user/.docker/config.json - stat /home /config.json:权限被拒绝

如果在 Linux 上运行 docker 命令时出现此错误,请运行以下命令。将以下命令替换<user>为运行 IDT 的用户。

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