針對 Amazon Redshift ML 管理進行叢集和組態設定 - Amazon Redshift

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

針對 Amazon Redshift ML 管理進行叢集和組態設定

在您使用 Amazon Redshift ML 之前,請先完成叢集設定並設定使用 Amazon Redshift ML 的許可。

使用 Amazon Redshift ML 的叢集設定

使用 Amazon Redshift ML 之前,請先完成以下先決條件。

身為 Amazon Redshift 管理員,請執行下列一次性設定。

若要為 Amazon Redshift ML 執行一次性叢集設定

  1. 使用 AWS Management Console 或 AWS Command Line Interface (AWS CLI) 建立 Redshift 叢集。建立叢集時,請務必附加 AWS Identity and Access Management (IAM) 政策。如需將 Amazon Redshift ML 與 Amazon 搭配使用所需許可的詳細資訊 SageMaker,請參閱將 Amazon Redshift 機器學習 (ML) 與亞馬遜搭配使用所需的許可。 SageMaker

  2. 使用下列其中一個方法,建立使用 Amazon Redshift ML 所需的 IAM 角色:

    • 其中一個簡單的操作是搭配 AmazonS3FullAccessAmazonSageMakerFullAccess 政策建立一個 IAM 角色,以與 Amazon Redshift ML 搭配使用。如果您打算同時建立預測模型,也可以將 AmazonForecastFullAccess 政策附加至您的角色。

    • 我們建議您透過 Amazon Redshift 主控台建立 IAM 角色,其具有有權執行 SQL 命令 (例如 CREATE MODEL) 的 AmazonRedshiftAllCommandsFullAccess 政策。Amazon Redshift 使用順暢的 API 型機制,以程式設計方式代表您 AWS 帳戶 建立 IAM 角色。Amazon Redshift 會自動將現有的 AWS 受管政策附加到 IAM 角色。此方法意味著您可以保留在 Amazon Redshift 主控台內,而不必切換到 IAM 主控台來建立角色。如需詳細資訊,請參閱建立 IAM 角色做為 Amazon Redshift 的預設值

      當 IAM 角色建立為叢集的預設值時,請加入 redshift 做為資源名稱的一部分,或使用 RedShift 專屬標籤來標記這些資源。

      如果您的叢集已開啟增強型 Amazon VPC 路由,您可以使用透過 Amazon Redshift 主控台建立的 IAM 角色。此 IAM 角色已附加 AmazonRedshiftAllCommandsFullAccess 政策,並將以下許可新增到政策中。這些額外許可會允許 Amazon Redshift 建立和刪除您帳戶中的彈性網絡介面 (ENI),並將其附加到 Amazon EC2 或 Amazon ECS 上執行的編譯工作。如此一來,Amazon S3 儲存貯體中的物件只能從虛擬私有雲端 (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/ 是用於其他步驟和範例之範例資料的儲存所在位置。如果您不需要從 Amazon S3 載入資料,則可以將其移除。或者,也可以將其取代為您用來將資料載入 Amazon Redshift 的其他 Amazon S3 儲存貯體。

      your-account-idyour-roleyour-s3-bucket 值是您在 CREATE MODEL 命令中指定的值。

      (選擇性) 如果您在使用 Amazon Redshift ML 時指定 AWS KMS 金鑰,請使用 AWS 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 AWS 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. (選擇性) 建立 Amazon S3 儲存貯體和 AWS KMS 金鑰。這些是供 Amazon Redshift 用於存儲發送到 Amazon 的培訓數據, SageMaker 並從 Amazon SageMaker 接收訓練過的模型。

  5. (選擇性) 建立 IAM 角色和 Amazon S3 儲存貯體的不同組合,以控制對不同使用者群組的存取。

  6. (選擇性) 為 Redshift 叢集開啟 VPC 人雲端路由時,請為 Redshift 叢集所在的 VPC 人雲 SageMaker 端建立 Amazon S3 端點和端點。這樣做可在 CREATE MODEL 期間,讓服務之間的流量通過您的 VPC。如需 VPC 路由的相關資訊,請參閱 Amazon Redshift 中的增強型 VPC 路由

    如需為超參數調整任務指定私有 VPC 所需許可的詳細資訊,請參閱將 Amazon Redshift ML 與 Amazon 搭配使用所需的許可。 SageMaker

如需有關如何使用 CREATE MODEL 陳述式開始針對不同使用案例建立模型的資訊,請參閱 CREATE MODEL

管理許可和擁有權

就像其他資料庫物件 (例如資料表或函數) 一樣,Amazon Redshift 會繫結建立和使用機器學習模型來存取控制機制。建立執行預測函數的模型有不同的許可。

下列範例使用兩個使用者群組 retention_analyst_grp (模型建立者) 和 marketing_analyst_grp (模型使用者) 來說明 Amazon Redshift 如何管理存取控制。保留分析師會建立機器學習模型,讓其他一組使用者可透過取得的許可使用這些模型。

超級使用者可以使用下列陳述式 GRANT (授予) 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;

搭配 CREATE MODEL 和 EXECUTE 使用 REVERSE 陳述式,可撤銷使用者或群組的這些許可。如需許可控制命令的相關資訊,請參閱 GRANTREVOKE