

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

# 为创建和管理服务角色 AWS IoT TwinMaker
<a name="twinmaker-gs-service-role"></a>

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

## 分配信任
<a name="twinmaker-gs-service-role-trust"></a>

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

------
#### [ JSON ]

****  

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

------

## Amazon S3 权限
<a name="twinmaker-gs-service-role-s3"></a>

以下策略允许角色对 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_*"
      ]
    }
  ]
}
```

------

**注意**  
创建工作空间时， AWS IoT TwinMaker 会在您的 Amazon S3 存储桶中创建一个文件，表明工作空间正在使用该文件。此策略 AWS IoT TwinMaker 允许您在删除工作区时删除该文件。  
AWS IoT TwinMaker 放置与您的工作区相关的其他对象。删除工作区时，您有责任删除这些对象。

## 为特定 Amazon S3 存储桶分配权限
<a name="twinmaker-gs-service-role-bucket"></a>

在 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 存储桶分配权限，请使用值。*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_*"
      ]
    }
  ]
}
```

------

## 内置连接器的权限
<a name="twinmaker-gs-service-role-sitewise"></a>

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

**注意**  
如果您使用自定义组件类型与其他 AWS 服务进行交互，则必须向该角色授予运行在您的组件类型中实现该函数的 Lambda 函数的权限。有关更多信息，请参阅 [对外部数据来源连接器的权限](#twinmaker-gs-service-role-external)。

以下示例显示了如何在您的政策 AWS 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": "arn:aws:s3:::bucket name"
        },
    {
        "Effect": "Allow",
        "Action": [
            "iotsitewise:DescribeAssetModel"
        ],
        "Resource": "arn:aws:s3:::bucket name"
        },
    {
      "Effect": "Allow",
      "Action": [
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*"
      ]
    }
  ]
}
```

------

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

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

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

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

如果你使用 **com.amazon.iotsitewise.connector.edgevideo 组件类型，则必须包括和 Kinesi** s 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"
},
...
```

## 对外部数据来源连接器的权限
<a name="twinmaker-gs-service-role-external"></a>

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

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucket*",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Resource": [
          "arn:aws:s3:::amzn-s3-demo-bucket",
          "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ]
    },
    {
        "Action": [
            "lambda:invokeFunction"
        ],
        "Resource": [
        "arn:aws:lambda:us-east-1:111122223333:function:example-function"
        ],
        "Effect": "Allow"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::*/DO_NOT_DELETE_WORKSPACE_*"
      ]
    }
  ]
}
```

------

有关使用 IAM 控制台、和 IAM API 创建角色以及为角色分配策略和信任关系的更多信息，请参阅[创建向委派权限的角色 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。 AWS CLI

## 修改工作区 IAM 角色以使用 Athena 数据连接器
<a name="athena-tabular-data-connector-ws-IAM"></a>

要使用 [AWS IoT TwinMaker Athena 表格数据](https://docs.aws.amazon.com//iot-twinmaker/latest/guide/athena-tabular-data-connector.html)连接器，您必须更新 AWS IoT TwinMaker 您的工作空间 IAM 角色。向工作区 IAM 角色添加以下权限：

**注意**  
此 IAM 更改仅适用于存储在 Amazon S3 中的 Athena 表格数据。 AWS Glue 要将 Athena 与其他数据来源一起使用，必须为 Athena 配置 IAM 角色，请参阅 [Athena 中的身份和访问管理](https://docs.aws.amazon.com/athena/latest/ug/security-iam-athena.html)。

```
{
    "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 中的身份和访问管理](https://docs.aws.amazon.com/athena/latest/ug/security-iam-athena.html)。