为 Amazon Redshift ML 配置集群和管理设置 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon Redshift ML 配置集群和管理设置

在使用 Amazon Redshift ML 之前,请完成集群设置并配置使用 Amazon Redshift ML 的权限。

用于使用 Amazon Redshift ML 的集群设置

在使用 Amazon Redshift ML 之前,请先完成以下先决条件。

作为 Amazon Redshift 管理员,请执行以下一次性设置。

为 Amazon Redshift ML 执行一次性集群设置:

  1. 使用Amazon Web Services Management Console或 Amazon Command Line Interface(Amazon CLI)创建 Amazon Redshift 集群。确保在创建集群时附上 Amazon Identity and Access Management(IAM)策略。有关将 Amazon Redshift ML 与 Amazon SageMaker 结合使用所需的权限的更多信息,请参阅将 Amazon Redshift 机器学习(ML)与 Amazon SageMaker 结合使用所需的权限

  2. 通过下列方式之一创建使用 Amazon Redshift ML 所需的 IAM 角色:

    • 一个简单的方法是使用 AmazonS3FullAccessAmazonSageMakerFullAccess 策略创建 IAM 角色,以与 Amazon Redshift ML 一起使用。如果您计划还要创建预测模型,请将 AmazonForecastFullAccess 策略也附加到您的角色。

    • 我们建议您通过 Amazon Redshift 控制台创建一个 IAM 角色,该角色拥有 AmazonRedshiftAllCommandsFullAccess 策略,具备运行 SQL 命令(例如 CREATE MODEL)的权限。Amazon Redshift 使用基于 API 的无缝机制以编程方式在您的 Amazon Web Services 账户 中代表您创建 IAM 角色。Amazon Redshift 会自动将现有的 Amazon 托管式策略附加到该 IAM 角色。这种方法表示您可以停留在 Amazon Redshift 控制台中,无需切换到 IAM 控制台进行角色创建。有关更多信息,请参阅为 Amazon Redshift 创建默认 IAM 角色

      创建 IAM 角色作为集群的默认角色时,将 redshift 添加为资源名称的一部分,或使用 RedShift 特定标签来标记这些资源。

      如果您的集群启用了增强型 Amazon VPC 路由,则可以使用通过 Amazon Redshift 控制台创建的 IAM 角色。此 IAM 角色附加 AmazonRedshiftAllCommandsFullAccess 策略并向策略添加以下权限。这些额外权限允许 Amazon Redshift 在您的账户中创建和删除弹性网络接口(ENI),并将其附加到 Amazon EC2 或 Amazon ECS 上运行的编译任务。这样做使您的 Simple Storage Service(Amazon S3)桶中的对象只能通过互联网访问被阻止的 Virtual Private Cloud(VPC)进行访问。

      { "Effect": "Allow", "Action": [ "ec2:DescribeVpcEndpoints", "ec2:DescribeDhcpOptions", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:CreateNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "*" }
    • 如果您要使用更具限制性的策略创建 IAM 角色,您可以使用以下策略。您还可以修改此策略以满足您的需求。

      Amazon S3 桶 redshift-downloads/redshift-ml/ 是存储用于其他步骤和示例的示例数据的位置。如果您不需要从 Simple Storage Service(Amazon S3)加载数据,您可以将其删除。或者,将其替换为您用于将数据加载到 Amazon Redshift 的其他 Simple Storage Service(Amazon S3)桶。

      your-account-idyour-roleyour-s3-bucket 的值是您作为 CREATE MODEL 命令的一部分指定的值。

      (可选)如果您在使用 Amazon Redshift ML 时指定了一个 Amazon KMS 键,请使用示例策略的 Amazon KMS 键部分。your-kms-key 值是作为 CREATE MODEL 命令一部分使用的密钥。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "sagemaker:*Job*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:AbortMultipartUpload", "s3:GetObject", "s3:DeleteObject", "s3:PutObject" ], "Resource": [ "arn:aws:iam::<your-account-id>:role/<your-role>", "arn:aws:s3:::<your-s3-bucket>/*", "arn:aws:s3:::redshift-downloads/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<your-s3-bucket>", "arn:aws:s3:::redshift-downloads" ] } // Optional section needed if you use Amazon KMS keys. ,{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<your-region>:<your-account-id>:key/<your-kms-key>" ] } ] }
  3. 要允许 Amazon Redshift 和 SageMaker 担任角色以与其他服务交互,请将以下信任策略添加到 IAM 角色。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  4. (可选)创建 Simple Storage Service(Amazon S3)桶和 Amazon KMS 密钥。供 Amazon Redshift 用来存储发送到 Amazon SageMaker 的训练数据以及从 Amazon SageMaker 接收训练模型。

  5. (可选)创建 IAM 角色和 Simple Storage Service(Amazon S3)桶的不同组合,以控制对不同用户组的访问。

  6. (可选)当您在 Redshift 集群上启用 VPC 路由时,请为您的 Redshift 集群所在的 VPC 创建 Simple Storage Service(Amazon S3)端点和 SageMaker 端点。这样做使得流量可以在 CREATE MODEL 期间通过您的 VPC 在服务之间运行。有关 VPC 路由的更多信息,请参阅 Amazon Redshift 中的增强型 VPC 路由

    有关为超参数优化任务指定私有 VPC 所需的权限的更多信息,请参阅将 Amazon Redshift ML 与 Amazon SageMaker 结合使用所需的权限

有关如何使用 CREATE MODEL 语句开始为不同的使用案例创建模型的信息,请参阅CREATE MODEL

管理权限和所有权

正如其它数据库对象(例如表或函数)一样,Amazon Redshift 将创建和使用 ML 模型绑定到访问控制机制。这些是创建运行预测函数的模型所需的单独权限。

以下示例使用两个用户组:retention_analyst_grp(模型创建者)和 marketing_analyst_grp(模型用户)来说明 Amazon Redshift 如何管理访问控制。保留分析师创建机器学习模型,其它用户可以通过获得的权限使用这些模型。

超级用户可以使用以下语句授予 USER 或 GROUP 创建机器学习模型的权限。

GRANT CREATE MODEL TO GROUP retention_analyst_grp;

具有此权限的用户或组可以在集群中的任何架构中创建模型,前提是用户对 SCHEMA 具有通常的 CREATE 权限。机器学习模型是架构层次结构的一部分,方式类似于表、视图、过程和用户定义的函数。

假设架构 demo_ml 已存在,请按如下方式授予两个用户组对架构的权限。

GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;

要让其它用户使用机器学习推理函数,请授予 EXECUTE 权限。以下示例使用 EXECUTE 权限授予 marketing_analyst_grp GROUP 使用该模型的权限。

GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;

将 REVOKE 语句与 CREATE MODEL 和 EXECUTE 一起使用,取消用户或组的这些权限。有关权限控制命令的更多信息,请参阅GRANTREVOKE