

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

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

# Greengrass 组角色
<a name="group-role"></a>

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

该角色必须定义 AWS IoT Greengrass 为可信实体。根据您的业务用例，组角色可能包含定义以下内容的 IAM policy：
+ 用户定义的 [Lambda 函数](lambda-functions.md)访问服务的权限 AWS 。
+ [连接](connectors.md)器访问 AWS 服务的权限。
+ [直播管理员有权将直播](stream-manager.md)导出到 Kinesis Data Streams AWS IoT Analytics 和 Kinesis Data Streams。
+ 允许 [CloudWatch 日志记录](greengrass-logs-overview.md) 的权限。

以下各节介绍如何在或中附加或分离 Greengrass 群组角色。 AWS 管理控制台 AWS CLI
+ [管理组角色（控制台）](#manage-group-role-console)
+ [管理组角色 (CLI)](#manage-group-role-cli)

**注意**  
除了授权从 Greengrass 核心进行访问的群组角色外，您还可以分配一个 Greengrass 服务角色以允许代表您访问[资源](service-role.md)。 AWS IoT Greengrass AWS 

## 管理 Greengrass 组角色（控制台）
<a name="manage-group-role-console"></a>

您可以使用 AWS IoT 控制台执行以下角色管理任务：
+ [查找您的 Greengrass 组角色](#get-group-role-console)
+ [添加或更改 Greengrass 组角色](#add-or-change-group-role-console)
+ [移除 Greengrass 组角色](#remove-group-role-console)

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

 

### 查找您的 Greengrass 组角色（控制台）
<a name="get-group-role-console"></a>

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

1. <a name="console-gg-groups"></a>**在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. <a name="group-choose-target-group"></a>选择目标组。

1. <a name="shared-group-settings"></a>在组配置页面上，选择**查看设置**。

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

 

### 添加或更改 Greengrass 组角色（控制台）
<a name="add-or-change-group-role-console"></a>

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

组角色具有以下要求：
+ AWS IoT Greengrass 定义为可信实体。
+ 附加到该角色的权限策略必须向您的 AWS 资源授予群组中的 Lambda 函数和连接器以及 Greengrass 系统组件所需的权限。

**注意**  
我们建议您在信任策略中加入 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键，以帮助防止出现*混淆代理人*安全问题。条件上下文键可限制访问权限，仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息，请参阅 [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)。

使用 IAM 控制台创建和配置此角色及其权限。有关创建允许访问 Amazon DynamoDB 表的示例角色的步骤，请参阅[配置组角色](config-iam-roles.md)。有关一般步骤，请参阅 *IAM 用户指南*中的[为 AWS 服务（控制台）创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)。

 

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

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

1. <a name="console-gg-groups"></a>**在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. <a name="group-choose-target-group"></a>选择目标组。

1. <a name="shared-group-settings"></a>在组配置页面上，选择**查看设置**。

1. 在**组角色**下，选择添加或更改角色：
   + 要添加角色，请选择**关联角色**，然后从角色列表中选择您的角色。这些是您 AWS 账户 中定义 AWS IoT Greengrass 为可信实体的角色。
   + 要选择其他角色，请选择**编辑角色**，然后从角色列表中选择您的角色。

1. 选择**保存**。

 

### 移除 Greengrass 组角色（控制台）
<a name="remove-group-role-console"></a>

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

1. <a name="console-gg-groups"></a>**在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. <a name="group-choose-target-group"></a>选择目标组。

1. <a name="shared-group-settings"></a>在组配置页面上，选择**查看设置**。

1. 在**组角色**下，选择**取消关联角色**。

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

## 管理 Greengrass 组角色 (CLI)
<a name="manage-group-role-cli"></a>

您可以将 AWS CLI 用于以下角色管理任务：
+ [获取 Greengrass 组角色](#get-group-role)
+ [创建 Greengrass 组角色](#create-group-role)
+ [移除 Greengrass 组角色](#remove-group-role)

 

### 获取 Greengrass 组角色 (CLI)
<a name="get-group-role"></a>

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

1. <a name="cli-list-groups"></a>从组列表中获取目标组的 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](deployments.md#api-get-group-id)。

1. <a name="cli-list-groups-copy-id"></a>从输出中复制目标组的 `Id`。

1. 获取组角色。*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)
<a name="create-group-role"></a>

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

**要使用 IAM 创建组角色：**

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

------
#### [ 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\"}}}]}"
   ```

------

1. 从输出中的角色元数据复制角色 ARN。使用该 ARN 将角色与您的组关联。

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

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

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

 

**要将角色与您的 Greengrass 组关联，请执行以下操作：**

1. <a name="cli-list-groups"></a>从组列表中获取目标组的 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](deployments.md#api-get-group-id)。

1. <a name="cli-list-groups-copy-id"></a>从输出中复制目标组的 `Id`。

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

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

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

   ```
   {
     "AssociatedAt": "timestamp"
   }
   ```

 

### 移除 Greengrass 组角色 (CLI)
<a name="remove-group-role"></a>

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

1. <a name="cli-list-groups"></a>从组列表中获取目标组的 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](deployments.md#api-get-group-id)。

1. <a name="cli-list-groups-copy-id"></a>从输出中复制目标组的 `Id`。

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

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

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

   ```
   {
     "DisassociatedAt": "timestamp"
   }
   ```
**注意**  
如果未使用组角色，可以将其删除。先使用 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html) 从角色中移除每个托管的策略，然后使用 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html) 删除该角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除角色或实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。

## 另请参阅
<a name="group-role-see-also"></a>
+ *IAM 用户指南*中的相关主题
  + [创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)
  + [修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)
  + [添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)
  + [删除角色或实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)
+ AWS IoT Greengrass 命令*参考中的AWS CLI 命令*
  + [list-groups](https://docs.aws.amazon.com/cli/latest/reference/greengrass/list-groups.html)
  + [associate-role-to-group](https://docs.aws.amazon.com/cli/latest/reference/greengrass/associate-role-to-group.html)
  + [disassociate-role-from-group](https://docs.aws.amazon.com/cli/latest/reference/greengrass/disassociate-role-from-group.html)
  + [get-associated-role](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-associated-role.html)
+ *AWS CLI 命令参考*中的 IAM 命令
  + [attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)
  + [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)
  + [delete-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html)
  + [delete-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html)