建立和管理服務角色 AWS IoT TwinMaker - AWS IoT TwinMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立和管理服務角色 AWS IoT TwinMaker

AWS IoT TwinMaker要求您使用服務角色來允許其代表您存取其他服務中的資源。此角色必須與信任關係AWS IoT TwinMaker。建立工作區時,必須將此角色指派給工作區。本主題包含範例原則,說明如何設定常見案例的權限。

指派信任

下列原則會在您的角色和之間建立信任關係AWS IoT TwinMaker。將此信任關係指派給您用於工作區的角色。

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

Amazon S3 許可

以下政策允許您的角色從 Amazon S3 儲存貯體讀取和刪除和寫入。工作區將資源存放在 Amazon S3 中,因此所有工作區都需要 Amazon S3 許可。

{ "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 S3 儲存貯體中AWS IoT TwinMaker建立一個檔案,指出工作區正在使用該工作區。此原則AWS IoT TwinMaker授與刪除工作區時刪除該檔案的權限。

AWS IoT TwinMaker放置與工作區相關的其他物件。您有責任在刪除工作區時刪除這些物件。

將許可指派給特定的 Amazon S3 儲存貯體

在AWS IoT TwinMaker主控台中建立工作區時,可以選擇為您AWS IoT TwinMaker建立 Amazon S3 儲存貯體。您可以使用以下AWS 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 儲存貯體指派許可,請使用儲存貯體名稱的值。

以下政策允許您的角色讀取和刪除特定 Amazon S3 儲存貯體,以及寫入特定的 Amazon S3 儲存貯體。

{ "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_*" ] } ] }

內建連接器的權限

如果您的工作區使用內建連接器與其他AWS服務互動,您必須在此原則中包含這些服務的權限。如果您使用的是. 連接器元件類型,您必須包含的權限。 AWS IoT SiteWise如需元件類型的詳細資訊,請參閱使用和建立元件類型

注意

如果您使用自訂元件類型與其他AWS服務互動,則必須授與該角色執行 Lambda 函數的權限,該函數會在您的元件類型中實作該函數。如需詳細資訊,請參閱 外部資料來源之連接器的權限

下列範例顯示如何包含AWS IoT SiteWise在您的政策中。

{ "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_*" ] } ] }

如果您使用的是 .amazon.iotsitewise. connect 元件類型AWS IoT SiteWise,而且需要從中讀取屬性資料,您必須在原則中包含下列權限。

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

如果您使用的是 .amazon.iotsitewise. connect 元件類型AWS IoT SiteWise,而且需要將屬性資料寫入,您必須在原則中包含下列權限。

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

如果您使用的是網路影片元件類型,您必須包含和 Kinesis Video Streams 的權限。 AWS IoT SiteWise下列範例政策說明如何在您的原則中包含AWS IoT SiteWise和 Kinesis Video Streams 權限。

... { "Action": [ "iotsitewise:DescribeAsset", "iotsitewise:GetAssetPropertyValue" ], "Resource": [ "AWS IoT SiteWise asset resource ARN for the Edge Connector for Kinesis Video Streams" ], "Effect": "Allow" }, { "Action": [ "iotsitewise:DescribeAssetModel" ], "Resource": [ "AWS 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 函數的權限。

{ "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 建立角色以及為其指派政策和信任關係的AWS CLI詳細資訊,請參閱建立角色以將許可委派給 AWS 服務.

修改您的工作區 IAM 角色以使用 Athena 資料連接器

若要使用 A AWS IoT TwinMakerthena 表格式資料連接器,您必須更新AWS IoT TwinMaker工作區 IAM 角色。將下列許可新增至您的工作區 IAM 角色:

注意

此 IAM 變更僅適用於與AWS Glue和 Amazon S3 一起存放的 Athena 表格式資料。若要搭配其他資料來源使用 Athena,您必須設定 Athena 的 IAM 角色,請參閱 Ath ena 的身分識別與存取管理

{ "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 中的身分與存取管理。