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

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

创建和管理 Amazon IoT TwinMaker的服务角色

Amazon IoT TwinMaker 要求您使用服务角色来允许该服务代表您访问其他服务中的资源。此角色必须与建立信任关系 Amazon IoT TwinMaker。创建工作区时,必须将此角色分配给该工作区。此主题包含说明如何为常见场景配置权限的策略示例。

分配信任

以下策略在您的角色和之间建立了信任关系 Amazon IoT TwinMaker。将此信任关系分配给用于工作区的角色。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iottwinmaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon S3 权限

以下策略允许角色对 Amazon S3 存储桶执行读取、删除和写入操作。工作区将资源存储在 Amazon S3 中,因此所有工作区都需要 Amazon S3 权限。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }
注意

创建工作空间时, Amazon IoT TwinMaker 会在您的 Amazon S3 存储桶中创建一个文件,表明工作空间正在使用该文件。此策略 Amazon IoT TwinMaker 允许您在删除工作区时删除该文件。

Amazon IoT TwinMaker 放置与您的工作区相关的其他对象。删除工作区时,您有责任删除这些对象。

为特定 Amazon S3 存储桶分配权限

在 Amazon IoT TwinMaker 控制台中创建工作空间时,您可以选择为您 Amazon IoT TwinMaker 创建 Amazon S3 存储桶。您可以使用以下 Amazon CLI 命令查找有关此存储桶的信息。

aws iottwinmaker get-workspace --workspace-id workspace name

下面的示例显示此命令的输出格式:

{ "arn": "arn:aws:iottwinmaker:region:account Id:workspace/workspace name", "creationDateTime": "2021-11-30T11:30:00.000000-08:00", "description": "", "role": "arn:aws:iam::account Id:role/service role name", "s3Location": "arn:aws:s3:::bucket name", "updateDateTime": "2021-11-30T11:30:00.000000-08:00", "workspaceId": "workspace name" }

要更新您的策略以使其为特定 Amazon S3 存储桶分配权限,请使用值。bucket name

以下策略允许角色对特定 Amazon S3 存储桶进行读取、删除和写入。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::iottwinmakerbucket/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

内置连接器的权限

如果您的工作空间使用内置连接器与其他 Amazon 服务进行交互,则必须在此策略中包含这些服务的权限。如果使用 com.amazon.iotsitewise.connector 组件类型,则必须包括对 Amazon IoT SiteWise的权限。有关组件类型的更多信息,请参阅 使用和创建组件类型

注意

如果您使用自定义组件类型与其他 Amazon 服务进行交互,则必须向该角色授予运行在您的组件类型中实现该函数的 Lambda 函数的权限。有关更多信息,请参阅 对外部数据来源连接器的权限

以下示例显示了如何在您的政策 Amazon IoT SiteWise 中包含内容。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Effect": "Allow", "Action": [ "iotsitewise:DescribeAsset" ], "Resource": "asset ARN" }, { "Effect": "Allow", "Action": [ "iotsitewise:DescribeAssetModel" ], "Resource": "asset model ARN" }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

如果您使用 com.amazon.iotsitewise.connector 组件类型并且需要从中读取属性数据 Amazon IoT SiteWise,则必须在策略中包含以下权限。

... { "Action": [ "iotsitewise:GetPropertyValueHistory", ], "Resource": [ "Amazon IoT SiteWise asset resource ARN" ], "Effect": "Allow" }, ...

如果您使用 com.amazon.iotsitewise.connector 组件类型并且需要向其写入属性数据 Amazon IoT SiteWise,则必须在策略中包含以下权限。

... { "Action": [ "iotsitewise:BatchPutPropertyValues", ], "Resource": [ "Amazon IoT SiteWise asset resource ARN" ], "Effect": "Allow" }, ...

如果你使用 com.amazon.iotsitewise.connector.edgevideo 组件类型,则必须包括和 Kinesi s Video Streams 的权限。 Amazon IoT SiteWise 以下示例策略说明如何在您的策略中包含 Amazon IoT SiteWise 和 Kinesis Video Streams 权限。

... { "Action": [ "iotsitewise:DescribeAsset", "iotsitewise:GetAssetPropertyValue" ], "Resource": [ "Amazon IoT SiteWise asset resource ARN for the Edge Connector for Kinesis Video Streams" ], "Effect": "Allow" }, { "Action": [ "iotsitewise:DescribeAssetModel" ], "Resource": [ "Amazon IoT SiteWise model resource ARN for the Edge Connector for Kinesis Video Streams" ], "Effect": "Allow" }, { "Action": [ "kinesisvideo:DescribeStream" ], "Resource": [ "Kinesis Video Streams stream ARN" ], "Effect": "Allow" }, ...

对外部数据来源连接器的权限

如果创建的组件类型使用连接到外部数据来源的函数,则必须向服务角色授予使用实现该函数的 Lambda 函数的权限。有关创建组件类型的更多信息,请参阅 使用和创建组件类型

以下示例向服务角色授予使用 Lambda 函数的权限。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucket*", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket name", "arn:aws:s3:::bucket name/*" ] }, { "Action": [ "lambda:invokeFunction" ], "Resource": [ "Lambda function ARN" ], "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*" ] } ] }

有关使用 IAM 控制台、和 IAM API 创建角色以及为角色分配策略和信任关系的更多信息,请参阅创建向委派权限的角色 Amazon Web Services 服务。 Amazon CLI

修改工作区 IAM 角色以使用 Athena 数据连接器

要使用 Amazon IoT TwinMaker Athena 表格数据连接器,您必须更新 Amazon IoT TwinMaker 您的工作空间 IAM 角色。向工作区 IAM 角色添加以下权限:

注意

此 IAM 更改仅适用于存储在 Amazon S3 中的 Athena 表格数据。 Amazon Glue 要将 Athena 与其他数据来源一起使用,必须为 Athena 配置 IAM 角色,请参阅 Athena 中的身份和访问管理

{ "Effect": "Allow", "Action": [ "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetTableMetadata", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "athena resouces arn" ] },// Athena permission { "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "glue resouces arn" ] },// This is an example for accessing aws glue { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "Amazon S3 data source bucket resources arn" ] }, // S3 bucket for storing the tabular data. { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject", "s3:PutBucketPublicAccessBlock" ], "Resource": [ "S3 query result bucket resources arn" ] } // Storing the query results

有关 Athena IAM 配置的更多信息,请阅读 Athena 中的身份和访问管理