为边缘设备设置 Amazon Systems Manager - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为边缘设备设置 Amazon Systems Manager

本节介绍账户和系统管理员为启用 Amazon IoT Greengrass 核心设备的配置和管理而执行的设置任务。完成这些任务后,已获得 Amazon Web Services 账户 管理员所授予权限的用户可使用 Amazon Systems Manager 来配置及管理其企业的 Amazon IoT Greengrass 核心设备。

注意
  • macOS 和 Windows 10 不支持适用于 Amazon IoT Greengrass 的 SSM Agent。您不能使用 Systems Manager 功能来管理及配置使用这两种操作系统的边缘设备。

  • Systems Manager 还支持未配置为 Amazon IoT Greengrass 核心设备的边缘设备。要使用 Systems Manager 管理 Amazon IoT 核心设备和非 Amazon 边缘设备,必须使用混合激活来对其进行配置。有关更多信息,请参阅为混合和多云环境设置 Systems Manager

  • 要将 Session Manager 和 Microsoft 应用程序补丁与您的边缘设备搭配使用,必须启用高级实例套餐。有关更多信息,请参阅打开高级实例套餐

开始前的准备工作

确认您的边缘设备满足以下要求。

  • 边缘设备必须满足将其配置为 Amazon IoT Greengrass 核心设备的要求。有关更多信息,请参阅 Amazon IoT Greengrass 开发人员指南中的设置 Amazon IoT Greengrass Version 2 核心设备

  • 边缘设备必须与 Amazon Systems Manager Agent (SSM Agent) 兼容。有关更多信息,请参阅Systems Manager 支持的操作系统

  • 边缘设备必须能够与云中的 Systems Manager 服务通信。Systems Manager 不支持已断开连接的边缘设备。

关于设置边缘设备

为 Systems Manager 设置 Amazon IoT Greengrass 设备涉及以下过程。

注意

有关从边缘设备中卸载 SSM Agent 的信息,请参阅《Amazon IoT Greengrass Version 2 开发人员指南》中的卸载 Amazon Systems Manager Agent

步骤 1:为边缘设备创建 IAM 服务角色

Amazon IoT Greengrass 核心设备需要 Amazon Identity and Access Management (IAM) 服务角色才能与 Amazon Systems Manager 通信。此角色向 Amazon Security Token Service (Amazon STS) AssumeRole 授予对 Systems Manager 服务的信任。您只需为每个 Amazon Web Services 账户 创建此服务角色一次。在为 Amazon IoT Greengrass 设备配置及部署 SSM Agent 组件时,您需为 RegistrationRole 参数指定此角色。如果在混合和多云环境中设置非 EC2 节点时已创建此角色,则可以跳过此步骤。

注意

贵公司或企业中如果有用户要在边缘设备上使用 Systems Manager,则必须在 IAM 中为其授予调用 Systems Manager API 的权限。

S3 存储桶策略要求

如果出现以下任一情况,您必须在完成此过程之前为 Amazon Simple Storage Service (Amazon S3) 存储桶创建自定义 IAM 权限策略:

  • 情况 1:您通过一个 VPC 端点以私有方式将您的 VPC 连接到受支持的 Amazon Web Services,以及由 Amazon PrivateLink 提供支持的 VPC 端点服务。

  • 情况 2:您打算使用在 Systems Manager 操作期间创建的 S3 存储桶,如将 Run Command 命令或 Session Manager 会话的输出存储到 S3 存储桶中。在继续之前,请按照为实例配置文件创建自定义 S3 存储桶策略中的步骤进行操作。该主题中有关 S3 存储桶策略的信息也适用于服务角色。

    注意

    如果您的设备受防火墙保护且您计划使用 Patch Manager,则防火墙必须允许对补丁基准端点 arn:aws:s3:::patch-baseline-snapshot-region/* 进行访问。

    region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关支持的 region 值的列表,请参阅《Amazon Web Services 一般参考》 中的 Systems Manager service endpointsRegion 列。

Amazon CLI
为 Amazon IoT Greengrass 环境创建 IAM 服务角色 (Amazon CLI)
  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本

  2. 在本地计算机上使用以下信任策略创建一个文本文件,文件名称类似于 SSMService-Trust.json。确保使用 .json 文件扩展名保存该文件。

    注意

    记录下名称。您需在将 SSM Agent 部署到 Amazon IoT Greengrass 核心设备时指定此名称。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  3. 打开 Amazon CLI,在创建该 JSON 文件的目录下,运行 create-role 命令以创建服务角色。将每个示例资源占位符替换为您自己的信息。

    Linux 和 macOS

    aws iam create-role \ --role-name SSMServiceRole \ --assume-role-policy-document file://SSMService-Trust.json

    Windows

    aws iam create-role ^ --role-name SSMServiceRole ^ --assume-role-policy-document file://SSMService-Trust.json
  4. 按如下方式运行 attach-role-policy 命令,以允许您刚创建的服务角色创建会话令牌。该会话令牌向您的边缘设备授予使用 Systems Manager 运行命令的权限。

    注意

    您为边缘设备的服务配置文件添加的策略与用于为 Amazon Elastic Compute Cloud (Amazon EC2) 实例创建实例配置文件的策略相同。有关以下命令中使用的 IAM policy 的更多信息,请参阅为 Systems Manager 配置实例权限

    (必需)运行以下命令以允许边缘设备使用 Amazon Systems Manager 服务核心功能。

    Linux 和 macOS

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    Windows

    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    如果为服务角色创建了自定义 S3 存储桶策略,请运行以下命令,以允许 Amazon Systems Manager Agent (SSM Agent) 访问在该策略中指定的存储桶。将 account_IDmy_bucket_policy_name 替换为您的 Amazon Web Services 账户 ID 和存储桶名称。

    Linux 和 macOS

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::account_ID:policy/my_bucket_policy_name

    Windows

    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::account_id:policy/my_bucket_policy_name

    (可选)运行以下命令以允许 SSM Agent 代表您访问 Amazon Directory Service,以处理边缘设备加入域的请求。只有在将边缘设备加入 Microsoft AD 目录时,服务角色才需要使用此策略。

    Linux 和 macOS

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    Windows

    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (可选)运行以下命令以允许 CloudWatch 代理在边缘设备上运行。通过使用此命令,可以读取设备上的信息并将其写入 CloudWatch。仅当您要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时,服务角色才需要使用此策略。

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Tools for PowerShell
为 Amazon IoT Greengrass 环境创建 IAM 服务角色 (Amazon Tools for Windows PowerShell)
  1. 如果您尚未安装和配置 Amazon Tools for PowerShell(适用于 Windows PowerShell 的工具),请执行这些操作。

    有关信息,请参阅安装 Amazon Tools for PowerShell

  2. 在本地计算机上使用以下信任策略创建一个文本文件,文件名称类似于 SSMService-Trust.json。确保使用 .json 文件扩展名保存该文件。

    注意

    记录下名称。您需在将 SSM Agent 部署到 Amazon IoT Greengrass 核心设备时指定此名称。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  3. 在管理模式下打开 PowerShell,在创建此 JSON 文件的目录中,按如下方式运行 New-IAMRole 以创建服务角色。

    New-IAMRole ` -RoleName SSMServiceRole ` -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
  4. 按如下方式使用 Register-IAMRolePolicy,以允许您创建的服务角色创建会话令牌。该会话令牌向您的边缘设备授予使用 Systems Manager 运行命令的权限。

    注意

    您为 Amazon IoT Greengrass 环境中边缘设备的服务角色添加的策略与用于为 EC2 实例创建实例配置文件的策略相同。有关以下命令中使用的 Amazon 策略的更多信息,请参阅为 Systems Manager 配置实例权限

    (必需)运行以下命令以允许边缘设备使用 Amazon Systems Manager 服务核心功能。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    如果为服务角色创建了自定义 S3 存储桶策略,请运行以下命令,以允许 SSM Agent 访问在该策略中指定的存储桶。将 account_IDmy_bucket_policy_name 替换为您的 Amazon Web Services 账户 ID 和存储桶名称。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::account_ID:policy/my_bucket_policy_name

    (可选)运行以下命令以允许 SSM Agent 代表您访问 Amazon Directory Service,以处理边缘设备加入域的请求。只有在将边缘设备加入 Microsoft AD 目录时,服务角色才需要使用此策略。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (可选)运行以下命令以允许 CloudWatch 代理在边缘设备上运行。通过使用此命令,可以读取设备上的信息并将其写入 CloudWatch。仅当您要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时,服务角色才需要使用此策略。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

步骤 2:设置 Amazon IoT Greengrass

将边缘设备设置为 Amazon IoT Greengrass 核心设备。设置过程包括确认支持的操作系统和系统要求,以及安装和配置设备上的 Amazon IoT Greengrass Core 软件。有关更多信息,请参阅 Amazon IoT Greengrass 开发人员指南中的设置 Amazon IoT Greengrass Version 2 核心设备

步骤 3:更新 Amazon IoT Greengrass 令牌交换角色并在边缘设备上安装 SSM Agent

在为 Systems Manager 设置和配置 Amazon IoT Greengrass 核心设备的最后一步中,您需要更新 Amazon IoT Greengrass Amazon Identity and Access Management (IAM) 设备服务角色(也称为令牌交换角色),以及将 Amazon Systems Manager Agent (SSM Agent) 部署到 Amazon IoT Greengrass 设备。有关这些过程的信息,请参阅《Amazon IoT Greengrass Version 2 Developer Guide》中的 Install the Amazon Systems Manager Agent

将 SSM Agent 部署到设备后,Amazon IoT Greengrass 会自动向 Systems Manager 注册您的设备。除此之外,无需进行其他注册。您可以开始使用 Systems Manager 功能来访问、管理和配置 Amazon IoT Greengrass 设备。

注意

边缘设备必须能够与云中的 Systems Manager 服务通信。Systems Manager 不支持已断开连接的边缘设备。