AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Greengrass 服务角色

Greengrass 服务角色是一种 AWS Identity and Access Management (IAM) 服务角色,用于向 AWS IoT Greengrass 授权代表您访问 AWS 服务中的资源。这使得 AWS IoT Greengrass 可以执行关键任务,如检索您的 AWS Lambda 函数和管理 AWS IoT 影子。

要允许 AWS IoT Greengrass 访问您的资源,Greengrass 服务角色必须与您的 AWS 账户关联并指定 AWS IoT Greengrass 作为可信实体。该角色必须包含 AWSGreengrassResourceAccessRolePolicy 托管策略或定义等效权限。此策略由 AWS 负责维护,并定义 AWS IoT Greengrass 所需的一组权限。

您可以在 AWS 区域中重复使用同一 Greengrass 服务角色,但必须将其与您在其中使用 AWS IoT Greengrass 的每个 AWS 区域中的账户相关联。如果当前 AWS 账户和区域中不存在该服务角色,则组部署失败。

以下部分介绍了如何在 AWS 管理控制台 或 AWS CLI 中创建和管理 Greengrass 服务角色。

注意

除了授权服务级别访问的服务角色之外,您还可以向 AWS IoT Greengrass 组 分配一个组角色。组角色是一个单独的 IAM 角色,可控制组中的 Greengrass Lambda 函数和连接器访问 AWS 服务的方式。

管理 Greengrass 服务角色(控制台)

AWS IoT 控制台可让您轻松管理 Greengrass 服务角色。例如,当您创建或部署 Greengrass 组时,控制台会检查您的 AWS 账户是否附加到您当前在控制台中选择的 AWS 区域中的 Greengrass 服务角色。如果没有,则控制台可以为您创建和配置服务角色。有关更多信息,请参阅 创建 Greengrass 服务角色(控制台)

您可以使用 AWS IoT 控制台 执行以下角色管理任务:

注意

登录到控制台的用户必须有权查看、创建或更改服务角色。

 

查找您的 Greengrass 服务角色(控制台)

使用以下步骤查找 AWS IoT Greengrass 在当前 AWS 区域中使用的服务角色。

  1. AWS IoT 控制台的导航窗格中,选择 Settings (设置)

  2. 滚动到 Greengrass 服务角色部分以查看您的服务角色及其策略。

    
              Greengrass 服务角色在 AWS IoT 控制台 的“设置”页面上显示。

    如果没有看到服务角色,可以让控制台为您创建或配置一个。有关更多信息,请参阅 创建 Greengrass 服务角色

 

创建 Greengrass 服务角色(控制台)

控制台可以为您创建和配置默认 Greengrass 服务角色。此角色具有以下属性:

属性
名称 Greengrass_ServiceRole
可信任的实体 AWS service: greengrass
策略 AWSGreengrassResourceAccessRolePolicy

当您从 AWS IoT 控制台 创建或部署 Greengrass 组时,控制台会检查 Greengrass 服务角色是否与您当前在控制台中选择的 AWS 区域中的 AWS 账户相关联。如果未关联,控制台会提示您允许 AWS IoT Greengrass 代表您对 AWS 服务进行读写操作。

如果您授予权限,控制台会检查您的 AWS 账户中是否存在名为 Greengrass_ServiceRole 的角色。

  • 如果该角色存在,则控制台会将该服务角色附加到当前 AWS 区域中的 AWS 账户。

  • 如果该角色不存在,则控制台会创建默认 Greengrass 服务角色并将其附加到当前 AWS 区域中的 AWS 账户。

注意

如果要创建不同的服务角色或使用自定义角色策略,您可以使用 IAM 控制台创建或修改该角色。有关更多信息,请参阅 IAM 用户指南 中的创建向 AWS 服务委派权限的角色修改角色。确保该角色授予的权限与 AWSGreengrassResourceAccessRolePolicy 托管策略等效。

 

更改 Greengrass 服务角色(控制台)

使用以下过程选择其他 Greengrass 服务角色以附加到控制台中当前所选 AWS 区域中您的 AWS 账户。

  1. AWS IoT 控制台的导航窗格中,选择 Settings (设置)

  2. Greengrass service role (Greengrass 服务角色) 下,选择 Choose different role (选择不同的角色)

    您的 AWS 账户中将 AWS IoT Greengrass 定义为可信任的实体的 IAM 角色显示在 Choose the Greengrass service role (选择 Greengrass 服务角色) 对话框中。

  3. 选择您的 Greengrass 服务角色。

  4. 选择 Save

注意

要允许控制台为您创建默认 Greengrass 服务角色,请选择 Create role for me (为我创建角色),而不是从列表中选择一个角色。如果您的 AWS 账户中存在名为Greengrass_ServiceRole 的角色,则不会显示 Create role for me (为我创建角色) 链接。

 

分离 Greengrass 服务角色(控制台)

使用以下过程从控制台当前所选 AWS 区域中您的 AWS 账户分离 Greengrass 服务角色。这将撤销 AWS IoT Greengrass 访问当前 AWS 区域中 AWS 服务的权限。

重要

分离服务角色可能会中断有效操作。

  1. AWS IoT 控制台的导航窗格中,选择 Settings (设置)

  2. Greengrass service role (Greengrass 服务角色) 下,选择 Detach (分离)

  3. 在确认对话框中,选择 Detach role (分离角色)

注意

如果您不再需要该角色,则可在 IAM 控制台中将其删除。有关更多信息,请参阅IAM 用户指南 中的删除角色或实例配置文件

其他角色可能允许 AWS IoT Greengrass 访问您的资源。要查找允许 AWS IoT Greengrass 代表您代入权限的所有角色,在 IAM 控制台中,在 Roles (角色) 页面上,在 Trusted entities (可信任的实体) 列中查找包含 AWS service: greengrass (AWS 服务:greengrass) 的角色。

管理 Greengrass 服务角色 (CLI)

在以下过程中,我们假定 AWS CLI 已安装并配置为使用您的 AWS 账户 ID。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的安装 AWS 命令行接口配置 AWS CLI

您可以使用 AWS CLI 执行以下角色管理任务:

 

获取 Greengrass 服务角色 (CLI)

使用以下过程了解 Greengrass 服务角色是否已与您在 AWS 区域中的 AWS 账户关联。

  • 获取服务角色。将 区域 替换为您的 AWS 区域(例如,us-west-2)。

    aws greengrass get-service-role-for-account --region 区域

    如果 Greengrass 服务角色已与您的账户关联,则将返回以下角色元数据。

    { "AssociatedAt": "timestamp", "RoleArn": "arn:aws-cn:iam::account-id:role/path/role-name" }

    如果未返回任何角色元数据,则您必须创建服务角色(如果该角色不存在)并将其与您在 AWS 区域中的 AWS 账户关联。

 

创建 Greengrass 服务角色 (CLI)

使用 IAM 创建服务角色

  1. 使用允许 AWS IoT Greengrass 代入该角色的信任策略创建该角色。此示例创建一个名为 Greengrass_ServiceRole 的角色,但您可以使用其他名称。

    Linux, macOS, or UnixWindows Command Prompt
    Linux, macOS, or Unix
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
    Windows Command Prompt
    aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
  2. 从输出中的角色元数据复制角色 ARN。使用该 ARN 将角色与您的账户关联。

  3. AWSGreengrassResourceAccessRolePolicy 策略附加到该角色。

    aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws-cn:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy

将服务角色与您的 AWS 账户关联

  • 将角色与您的账户关联。将 role-arn 替换为服务角色 ARN,并将 区域 替换为您的 AWS 区域(例如,us-west-2)。

    aws greengrass associate-service-role-to-account --role-arn role-arn --region 区域

    如果成功,将返回以下响应。

    { "AssociatedAt": "timestamp" }

 

删除 Greengrass 服务角色 (CLI)

使用以下过程取消 Greengrass 服务角色与您的 AWS 账户的关联。

  • 取消服务角色与您的账户的关联。将 区域 替换为您的 AWS 区域(例如,us-west-2)。

    aws greengrass disassociate-service-role-from-account --region 区域

    如果成功,将返回以下响应。

    { "DisassociatedAt": "timestamp" }

    注意

    如果您未在任何 AWS 区域中使用该服务角色,则应将其删除。先使用 delete-role-policy 从角色中分离 AWSGreengrassResourceAccessRolePolicy 托管策略,然后使用 delete-role 删除角色。有关更多信息,请参阅IAM 用户指南 中的删除角色或实例配置文件

另请参阅