

终止支持通知：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)。

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

# 设置 Amazon EC2 实例
<a name="setup-filter.ec2"></a>

按照本主题中的步骤设置要用作 AWS IoT Greengrass 核心的 Amazon EC2 实例。

**提示**  
或者，要使用脚本来设置您的环境并为您安装 AWS IoT Greengrass Core 软件，请参阅[快速入门：Greengrass 设备安装程序](quick-start.md)。

 尽管您可以使用 Amazon EC2 实例完成本教程，但 AWS IoT Greengrass 最好与物理硬件一起使用。我们建议您尽可能[设置 Raspberry Pi](setup-filter.rpi.md)，而不是使用 Amazon EC2 实例。如果您使用的是 Raspberry Pi，则无需按照本主题中的步骤操作。

 

1. 登录[AWS 管理控制台](https://console.aws.amazon.com/)并使用亚马逊 Linux AMI 启动亚马逊 EC2 实例。有关亚马逊 EC2实例的信息，请参阅《[亚马逊 EC2 入门指南》](https://docs.aws.amazon.com/AWSEC2/latest/GettingStartedGuide/)。

1. 在您的 Amazon EC2 实例运行后，启用端口 8883 以允许传入的 MQTT 通信，以便其他设备可以与核心连接。 AWS IoT Greengrass 

   1. 在 Amazon EC2 控制台的导航窗格中，选择**安全组**。  
![\[突出显示了安全组的导航窗格。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-002.6.1.png)

   1. 选择您刚刚启动的实例的安全组，然后选择**入站规则**选项卡。

   1. 选择**编辑入站规则**。

      要启用端口 8883，您应向安全组添加自定义 TCP 规则。有关更多信息，请参阅 *Amazon EC2 用户指南*中的[向安全组添加规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule)。

   1. 在**编辑入站规则**页面上，选择**添加规则**，输入以下设置，然后选择**保存**。
      + 对于 **Type（类型）**，选择 **Custom TCP Rule（自定义 TCP 规则）**。
      + 对于**端口范围**，输入 **8883**。
      + 对于 **Source（源）**，请选择 **Anywhere（任何位置）**。
      + 对于**描述**，输入 **MQTT Communications**。

       

1. 连接到您的亚马逊 EC2 实例。

   1. 在导航窗格中，选择 **Instances (实例)**，选择您的实例，然后选择 **Connect (连接)**。

   1. 按照 **Connect To Your Instance (连接到您的实例)** 页面上的说明操作，[使用 SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html) 和您的私有密钥文件连接到您的实例。

   您可以对 Windows 使用 [PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)，对 macOS 使用终端。有关更多信息，请参阅《*亚马逊 EC2 用户指南》*中的 “[连接到您的 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)”。

   现在，您可以为设置您的 Amazon EC2 实例了 AWS IoT Greengrass。

1. 连接到 Amazon EC2 实例后，创建`ggc_user`和`ggc_group`账户：

   ```
   sudo adduser --system ggc_user
   sudo groupadd --system ggc_group
   ```
**注意**  
如果 `adduser` 命令在系统上不可用，请使用以下命令。  

   ```
   sudo useradd --system ggc_user
   ```

1. 为了提高安全性，请确保在启动时在 Amazon EC2 实例的操作系统上启用硬链接和软链接（符号链接）保护。
**注意**  
 启用硬链接和软链接保护的步骤因操作系统而异。请参阅您的发行版的文档。

   1.  运行以下命令以检查是否启用了硬链接和软链接保护：

      ```
      sudo sysctl -a | grep fs.protected
      ```

       如果硬链接和软链接设置为 `1`，则您的保护已正确启用。继续执行步骤 6。
**注意**  
软链接以 `fs.protected_symlinks` 表示。

   1. 如果硬链接和软链接未设置为 `1`，请启用这些保护。导航到您的系统配置文件。

      ```
      cd /etc/sysctl.d
      ls
      ```

   1. 使用您最喜欢的文本编辑器（Leafpad、GNU nano 或 vi）将以下两行添加到系统配置文件的末尾。在 Amazon Linux 1 上，这是 `00-defaults.conf` 文件。在 Amazon Linux 2 上，这是 `99-amazon.conf` 文件。您可能需要更改权限（使用 `chmod` 命令）以对此文件进行写入，或使用 `sudo` 命令以根身份进行编辑（例如，`sudo nano 00-defaults.conf`）。

      ```
      fs.protected_hardlinks = 1
      fs.protected_symlinks = 1
      ```

   1. 重启 Amazon EC2 实例。

      ```
      sudo reboot
      ```

      数分钟后，使用 SSH 连接到您的实例，然后运行以下命令来确认更改。

      ```
      sudo sysctl -a | grep fs.protected
      ```

      您应该看到硬链接和软链接都设置为 1。

1. 提取并运行以下脚本以挂载 [Linux 控制组](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/ch01) (cgroups)。这 AWS IoT Greengrass 允许为 Lambda 函数设置内存限制。Cgroup 还需要 AWS IoT Greengrass 在默认的[容器化](lambda-group-config.md#lambda-containerization-considerations)模式下运行。

   ```
   curl https://raw.githubusercontent.com/tianon/cgroupfs-mount/951c38ee8d802330454bdede20d85ec1c0f8d312/cgroupfs-mount > cgroupfs-mount.sh
   chmod +x cgroupfs-mount.sh 
   sudo bash ./cgroupfs-mount.sh
   ```

   您的 Amazon EC2 实例现在应该已准备就绪 AWS IoT Greengrass。

1. <a name="install-java-8-runtime"></a>可选。安装[流管理器](stream-manager.md)所需的 Java 8 运行时。此教程不使用流管理器，但它将使用默认情况下启用流管理器的 **Default Group creation (默认组创建)** 工作流。在部署组之前，使用此命令在核心设备上安装 Java 8 运行时或禁用流管理器。模块 3 中提供了有关禁用流管理器的说明。
   + 对于基于 Debian 的发行版：

     ```
     sudo apt install openjdk-8-jdk
     ```
   + 对于基于 Red Hat 的发行版：

     ```
     sudo yum install java-1.8.0-openjdk
     ```

1. [为确保您拥有所有必需的依赖项，请从示例存储库下载并运行 Greengrass 依赖项检查器。AWS IoT Greengrass](https://github.com/aws-samples/aws-greengrass-samples) GitHub这些命令可在您的 Ama EC2 zon 实例中下载、解压缩并运行依赖项检查器脚本。

   ```
   mkdir greengrass-dependency-checker-GGCv1.11.x
   cd greengrass-dependency-checker-GGCv1.11.x
   wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.11.x.zip
   unzip greengrass-dependency-checker-GGCv1.11.x.zip
   cd greengrass-dependency-checker-GGCv1.11.x
   sudo ./check_ggc_dependencies | more
   ```
**重要**  
<a name="lambda-runtime-prereqs"></a>本教程需要 Python 3.7 运行时才能运行本地 Lambda 函数。启用流管理器后，还需要 Java 8 运行时。如果 `check_ggc_dependencies` 脚本生成提示缺少这些必备运行时的警告，请确保先安装它们，然后再继续。您可以忽略提示缺少其他可选运行时的警告。

您的 Amazon EC2 实例配置已完成。继续[模块 2：安装 AWS IoT Greengrass 核心软件](module2.md)。