

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

# 建立和管理 的服務角色 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 儲存貯體讀取和刪除和寫入。Workspaces 會將資源存放在 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 S3 儲存貯體中 AWS IoT TwinMaker 建立檔案，指出工作區正在使用該檔案。當您刪除工作區時，此政策會提供刪除該檔案的 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 儲存貯體的許可，請使用儲存*貯體名稱*的值。

下列政策可讓您的角色從特定 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** 元件類型，您必須包含 AWS IoT SiteWise 和 Kinesis Video Streams 的許可。下列範例政策示範如何在政策中包含 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 主控台 AWS CLI、 和 IAM API 來建立角色、指派政策和信任關係的詳細資訊，請參閱[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

## 修改工作區 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 變更僅適用於與 AWS Glue 和 Amazon S3 一起存放的 Athena 表格式資料。若要將 Athena 與其他資料來源搭配使用，您必須為 Athena 設定 IAM 角色，請參閱 [Athena 中的 Identity and Access Management](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 中的 Identity and Access Management](https://docs.aws.amazon.com/athena/latest/ug/security-iam-athena.html)。