

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

# 设置 AWS Clean Rooms
<a name="setting-up"></a>

以下主题说明了如何设置 AWS Clean Rooms。

**Topics**
+ [报名参加 AWS](setting-up-aws-sign-up.md)
+ [为设置服务角色 AWS Clean Rooms](setting-up-roles.md)
+ [为 AWS Clean Rooms ML 设置服务角色](ml-roles.md)

# 报名参加 AWS
<a name="setting-up-aws-sign-up"></a>

在使用或使用 AWS Clean Rooms任何东西之前 AWS 服务，您必须先注册 AWS 账户。 AWS 

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册过程中，您将接到一个带有验证码的电话，您将在电话键盘上输入该验证码。

1. 当您注册时 AWS 账户，将创建一个 *AWS 账户 root 用户*。根用户有权访问该账户中的所有 AWS 服务 和资源。作为安全最佳实践，请[为管理用户分配管理访问权限](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html)，并且只使用根用户执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#aws_tasks-that-require-root)。

# 为设置服务角色 AWS Clean Rooms
<a name="setting-up-roles"></a>

以下各节描述了执行每项任务所需的角色。

**Topics**
+ [创建管理员用户](#setting-up-create-iam-user)
+ [为协作成员创建 IAM 角色](#create-role-DP)
+ [创建服务角色以从 Amazon S3 读取数据](#create-service-role-procedure)
+ [创建服务角色以读取来自亚马逊 Athena 的数据](#create-service-role-athena)
+ [创建服务角色以从 Snowflake 读取数据](#create-service-role-third-party)
+ [创建用于从 S3 存储桶读取代码的服务角色（PySpark 分析模板角色）](#create-role-pyspark-analysis-template)
+ [创建服务角色以写入 PySpark 作业结果](#create-role-pyspark-job)
+ [创建服务角色来接收结果](#create-role-write-results)

## 创建管理员用户
<a name="setting-up-create-iam-user"></a>

要使用 AWS Clean Rooms，您需要为自己创建一个管理员用户，并将该管理员用户添加到管理员组中。

要创建管理员用户，请选择以下选项之一。


****  

| 选择一种方法来管理您的管理员 | 目标 | 方式 | 您也可以 | 
| --- | --- | --- | --- | 
| 在 IAM Identity Center 中 （推荐） | 使用短期凭证访问 AWS。这符合安全最佳实操。有关最佳实践的信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。 | 有关说明，请参阅《AWS IAM Identity Center 用户指南》中的[入门](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html)。 | 通过在《AWS Command Line Interface 用户指南[》 AWS IAM Identity Center中配置 AWS CLI 要使用的来](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html)配置编程访问权限。 | 
| 在 IAM 中 （不推荐使用） | 使用长期凭证访问 AWS。 | 按照《IAM 用户指南》中的[创建用于紧急访问的 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html)中的说明进行操作。 | 按照《IAM 用户指南》中的[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html)，配置编程式访问。 | 

## 为协作成员创建 IAM 角色
<a name="create-role-DP"></a>

成员是 AWS 指参与协作的客户。

**为协作成员创建 IAM 角色**

1. 请按照《AWS Identity and Access Management 用户指南》**的[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)步骤中的说明进行操作。

1. 在**创建策略**步骤中，选择**策略编辑器**中的 **JSON** 选项卡，然后根据授予协作成员的能力添加策略。

   AWS Clean Rooms 根据常见用例提供以下托管策略。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/clean-rooms/latest/userguide/setting-up-roles.html)

   有关提供的不同托管策略的信息 AWS Clean Rooms[AWS 的托管策略 AWS Clean Rooms](security-iam-awsmanpol.md)，请参阅

## 创建服务角色以从 Amazon S3 读取数据
<a name="create-service-role-procedure"></a>

AWS Clean Rooms 使用服务角色从 Amazon S3 读取数据。

有两种方法可以创建此服务角色。
+ 如果您拥有创建服务角色所必需的 IAM 权限，请使用 AWS Clean Rooms 控制台创建服务角色。
+ 如果您没有`iam:CreateRole``iam:CreatePolicy`、`iam:AttachRolePolicy`权限或想要手动创建 IAM 角色，请执行以下任一操作：
  + 使用以下步骤使用自定义信任策略创建服务角色。
  + 要求管理员使用以下步骤创建服务角色。

**注意**  
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时，您或您的 IAM 管理员才应遵循此过程。

**使用自定义信任策略创建服务角色以从 Amazon S3 读取数据**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。
**注意**  
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用，则可以进一步缩小信任策略的范围。有关更多信息，请参阅 [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)。

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

****  

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

------

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下权限策略。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。例如，如果您为 Amazon S3 数据设置了自定义 KMS 密钥，则可能需要使用额外 AWS Key Management Service (AWS KMS) 权限修改此政策。  
您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "NecessaryGluePermissions",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:GetPartition",
                   "glue:GetPartitions",
                   "glue:BatchGetPartition"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:database/databaseName",
                   "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
                   "arn:aws:glue:us-east-1:111122223333:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetSchema",
                   "glue:GetSchemaVersion"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "NecessaryS3BucketPermissions",
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "444455556666"
                       ]
                   }
               }
           },
           {
               "Sid": "NecessaryS3ObjectPermissions",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket/prefix/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "444455556666"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
该策略引用了两种不同的策略 AWS 账户 IDs 来支持由不同各方管理数据目录元数据和实际数据存储的 AWS Clean Rooms 协作：  
**111122223333**-这是拥有 AWS Glue 数据目录资源（数据库、表和目录）的帐户。第一条语句授予访问该账户 AWS Glue 目录中的表架构、分区信息和元数据的权限。
**444455556666-** 这个账户拥有包含实际数据文件的 Amazon S3 存储桶。根据`s3:ResourceAccount`条件，Amazon S3 权限（声明 3 和声明 4）仅限于该账户拥有的存储桶。
此配置支持常见的企业数据架构，其中一个团队管理数据目录和架构定义，而另一个团队则拥有底层的数据存储基础架构。该`s3:ResourceAccount`条件通过确保 Amazon S3 操作仅适用于指定账户拥有的存储桶，从而提供了额外的安全层。

1. 将每个 *placeholder* 替换为您自己的信息。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

## 创建服务角色以读取来自亚马逊 Athena 的数据
<a name="create-service-role-athena"></a>

AWS Clean Rooms 使用服务角色从 Amazon Athena 读取数据。

**使用自定义信任策略创建服务角色以从 Athena 读取数据**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。
**注意**  
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用，则可以进一步缩小信任策略的范围。有关更多信息，请参阅 [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)。

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

****  

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

------

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下权限策略。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Athena 数据所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。例如，如果您已经为自己的 Amazon S3 数据设置了自定义 KMS 密钥，则可能需要修改此政策，使其具有额外的 AWS KMS 权限。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:GetWorkGroup",
                   "athena:GetTableMetadata",
                   "athena:GetDataCatalog",
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults"
               ],
               "Resource": [
                   "arn:aws:athena:region:accountId:workgroup/workgroup",
                   "arn:aws:athena:region:accountId:datacatalog/federatedCatalogName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetTable",
                   "glue:GetCatalog"
               ],
               "Resource": [
                   "arn:aws:glue:region:accountId:catalog",
                   "arn:aws:glue:region:accountId:catalog/federatedCatalogName",
                   "arn:aws:glue:region:accountId:database/federatedCatalogName/databaseName",
                   "arn:aws:glue:region:accountId:table/federatedCatalogName/databaseName/tableName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetBucketLocation",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                   "arn:aws:s3:::athenaResultsBucket",
                   "arn:aws:s3:::athenaResultsBucket/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "accountId"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": "lakeformation:GetDataAccess",
               "Resource": "*"
           }
       ]
   }
   ```

1. 将每个 *placeholder* 替换为您自己的信息。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

### 设置 Lake Formation 权限
<a name="setup-lakeformation-permissions"></a>

如果您查询受 Lake Formation 权限保护的资源，则服务角色必须对 AWS Glue 数据库具有**选择**table/view/catalog和****描述****访问权限以及描述权限。

有关更多信息，请参阅: 
+ [使用 Athena 查询在亚马逊 *A* thena 用户 AWS Lake Formation指南中注册的数据](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html)
+ *AWS Lake Formation 开发者*指南中的@@ [入门使用 Lake Formation 权限](https://docs.aws.amazon.com/lake-formation/latest/dg/onboarding-lf-permissions.html)



## 创建服务角色以从 Snowflake 读取数据
<a name="create-service-role-third-party"></a>

AWS Clean Rooms 使用服务角色检索您的凭据，让 Snowflake 从该来源读取您的数据。

可以使用两种方法创建此服务角色：
+ 如果您拥有创建服务角色所必需的 IAM 权限，请使用 AWS Clean Rooms 控制台创建服务角色。
+ 如果您没有`iam:CreateRole``iam:CreatePolicy`、`iam:AttachRolePolicy`权限或想要手动创建 IAM 角色，请执行以下任一操作：
  + 使用以下步骤使用自定义信任策略创建服务角色。
  + 要求管理员使用以下步骤创建服务角色。

**注意**  
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时，您或您的 IAM 管理员才应遵循此过程。

**使用自定义信任策略创建服务角色以从 Snowflake 读取数据**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。
**注意**  
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用，则可以进一步缩小信任策略的范围。有关更多信息，请参阅 [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowIfSourceArnMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/membershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/queryRunnerMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
此信任策略引用了两种不同的策略 AWS 账户 IDs 来支持将查询执行责任分配给多方的 AWS Clean Rooms 协作：  
**111122223333**-该账户包含参与协作的成员资格。该成员可能拥有数据表、分析规则或其他需要角色访问权限的协作资源。
**444455556666**-此帐户包含负责运行查询的成员资格（“查询运行器”）。此成员资格执行受保护的查询，并且需要担任此角色才能访问必要的计算和数据资源。
此配置支持一方提供数据或分析模板而另一方运行实际查询的场景。通过相同的执行角色，这两个角色都需要不同但互补的权限。该`aws:SourceArn`条件可确保只有源自这两个特定成员资格的 AWS Clean Rooms 操作才能担任该角色，从而在支持分布式作业执行和结果管理工作流程的同时维护安全性。

1. 根据使用[自定义信任策略创建角色（控制台）过程使用以下权限策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)之一。

   **使用客户拥有的 KMS 密钥加密的机密的权限策略**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier",
               "Effect": "Allow"
           },
           {
               "Sid": "AllowDecryptViaSecretsManagerForKey",
               "Action": "kms:Decrypt",
               "Resource": "arn:aws:kms:us-east-1:444455556666:key/keyIdentifier",
               "Effect": "Allow",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "secretsmanager.us-east-1.amazonaws.com",
                       "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier"
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
该政策引用了两种不同的策略 AWS 账户 IDs 来支持跨账户密钥管理方案：  
**111122223333-** 这是拥有和存储秘密的账户。第一条语句授予从该账户检索机密值的权限。
**444455556666**-这是拥有用于加密密钥的 AWS KMS 密钥的账户。第二条语句授予使用该账户的密钥解密密密 AWS KMS 钥的权限。
此配置在企业环境中很常见，其中：  
在一个账户（账户 1）中集中管理密钥
加密密钥由单独的安全账户或共享服务账户（账户 2）管理
账户 2 中的 AWS KMS 密钥策略还必须允许账户 1 中的服务使用该密钥进行 encryption/decryption 操作
该`kms:EncryptionContext:SecretARN`条件可确保 AWS KMS 密钥只能用于解密此特定机密，从而为跨账户访问提供额外的安全保护。

   **使用加密的机密的权限策略 AWS 托管式密钥**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier",
               "Effect": "Allow"
           }
       ]
   }
   ```

------

1. 将每个 *placeholder* 替换为您自己的信息。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

## 创建用于从 S3 存储桶读取代码的服务角色（PySpark 分析模板角色）
<a name="create-role-pyspark-analysis-template"></a>

AWS Clean Rooms 使用 PySpark 分析模板时，使用服务角色从协作成员的指定 S3 存储桶中读取代码。

**创建服务角色以从 S3 存储桶读取代码**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/jobRunnerMembershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/analysisTemplateOwnerMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
此信任策略引用了两种不同的策略 AWS 账户 IDs 来支持多方 AWS Clean Rooms 协作场景：  
**111122223333**-该账户包含负责运行查询的成员资格（“作业运行者”）。该成员资格执行分析作业，需要担任此角色才能访问必要的资源。
**444455556666**-这是拥有分析模板及其关联成员资格（“分析模板所有者”）的账户。此成员资格定义了可以运行哪些查询，还需要担任此角色来管理和执行分析。
这种配置在多方参与同一个 AWS Clean Rooms 协作的协作中很常见，每方都有自己的 AWS 账户 成员资格。查询执行者和分析模板所有者都需要访问共享资源。该`aws:SourceArn`条件可确保只有源于这两个特定成员身份的 AWS Clean Rooms 操作才能担任该角色，从而为多方协作提供精确的访问控制。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下权限策略。
**注意**  
以下示例策略支持从 Amazon S3 读取您的代码所需的权限。但是，您可能需要修改此策略，具体取决于您设置 S3 数据的方式。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": ["arn:aws:s3:::s3Path"],
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *s3Path*— 您的代码的 S3 存储桶位置。
   + *s3BucketOwnerAccountId*— S3 存储桶所有者的 AWS 账户 ID。
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *jobRunnerAccountId*— 可以运行查询和作业的成员的 AWS 账户 ID。
   + *jobRunnerMembershipId*— 可以查询和运行作业的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *analysisTemplateAccountId*-分析模板的 AWS 账户 ID。
   + *analysisTemplateOwnerMembershipId*— 拥有分析模板的成员**资格 ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

## 创建服务角色以写入 PySpark 作业结果
<a name="create-role-pyspark-job"></a>

AWS Clean Rooms 使用服务角色将 PySpark 任务的结果写入指定的 S3 存储桶。

**创建用于写入 PySpark 作业结果的服务角色**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/jobRunnerMembershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/rrMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
该信任策略引用了两种不同的策略 AWS 账户 IDs 来支持具有不同运营角色的 AWS Clean Rooms 协作：  
**111122223333**-该账户包含负责运行分析作业的成员资格（“作业运行者”）。此成员资格负责执行计算工作负载，并且需要担任此角色才能访问处理资源。
**444455556666**-该账户包含具有结果接收者 (RR) 责任的成员资格。该成员资格有权接收和访问分析作业的输出，并且需要角色访问权限才能将结果写入指定位置。
这种配置支持一方运行计算分析，而另一方接收并管理结果的 AWS Clean Rooms 场景。通过相同的执行角色，这两个角色都需要不同但互补的权限。该`aws:SourceArn`条件可确保只有源自这两个特定成员资格的 AWS Clean Rooms 操作才能担任该角色，从而在支持分布式作业执行和结果管理工作流程的同时维护安全性。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下权限策略。
**注意**  
以下示例策略支持写入 Amazon S3 所需的权限。但是，您可能需要修改此策略，具体取决于您设置 S3 的方式。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::bucket/optionalPrefix/*",
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Resource": "arn:aws:s3:::bucket",
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *jobRunnerAccountId*— S3 存储桶所在的 AWS 账户 ID。
   + *jobRunnerMembershipId*— 可以查询和运行作业的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *rrAccountId*— S3 存储桶所在的 AWS 账户 ID。
   + *rrMembershipId*— 可以接收结果的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *bucket*— S3 存储桶的名称和位置。
   + *optionalPrefix*— 如果要将结果保存在特定的 S3 前缀下，则为可选前缀。
   + *s3BucketOwnerAccountId*— S3 存储桶所有者的 AWS 账户 ID。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

## 创建服务角色来接收结果
<a name="create-role-write-results"></a>

**注意**  
如果您是只能接收结果的成员（在控制台中，**您的成员能力**为仅**接收结果**），请按照以下步骤操作。  
如果您是既能查询也能接收结果的成员（在控制台中，**您的成员能力**既是**查询**又是**接收结果**），则可以跳过此步骤。

对于只能接收结果的协作成员， AWS Clean Rooms 使用服务角色将协作中查询数据的结果写入指定的 S3 存储桶。

可以使用两种方法创建此服务角色：
+ 如果您拥有创建服务角色所必需的 IAM 权限，请使用 AWS Clean Rooms 控制台创建服务角色。
+ 如果您没有`iam:CreateRole``iam:CreatePolicy`、`iam:AttachRolePolicy`权限或想要手动创建 IAM 角色，请执行以下任一操作：
  + 使用以下步骤使用自定义信任策略创建服务角色。
  + 要求管理员使用以下步骤创建服务角色。

**注意**  
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时，您或您的 IAM 管理员才应遵循此过程。

**使用自定义信任策略创建用于接收结果的服务角色**

1. 使用自定义信任策略创建角色。有关更多信息，请参阅《*AWS Identity and Access Management 用户指南*》中的[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)过程。

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下自定义信任策略。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowIfExternalIdMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ArnLike": {
                       "sts:ExternalId": "arn:aws:*:region:*:dbuser:*/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa*"
                   }
               }
           },
           {
               "Sid": "AllowIfSourceArnMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa"
                       ]
                   
                   }
               }
           }
       ]
   }
   ```

------

1. 根据[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤使用以下权限策略。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是，您可能需要修改此策略，具体取决于您设置 S3 数据的方式。  
您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

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

****  

   ```
   {
   
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation", 
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket_name"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount":"accountId"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket_name/optional_key_prefix/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount":"accountId"
                   }
               }
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa*— 可以查询的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa*— 可以查询的**成员的单一会员 ARN**。可以在协作的**详细信息**选项卡上找到**成员身份 ARN**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *bucket\$1name*— S3 存储桶的**亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。

     *bucket\$1name/optional\$1key\$1prefix*— **亚马逊 S3 中结果目标的亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。

1. 继续按照[使用自定义信任策略创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)步骤创建角色。

# 为 AWS Clean Rooms ML 设置服务角色
<a name="ml-roles"></a>

执行相似建模所需的角色与使用自定义模型所需的角色不同。以下各节描述了执行每项任务所需的角色。

**Topics**
+ [为相似建模设置服务角色](#aws-model-roles)
+ [为自定义建模设置服务角色](#custom-model-roles)

## 为相似建模设置服务角色
<a name="aws-model-roles"></a>

**Topics**
+ [创建服务角色以读取训练数据](#ml-create-role-training)
+ [创建服务角色以写入相似细分](#ml-create-role-write-segment)
+ [创建服务角色以读取种子数据](#ml-create-role-read-seed)

### 创建服务角色以读取训练数据
<a name="ml-create-role-training"></a>

AWS Clean Rooms 使用服务角色读取训练数据。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

**创建服务角色以训练数据集**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是，您可能需要修改此策略，具体取决于您设置 S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:BatchGetPartition",
                   "glue:GetUserDefinedFunctions"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:database/databases",
                   "arn:aws:glue:us-east-1:111122223333:table/databases/tables",
                   "arn:aws:glue:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:database/default"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:CreateDatabase"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:database/default"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "111122223333"
                       ]
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketFolders/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "111122223333"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

   如果您需要使用 KMS 密钥解密数据，请将以下 AWS KMS 语句添加到之前的模板中：

   ```
   {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
               ],
               "Resource": [
                   "arn:aws:kms:region:accountId:key/keyId"
               ],
               "Condition": {
                   "ArnLike": {
                           "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucketFolders*"
                   }
               }
           }
       ]
   }
   ```

1. 用你自己的信息替换每一个*placeholder*信息：
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。
   + *database/databases**table/databases/tables*、*catalog*、和 *database/default* — AWS Clean Rooms 需要访问的训练数据的位置。
   + *bucket*— S3 存储桶的**亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。
   + *bucketFolders*— S3 存储桶中 AWS Clean Rooms 需要访问的特定文件夹的名称。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeRole",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms-ml.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEqualsIfExists": { 
                       "aws:SourceAccount": ["111122223333"]
                   },
                   "ArnLikeIfExists": { 
                       "aws:SourceArn": "arn:aws:cleanrooms-ml:us-east-1:111122223333:training-dataset/*"
                   }
               }
           }
       ]
   }
   ```

------

   永远`SourceAccount`是你的 AWS 账户。可以将 `SourceArn` 限制为特定的训练数据集，但仅在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

   *accountId*是 AWS 账户 包含训练数据的 ID。

1. 选择**下一步**，在**添加权限**下面，输入您刚刚创建的策略的名称。（您可能需要重新加载页面。）

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

### 创建服务角色以写入相似细分
<a name="ml-create-role-write-segment"></a>

AWS Clean Rooms 使用服务角色将相似的区段写入存储桶。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

**创建服务角色以写入相似细分**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
       {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::buckets"
               ],
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "accountId"
                       ]
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketFolders/*"
               ],
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "accountId"
                       ]
                   }
               }
           }
     ]
   }
   ```

------

   如果您需要使用 KMS 密钥加密数据，请将以下 AWS KMS 语句添加到模板中：

   ```
   {
               "Effect": "Allow",
               "Action": [
                   "kms:Encrypt",
                   "kms:GenerateDataKey*",
                   "kms:ReEncrypt*",
               ],
               "Resource": [
                   "arn:aws:kms:region:accountId:key/keyId"
               ],
               "Condition": {
                   "ArnLike": {
                           "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucketFolders*"
                   }
               }
           }
     ]
   }
   ```

1. 用你自己的信息替换每一个*placeholder*信息：
   + *buckets*— S3 存储桶的**亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。
   + *bucketFolders*— S3 存储桶中 AWS Clean Rooms 需要访问的特定文件夹的名称。
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *keyId*— 加密数据所需的 KMS 密钥。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeRole",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms-ml.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEqualsIfExists": { 
                       "aws:SourceAccount": ["111122223333"]
   
                   },
                   "ArnLikeIfExists": { 
                       "aws:SourceArn": "arn:aws:cleanrooms-ml:us-east-1:111122223333:configured-audience-model/*"
                   }
               }
           }
       ]
   }
   ```

------

   永远`SourceAccount`是你的 AWS 账户。可以将 `SourceArn` 限制为特定的训练数据集，但仅在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

### 创建服务角色以读取种子数据
<a name="ml-create-role-read-seed"></a>

AWS Clean Rooms 使用服务角色读取种子数据。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

**创建服务角色以读取存储在 S3 存储桶中的种子数据。**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择 **Create policy (创建策略)**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略之一。
**注意**  
以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::buckets"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "accountId"
                       ]
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketFolders/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "accountId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**注意**  
以下示例策略支持读取 SQL 查询结果并将其用作输入数据所需的权限。但是，您可能需要修改此策略，具体取决于查询的结构。该策略不包含用于解密数据的 KMS 密钥。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCleanRoomsStartQuery",
               "Effect": "Allow",
               "Action": [
                   "cleanrooms:GetCollaborationAnalysisTemplate",
                   "cleanrooms:GetSchema",
                   "cleanrooms:StartProtectedQuery"
               ],
               "Resource": "*"
           },
           {
               "Sid": "AllowCleanRoomsGetAndUpdateQuery",
               "Effect": "Allow",
               "Action": [
                   "cleanrooms:GetProtectedQuery",
                   "cleanrooms:UpdateProtectedQuery"
               ],
               "Resource": [
                   "arn:aws:cleanrooms:us-east-1:111122223333:membership/queryRunnerMembershipId"
               ]
           }
       ]
   }
   ```

------

   如果您需要使用 KMS 密钥解密数据，请将以下 AWS KMS 语句添加到模板中：

   ```
   {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:DescribeKey"
               ],
               "Resource": [
                   "arn:aws:kms:region:accountId:key/keyId"
               ],
               "Condition": {
                   "ArnLike": {
                           "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucketFolders*"
                   }
               }
           }
     ]
   }
   ```

1. 用你自己的信息替换每一个*placeholder*信息：
   + *buckets*— S3 存储桶的**亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。
   + *bucketFolders*— S3 存储桶中 AWS Clean Rooms 需要访问的特定文件夹的名称。
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *queryRunnerAccountId*— 将运行查询的账户的 AWS 账户 ID。
   + *queryRunnerMembershipId*— 可以查询的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。
   + *keyId*— 加密数据所需的 KMS 密钥。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeRole",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms-ml.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEqualsIfExists": {
                       "aws:SourceAccount": ["111122223333"]
   
                   },
                   "ArnLikeIfExists": { 
                       "aws:SourceArn": "arn:aws:cleanrooms-ml:us-east-1:111122223333:audience-generation-job/*"
                   }
               }
           }
       ]
   }
   ```

------

   永远`SourceAccount`是你的 AWS 账户。可以将 `SourceArn` 限制为特定的训练数据集，但仅在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

## 为自定义建模设置服务角色
<a name="custom-model-roles"></a>

**Topics**
+ [为自定义 ML 建模创建服务角色-机器学习配置](#ml-roles-custom-configure)
+ [创建服务角色以提供自定义 ML 模型](#ml-roles-custom-model-provider)
+ [创建用于查询数据集的服务角色](#ml-roles-custom-query-dataset)
+ [创建服务角色以创建已配置的表关联](#ml-roles-custom-configure-table)

### 为自定义 ML 建模创建服务角色-机器学习配置
<a name="ml-roles-custom-configure"></a>

AWS Clean Rooms 使用服务角色来控制谁可以创建自定义 ML 配置。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

此角色允许您使用 Pu [t MLConfiguration](https://docs.aws.amazon.com/cleanrooms-ml/latest/APIReference/API_PutMLConfiguration.html) 操作。

**创建服务角色以允许创建自定义 ML 配置**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持访问和向 S3 存储桶写入数据以及发布 CloudWatch 指标所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowS3ObjectWriteForExport",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "111122223333"
                       ]
                   }
               }
           },
           {
               "Sid": "AllowS3KMSEncryptForExport",
               "Effect": "Allow",
               "Action": [
                   "kms:Encrypt",
                   "kms:GenerateDataKey*"
               ],
               "Resource": [
                   "arn:aws:kms:us-east-1:111122223333:key/keyId"
               ],
               "Condition": {
                   "StringLike": {
                       "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket*"
                   }
               }
           },
           {
               "Sid": "AllowCloudWatchMetricsPublishingForTrainingJobs",
               "Action": "cloudwatch:PutMetricData",
               "Resource": "*",
               "Effect": "Allow",
               "Condition": {
                   "StringLike": {
                       "cloudwatch:namespace": "/aws/cleanroomsml/*"
                   }
               }
           },
           {
               "Sid": "AllowCloudWatchLogsPublishingForTrainingOrInferenceJobs",
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogStreams",
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/cleanroomsml/*"
               ]
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *bucket*— S3 存储桶的**亚马逊资源名称 (ARN)**。**Amazon 资源名称 (ARN)** 可在 Amazon S3 存储桶的**属性**选项卡上找到。
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。
   + *keyId*— 加密数据所需的 KMS 密钥。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms-ml.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "111122223333"
                   },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:cleanrooms:us-east-1:111122223333:membership/membershipID"
                   }
               }
           }
       ]
   }
   ```

------

   永远`SourceAccount`是你的 AWS 账户。可以将 `SourceArn` 限制为特定的训练数据集，但仅在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

### 创建服务角色以提供自定义 ML 模型
<a name="ml-roles-custom-model-provider"></a>

AWS Clean Rooms 使用服务角色来控制谁可以创建自定义 ML 模型算法。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

此角色允许您使用[CreateConfiguredModelAlgorithm](https://docs.aws.amazon.com/cleanrooms-ml/latest/APIReference/API_CreateConfiguredModelAlgorithm.html)操作。

**创建服务角色以允许成员提供自定义 ML 模型**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持检索包含模型算法的 docker 镜像所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowECRImageDownloadForTrainingAndInferenceJobs",
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchGetImage",
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:GetDownloadUrlForLayer"
               ],
               "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/repoName"
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *accountId*— S3 存储桶所在的 AWS 账户 ID。
   + *repoName*— 包含您的数据的存储库的名称。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

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

------

   始终`SourceAccount`是你 AWS 账户 的。`SourceArn`可以仅限于特定的训练数据集，但只能在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

### 创建用于查询数据集的服务角色
<a name="ml-roles-custom-query-dataset"></a>

AWS Clean Rooms 使用服务角色来控制谁可以查询将用于自定义 ML 建模的数据集。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

此角色允许您使用 “[创建MLInput频道](https://docs.aws.amazon.com/cleanrooms-ml/latest/APIReference/API_CreateMLInputChannel.html)” 操作。

**创建服务角色以允许成员查询数据集**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持查询将用于自定义 ML 建模的数据集所需的权限。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCleanRoomsStartQueryForMLInputChannel",
               "Effect": "Allow",
               "Action": "cleanrooms:StartProtectedQuery",
               "Resource": "*"
           },
           {
               "Sid": "AllowCleanroomsGetSchemaAndGetAnalysisTemplateForMLInputChannel",
               "Effect": "Allow",
               "Action": [
                   "cleanrooms:GetSchema",
                   "cleanrooms:GetCollaborationAnalysisTemplate"
               ],
               "Resource": "*"
           },
           {
               "Sid": "AllowCleanRoomsGetAndUpdateQueryForMLInputChannel",
               "Effect": "Allow",
               "Action": [
                   "cleanrooms:GetProtectedQuery",
                   "cleanrooms:UpdateProtectedQuery"
               ],
               "Resource": [
                   "arn:aws:cleanrooms:us-east-1:111122223333:membership/queryRunnerMembershipId"
               ]
           }
       ]
   }
   ```

------

1. 用你自己的信息替换每一个*placeholder*信息：
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *queryRunnerAccountId*— 将运行查询的账户的 AWS 账户 ID。
   + *queryRunnerMembershipId*— 可以查询的成员的会员 **ID**。可以在协作的**详细信息**选项卡上找到**成员身份 ID**。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

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

------

   始终`SourceAccount`是你 AWS 账户 的。`SourceArn`可以仅限于特定的训练数据集，但只能在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。

### 创建服务角色以创建已配置的表关联
<a name="ml-roles-custom-configure-table"></a>

AWS Clean Rooms 使用服务角色来控制谁可以创建已配置的表关联。如果您具有必要的 IAM 权限，则可以使用控制台创建此角色。如果您不具备 `CreateRole` 权限，请要求您的管理员创建服务角色。

此角色允许您使用 CreateConfiguredTableAssociation 操作。

**创建服务角色以允许创建已配置的表关联**

1. 使用您的管理员账户登录 IAM 控制台 ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))。

1. 在**访问管理**下，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**中，选择 **JSON** 选项卡，然后复制粘贴以下策略。
**注意**  
以下示例策略支持创建已配置的表关联。但是，您可能需要修改此政策，具体取决于您设置 Amazon S3 数据的方式。该策略不包含用于解密数据的 KMS 密钥。  
您的 Amazon S3 资源必须与 AWS Clean Rooms 协作资源 AWS 区域 相同。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "kms:Decrypt",
                   "kms:DescribeKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/KMS-key-ID",
               "Effect": "Allow"
           },
           {
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::bucket-name",
               "Effect": "Allow"
           },
           {
               "Action": "s3:GetObject",
               "Resource": "arn:aws:s3:::bucket-name/*",
               "Effect": "Allow"
           },
           {
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:BatchGetPartition"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:database/Glue database name",
                   "arn:aws:glue:us-east-1:111122223333:table/Glue database name/Glue table name"
               ],
               "Effect": "Allow"
           },
           {
               "Action": [
                   "glue:GetSchema",
                   "glue:GetSchemaVersion"
               ],
               "Resource": "*",
               "Effect": "Allow"
           }
       ]
   }
   ```

------
**替换占位符资源 ARNs**  
使用此策略时，必须将占位符资源标识符替换为实际 ARNs 资源的标识符：  
**AWS KMS 密钥资源**：*KMS-key-ID*替换为加密您的 Amazon S3 数据的实际 AWS KMS 密钥 ID。密钥必须位于拥有目录资源的同一个账户 (111122223333) 中。 AWS Glue 
**Amazon S3 存储桶资源**：*bucket-name*替换为包含您的 AWS Glue 表数据的 Amazon S3 存储桶的实际名称。请注意，Amazon S3 存储桶 ARNs 不包含账户， IDs 因为存储桶名称是全球唯一的。
**AWS Glue 资源**：将以下占位符替换为您的实际资源名称：  
*Glue database name*-您的 AWS Glue 数据库名称
*Glue table name*-你的 AWS Glue 桌子的名字
所有 AWS Glue 资源（目录、数据库和表）必须相同 AWS 账户 (111122223333)，以确保访问权限的一致性。此帐户应与拥有用于数据加密的 AWS KMS 密钥的帐户相同，从而为您的 AWS Clean Rooms 数据资源创建统一的安全边界。

1. 用你自己的信息替换每一个*placeholder*信息：
   + *KMS key used to encrypt the Amazon S3 data*— 用于加密 Amazon S3 数据的 KMS 密钥。要解密数据，您需要提供用于加密数据的 KMS 密钥。
   + *Amazon S3 bucket of AWS Glue table*— 包含包含您的数据的 AWS Glue 表的 Amazon S3 存储桶的名称。
   + *region* - AWS 区域的名称。例如 **us-east-1**。
   + *accountId*— 拥有数据的账户的 AWS 账户 ID。
   + *AWS Glue database name*— 包含您的数据的 AWS Glue 数据库的名称。
   + *AWS Glue table name*-包含您的数据的 AWS Glue 表的名称。

1. 选择**下一步**。

1. 对于**查看并创建**，输入**策略名称**和**描述**，然后查看**摘要**。

1. 选择**创建策略**。

   您已经为创建了策略 AWS Clean Rooms。

1. 在 **Access management**（访问管理）下，请选择 **Roles**（角色）。

   通过使用**角色**，您可以创建短期凭证，建议这样做以提高安全性。您也可以选择**用户**来创建长期凭证。

1. 选择**创建角色**。

1. 在**创建角色**向导中，对于**可信实体类型**，选择**自定义信任策略**。

1. 将以下自定义信任策略复制粘贴到 JSON 编辑器中。

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

****  

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

------

   始终`SourceAccount`是你 AWS 账户 的。`SourceArn`可以仅限于特定的训练数据集，但只能在创建该数据集之后。由于您还不知道训练数据集 ARN，因此在此处指定了通配符。

1. 选择**下一步**。

1. 选中您创建的策略旁边的复选框，然后选择**下一步**。

1. 对于**命名、查看和创建**，输入**角色名称**和**描述**。
**注意**  
**角色名称**必须与授予可以查询和接收结果的成员和成员角色的 `passRole` 权限中的模式相匹配。

   1. 查看**选择受信任的实体**，并在必要时进行编辑。

   1. 在**添加权限**中查看权限，并在必要时进行编辑。

   1. 查看**标签**，并在必要时添加标签。

   1. 选择**创建角色**。

您已经为创建了服务角色 AWS Clean Rooms。