AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Greengrass 服务角色 AWS Identity and Access Management 是一个 (IAM) 服务角色,它 AWS IoT Greengrass 授权代表您访问服务中的资源。 AWS 这使得可以执行基本任务,例如检索 AWS Lambda 函数和管理 AWS IoT 阴影。 AWS IoT Greengrass
AWS IoT Greengrass 要允许访问您的资源,Greengrass 服务角色必须与 AWS 账户 您的关联并 AWS IoT Greengrass 指定为可信实体。该角色必须包含 AWSGreengrassResourceAccessRolePolicy
您可以在 s AWS 区域之间重复使用相同的 Greengrass 服务角色,但您必须在每个使用位置将其与您的账户相关联。 AWS 区域 AWS IoT Greengrass如果当前 AWS 账户 和区域中不存在服务角色,则群组部署将失败。
以下各节介绍如何在或中创建和管理 Greengrass 服务角色。 AWS Management Console AWS CLI
注意
除了授权服务级别访问权限的服务角色外,您还可以为群组分配群组角色。 AWS IoT Greengrass 群组角色是一个单独的 IAM 角色,用于控制 Greengrass Lambda 函数和群组中的连接器如何访问服务。 AWS
管理 Greengrass 服务角色(控制台)
通过 AWS IoT 控制台,您可以轻松管理您的 Greengrass 服务角色。例如,当您创建或部署 Greengrass 群组时,控制台会检查您 AWS 账户 是否已连接到当前在控制台中选择的 Greengrass 服务角色。 AWS 区域 如果没有,则控制台可以为您创建和配置服务角色。有关更多信息,请参阅 创建 Greengrass 服务角色(控制台)。
您可以使用 AWS IoT 控制台执行以下角色管理任务:
注意
登录到控制台的用户必须有权查看、创建或更改服务角色。
查找您的 Greengrass 服务角色(控制台)
使用以下步骤查找当前 AWS IoT Greengrass 正在使用的服务角色 AWS 区域。
-
从AWS IoT 控制台
导航窗格中,选择设置。 -
滚动到 Greengrass 服务角色部分以查看您的服务角色及其策略。
如果没有看到服务角色,可以让控制台为您创建或配置一个。有关更多信息,请参阅 创建 Greengrass 服务角色。
创建 Greengrass 服务角色(控制台)
控制台可以为您创建和配置默认 Greengrass 服务角色。此角色具有以下属性:
属性 | 值 |
---|---|
名称 | Greengrass_ServiceRole |
可信任的实体 | AWS service: greengrass |
策略 | AWSGreengrassResourceAccessRolePolicy |
注意
如果 Greengrass 设备安装程序创建服务角色,则角色名称为 GreengrassServiceRole_
。random-string
当您从 AWS IoT 控制台创建或部署 Greengrass 群组时,控制台会检查控制台中当前选择的 Greengrass 服务角色是否与您的关联。 AWS 账户 AWS 区域 否则,控制台会提示您 AWS IoT Greengrass 允许代表您读取和写入 AWS 服务。
如果您授予权限,控制台会检查您的 AWS 账户中是否存在名为 Greengrass_ServiceRole
的角色。
-
如果该角色存在,则控制台会在当前版本 AWS 账户 中将该服务角色附加到您的 AWS 区域。
-
如果该角色不存在,则控制台会创建一个默认 Greengrass 服务角色,并在当前版本中将其附加到你的。 AWS 账户 AWS 区域
注意
如果要使用自定义角色策略创建服务角色,请使用 IAM 控制台创建或修改角色。有关更多信息,请参阅 IAM 用户指南中的创建角色以向 AWS 服务委派权限或修改角色。确保该角色针对您使用的功能和资源授予和 AWSGreengrassResourceAccessRolePolicy
托管策略同等的权限。我们建议您在信任策略中加入 aws:SourceArn
和 aws:SourceAccount
全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理。
如果您创建了服务角色,请返回 AWS IoT 控制台并将该角色附加到群组。可以在组的设置页面上的 Greengrass 服务角色下执行此操作。
更改 Greengrass 服务角色(控制台)
使用以下步骤选择其他 Greengrass 服务角色以附加到 AWS 账户 您当前在控制台中选择 AWS 区域 的服务角色。
-
从AWS IoT 控制台
导航窗格中,选择设置。 -
在 Greengrass 服务角色下,选择 更改角色。
“更新 Greengrass 服务角色” 对话框打开,其中显示了 AWS 账户 您中定义为可信实体的 IAM 角色。 AWS IoT Greengrass
-
选择要附加的 Greengrass 服务角色。
-
选择附加角色。
注意
要允许控制台为您创建默认 Greengrass 服务角色,请选择 Create role for me (为我创建角色),而不是从列表中选择一个角色。如果您的 AWS 账户角色中包含名为 Greengrass_ServiceRole
的角色,则不会显示为我创建角色链接。
移除 Greengrass 服务角色(控制台)
使用以下步骤在控制台中当前选定的角色中将 Greengrass 服务角色与 AWS 账户 您的分离。 AWS 区域 这会撤消 AWS IoT Greengrass 访问当前 AWS AWS 区域服务的权限。
重要
移除服务角色可能会中断有效操作。
-
从AWS IoT 控制台
导航窗格中,选择设置。 -
在 Greengrass 服务角色 下,选择 移除角色。
-
在确认对话框中,选择 Detach (分离)。
注意
如果您不再需要该角色,则可在 IAM 控制台中将其删除。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件。
其他角色可能 AWS IoT Greengrass 允许访问您的资源。要查找允许 AWS IoT Greengrass 代表您使用权限的所有角色,请在 IAM 控制台的角色页面上的可信实体列中查找包含 AWS 服务: greengrass 的角色。
管理 Greengrass 服务角色 (CLI)
在以下步骤中,我们假设已安装并配置为使用您的 AWS 账户 ID。 AWS CLI 有关更多信息,请参阅《AWS Command Line Interface 用户指南》 AWS CLI中的安装 AWS 命令行界面和配置。
您可以将 AWS CLI 用于以下角色管理任务:
获取 Greengrass 服务角色 (CLI)
使用以下步骤查明 Greengrass 服务角色是否与您的相关联。 AWS 账户 AWS 区域
-
获取服务角色。
region
替换为你的 AWS 区域 (例如,us-west-2
)。aws Greengrass get-service-role-for-account --region
region
如果 Greengrass 服务角色已与您的账户关联,则将返回以下角色元数据。
{ "AssociatedAt": "
timestamp
", "RoleArn": "arn:aws:iam::account-id
:role/path/role-name
" }如果未返回任何角色元数据,则您必须创建服务角色(如果该角色不存在)并将其与您在 AWS 区域中的账户关联。
创建 Greengrass 服务角色 (CLI)
使用以下步骤创建角色,并将其与您的 AWS 账户关联。
使用 IAM 创建服务角色
-
使用允许代入该角色 AWS IoT Greengrass 的信任策略创建角色。此示例将创建一个名为
Greengrass_ServiceRole
的角色,但您也可以使用其他名称。我们建议您在信任策略中加入aws:SourceArn
和aws:SourceAccount
全局条件上下文键,以帮助防止出现混淆代理人安全问题。条件上下文键可限制访问权限,仅允许来自指定账户和 Greengrass 工作空间的请求。有关混淆代理人问题的更多信息,请参阅 防止跨服务混淆代理。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", "Condition": { "StringEquals": { "aws:SourceAccount": "
account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region
:account-id
:*" } } } ] }' -
从输出中的角色元数据复制角色 ARN。使用该 ARN 将角色与您的账户关联。
-
将
AWSGreengrassResourceAccessRolePolicy
策略附加到该角色。aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
将服务角色与您的关联 AWS 账户
-
将角色与您的账户关联。
role-arn
替换为服务角色 ARN 和您region
的 AWS 区域 (例如)。us-west-2
aws greengrass associate-service-role-to-account --role-arn
role-arn
--regionregion
如果成功,将返回以下响应。
{ "AssociatedAt": "
timestamp
" }
删除 Greengrass 服务角色 (CLI)
使用以下步骤解除 Greengrass 服务角色与您的 AWS 账户的关联。
-
取消服务角色与您的账户的关联。
region
替换为你的 AWS 区域 (例如,us-west-2
)。aws greengrass disassociate-service-role-from-account --region
region
如果成功,将返回以下响应。
{ "DisassociatedAt": "
timestamp
" }注意
如果您未在任何服务角色中使用该角色,则应将其删除 AWS 区域。先使用 delete-role-policy 从角色中移除
AWSGreengrassResourceAccessRolePolicy
托管策略,然后使用 delete-role 删除角色。有关更多信息,请参阅《IAM 用户指南》中的删除角色或实例配置文件。
另请参阅
-
在 IAM 用户指南中@@ 创建角色以向 AWS 服务委派权限
-
《IAM 用户指南》中的修改角色
-
IAM 用户指南中的删除角色或实例配置文件。
-
AWS IoT Greengrass 命令参考中的AWS CLI 命令
-
AWS CLI 命令参考中的 IAM 命令