Greengrass 组角色 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

终止支持通知:2026 年 10 月 7 日, Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息,请访问迁移自 Amazon IoT Greengrass Version 1

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

Greengrass 组角色

Greengrass 组角色是授权在 Greengrass 核心上运行的代码访问您的 Amazon 资源的 IAM 角色。您可以在 Amazon Identity and Access Management (IAM) 中创建角色并管理权限,并将该角色附加到您的 Greengrass 群组。一个 Greengrass 组有一个组角色。要添加或更改权限,您可以附加其他角色或更改附加到该角色的 IAM policies。

该角色必须定义 Amazon IoT Greengrass 为可信实体。根据您的业务用例,组角色可能包含定义以下内容的 IAM policy:

以下各节介绍如何在或中附加或分离 Greengrass 群组角色。 Amazon Web Services Management Console Amazon CLI

注意

除了授权从 Greengrass 核心进行访问的群组角色外,您还可以分配一个 Greengrass 服务角色以允许代表您访问资源。 Amazon IoT Greengrass Amazon

管理 Greengrass 组角色(控制台)

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

注意

登录到控制台的用户必须具有管理该角色的权限。

 

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

请按照以下步骤查找附加到 Greengrass 组的角色。

  1. 在 Amazon IoT 控制台导航窗格的管理下,展开 Greengrass 设备,然后选择群组 (V1)。

  2. 选择目标组。

  3. 在组配置页面上,选择查看设置

如果某个角色已附加到该组,它会显示在组角色)下。

 

添加或更改 Greengrass 组角色(控制台)

按照以下步骤从您的中选择一个 IAM 角色 Amazon Web Services 账户 以添加到 Greengrass 群组。

组角色具有以下要求:

  • Amazon IoT Greengrass 定义为可信实体。

  • 附加到该角色的权限策略必须向您的 Amazon 资源授予群组中的 Lambda 函数和连接器以及 Greengrass 系统组件所需的权限。

注意

我们建议您在信任策略中加入 aws:SourceArnaws:SourceAccount 全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理

使用 IAM 控制台创建和配置此角色及其权限。有关创建允许访问 Amazon DynamoDB 表的示例角色的步骤,请参阅配置组角色。有关一般步骤,请参阅 IAM 用户指南中的为 Amazon 服务(控制台)创建角色

 

配置角色后,使用 Amazon IoT 控制台将该角色添加到群组。

注意

仅在为组选择角色时才需要执行此过程。更改当前所选组角色的权限后,不需要执行此过程。

  1. 在 Amazon IoT 控制台导航窗格的管理下,展开 Greengrass 设备,然后选择群组 (V1)。

  2. 选择目标组。

  3. 在组配置页面上,选择查看设置

  4. 组角色下,选择添加或更改角色:

    • 要添加角色,请选择关联角色,然后从角色列表中选择您的角色。这些是您 Amazon Web Services 账户 中定义 Amazon IoT Greengrass 为可信实体的角色。

    • 要选择其他角色,请选择编辑角色,然后从角色列表中选择您的角色。

  5. 选择保存

 

移除 Greengrass 组角色(控制台)

请按照以下步骤从 Greengrass 组中移除角色。

  1. 在 Amazon IoT 控制台导航窗格的管理下,展开 Greengrass 设备,然后选择群组 (V1)。

  2. 选择目标组。

  3. 在组配置页面上,选择查看设置

  4. 组角色下,选择取消关联角色

  5. 在确认对话框中,选择取消关联角色。此步骤将从组中移除相应角色,但不真正删除该角色。如果要删除角色,请使用 IAM 控制台。

管理 Greengrass 组角色 (CLI)

您可以将 Amazon CLI 用于以下角色管理任务:

 

获取 Greengrass 组角色 (CLI)

请按照以下步骤查看 Greengrass 组是否具有关联的角色。

  1. 从组列表中获取目标组的 ID。

    aws greengrass list-groups

    以下为 list-groups 响应示例。响应中的每个组都包括一个包含该组 ID 的 Id 属性。

    { "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

    有关更多信息,包括使用 query 选项筛选结果的示例,请参阅获取组 ID

  2. 从输出中复制目标组的 Id

  3. 获取组角色。group-id替换为目标群组的 ID。

    aws greengrass get-associated-role --group-id group-id

    如果某个角色与您的 Greengrass 组关联,将返回以下角色元数据。

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

    如果您的组没有关联的角色,将返回以下错误。

    An error occurred (404) when calling the GetAssociatedRole operation: You need to attach an IAM role to this deployment group.

 

创建 Greengrass 组角色 (CLI)

请按照以下步骤创建角色并将其与 Greengrass 组关联。

要使用 IAM 创建组角色:
  1. 使用允许代入该角色 Amazon IoT Greengrass 的信任策略创建角色。此示例将创建一个名为 MyGreengrassGroupRole 的角色,但您也可以使用其他名称。我们建议您在信任策略中加入 aws:SourceArnaws:SourceAccount 全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理

    Linux, macOS, or Unix
    aws iam create-role --role-name MyGreengrassGroupRole --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id" } } } ] }'
    Windows command prompt
    aws iam create-role --role-name MyGreengrassGroupRole --assume-role-policy-document "{\"Version\":\"2012-10-17\", \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:greengrass:region:account-id:/greengrass/groups/group-id\"},\"StringEquals\":{\"aws:SourceAccount\":\"account-id\"}}}]}"
  2. 从输出中的角色元数据复制角色 ARN。使用该 ARN 将角色与您的组关联。

  3. 将托管策略或内联策略附加到角色以支持您的业务案例。例如,如果用户定义的 Lambda 函数从 Amazon S3 中读取数据,可以将 AmazonS3ReadOnlyAccess 托管策略附加到该角色。

    aws iam attach-role-policy --role-name MyGreengrassGroupRole --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

    如果成功,将不返回任何响应。

 

要将角色与您的 Greengrass 组关联,请执行以下操作:
  1. 从组列表中获取目标组的 ID。

    aws greengrass list-groups

    以下为 list-groups 响应示例。响应中的每个组都包括一个包含该组 ID 的 Id 属性。

    { "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

    有关更多信息,包括使用 query 选项筛选结果的示例,请参阅获取组 ID

  2. 从输出中复制目标组的 Id

  3. 将角色与您的组关联。group-id替换为目标群组的 ID role-arn 和群组角色的 ARN。

    aws greengrass associate-role-to-group --group-id group-id --role-arn role-arn

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

    { "AssociatedAt": "timestamp" }

 

移除 Greengrass 组角色 (CLI)

请按照以下步骤解除组角色与您的 Greengrass 组的关联。

  1. 从组列表中获取目标组的 ID。

    aws greengrass list-groups

    以下为 list-groups 响应示例。响应中的每个组都包括一个包含该组 ID 的 Id 属性。

    { "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

    有关更多信息,包括使用 query 选项筛选结果的示例,请参阅获取组 ID

  2. 从输出中复制目标组的 Id

  3. 解除该角色与您的组的关联。group-id替换为目标群组的 ID。

    aws greengrass disassociate-role-from-group --group-id group-id

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

    { "DisassociatedAt": "timestamp" }
    注意

    如果未使用组角色,可以将其删除。先使用 delete-role-policy 从角色中移除每个托管的策略,然后使用 delete-role 删除该角色。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件

另请参阅