步骤 2:为边缘设备创建 IAM 服务角色 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

步骤 2:为边缘设备创建 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 参数指定此角色。如果您在混合环境中设置本地服务器或虚拟机时已创建此角色,则可以跳过本步骤。

注意

贵公司或企业中如果有用户要在边缘设备上使用 Systems Manager,则必须在 IAM 中为其授予调用 Systems Manager API 的权限。有关更多信息,请参阅为 Systems Manager 创建非管理员 IAM 用户和组

S3 存储桶策略要求

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

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

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

    注意

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

    region 表示 Amazon Systems Manager 支持的 Amazon Web Services 区域 的标识符,例如 us-east-2 对应美国东部(俄亥俄)区域。有关受支持的 region 值的列表,请参阅亚马逊云科技一般参考中的 Systems Manager 服务终端节点中的 Region(区域)列。

Amazon CLI

为 Amazon IoT Greengrass 环境创建 IAM 服务角色 (Amazon CLI)

  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具.

  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) 实例创建实例配置文件的策略相同。有关以下命令中使用的 Amazon 策略的更多信息,请参阅为 Systems Manager 创建 IAM 实例配置文件

    (必需)运行以下命令以允许边缘设备使用 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(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具.

  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 创建 IAM 实例配置文件

    (必需)运行以下命令以允许边缘设备使用 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

继续浏览 步骤 3:设置 Amazon IoT Greengrass