使用角色管理器 (AWS CDK) - Amazon SageMaker AI

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

使用角色管理器 (AWS CDK)

使用 AWS Cloud Development Kit (AWS CDK) 搭配 Amazon SageMaker Role Manager,以程式設計方式建立角色並設定許可。您可以使用 AWS CDK 來完成您可以使用 執行的任何任務 AWS Management Console。CDK 的程式設計存取可讓您更輕鬆地提供使用者存取特定資源的許可。如需 的詳細資訊 AWS CDK,請參閱什麼是 AWS CDK?

重要

您必須使用 SageMaker AI 運算角色角色來建立 SageMaker AI 運算角色。如需有關運算人物角色的更多相關資訊,請參閱SageMaker AI 運算角色。如需可用於在 中建立運算角色的程式碼 AWS CDK,請參閱 將許可授予運算人物角色

以下是您可以在 AWS CDK中執行的任務範例:

  • 建立具有機器學習 (ML) 人物角色 (例如資料科學家和 MLOp 工程師) 具有細緻許可的 IAM 角色。

  • 從機器學習 (ML) 人物角色或 ML 活動授予 CDK 結構的許可。

  • 設定機器學習 (ML) 活動條件參數。

  • 啟用全域 Amazon VPC 和 AWS Key Management Service 條件,並為其設定值。

  • 為您的使用者從所有機器學習 (ML) 活動的版本中選擇,而不會造成他們的存取中斷。

與使用 SageMaker AI 的機器學習 (ML) 相關的常見 AWS 任務需要特定的 IAM 許可。執行任務的許可在 Amazon SageMaker 角色管理器中定義為機器學習 (ML) 活動。機器學習 (ML) 活動會指定連結至 IAM 角色的一組許可。例如,Amazon SageMaker Studio Classic 的 ML 活動具有使用者存取 Studio Classic 所需的所有許可。如需機器學習 (ML) 活動的更多相關資訊,請參閱機器學習 (ML) 活動參考

當您建立角色時,您必須先定義機器學習 (ML) 角色或 ML 活動的建構。建構是 AWS CDK 堆疊內的資源。例如,建構可以是 Amazon S3 儲存貯體、Amazon VPC 子網路或 IAM 角色。

建立人物角色或活動時,您可以將與該角色或活動關聯的許可限制在特定資源。例如,您可以自訂活動,僅為 Amazon VPC 內的特定子網路提供許可。

定義許可之後,您可以建立角色,然後傳遞這些角色來建立其他資源,例如 SageMaker 筆記本執行個體。

以下是 TypeScript 中的代碼範例,你可以使用 CDK 完成的任務。建立活動時,您可以指定活動建構的 ID 和選項。這些選項是指定活動所需參數的字典,例如 Amazon S3。對於沒有所需參數的活動,您會傳遞空白字典。

下列程式碼會建立資料科學家機器學習 (ML) 人物角色,其中包含一組人物角色特定的 ML 活動。ML 活動的許可僅適用於角色建構中指定的 Amazon VPC 和 AWS KMS 組態。下列程式碼會為資料科學家人物角色建立類別。機器學習 (ML) 活動在活動清單中定義。VPC 許可和 KMS 許可定義為活動清單外的選用參數。

定義 類別之後,您可以在 AWS CDK 堆疊中建立角色做為建構。您也可以建立筆記本執行個體。使用您在下列程式碼中建立的 IAM 角色的人員,可以在他們登入其 AWS 帳戶時存取筆記本執行個體。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.accessAwsServices(this, 'example-id1', {}) ] }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); } }

下列程式碼會建立資料科學家機器學習 (ML) 人物角色,其中包含一組人物角色特定的 ML 活動。機器學習 (ML) 活動的許可僅適用於角色建構中指定的 VPC 和 KMS 組態。下列程式碼會為資料科學家人物角色建立類別。機器學習 (ML) 活動在活動清單中定義。Amazon VPC 許可和 AWS KMS 許可定義為活動清單外的選用參數。

定義 類別之後,您可以在 AWS CDK 堆疊中建立角色做為建構。您也可以建立筆記本執行個體。使用您在下列程式碼中建立的 IAM 角色的人員,可以在他們登入其 AWS 帳戶時存取筆記本執行個體。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageJobs(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageModels(this, 'example-id3', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageExperiments(this, 'example-id4', {}), Activity.visualizeExperiments(this, 'example-id5', {}), Activity.accessS3Buckets(this, 'example-id6', {s3buckets: [s3.S3Bucket.fromBucketName('amzn-s3-demo-bucket')]}) ], // optional: to configure VPC permissions subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], // optional: to configure KMS permissions dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); const notebookInstance = new CfnNotebookInstance(this, 'example-notebook-instance-name', { RoleArn: role.RoleArn, ...}); } }

下列程式碼會建立機器學習 (ML) 操作角色,其中包含一組 ML 活動特定的該角色。ML 活動的許可僅適用於角色建構中指定的 Amazon VPC 和 AWS KMS 組態。下列程式碼會建立 ML Ops 人物角色的類別。機器學習 (ML) 活動在活動清單中定義。VPC 許可和 KMS 許可定義為活動清單外的選用參數。

定義 類別之後,您可以在 AWS CDK 堆疊中建立角色做為建構。您也可以建立 Amazon SageMaker Studio Classic 使用者設定檔。使用您在下列程式碼中建立的 IAM 角色的人員,可以在登入其 AWS 帳戶時開啟 SageMaker Studio Classic。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageModels(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageEndpoints(this, 'example-id3',{rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.managePipelines(this, 'example-id4', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.visualizeExperiments(this, 'example-id5', {}) ], subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = persona.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); let userProfile = new CfnNUserProfile(this, 'example-Studio Classic-profile-name', { RoleName: role.RoleName, ... }); } }

下列程式碼會建立 ML Ops 人物角色,其中包含一組 ML 活動特定的該角色。下列程式碼會建立 ML Ops 人物角色的類別。機器學習 (ML) 活動在活動清單中定義。

定義 類別之後,您可以在 AWS CDK 堆疊中建立角色做為建構。您也可以建立筆記本執行個體。程式碼會將機器學習 (ML) 活動的許可授予 Lambda 函式的 IAM 角色。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const persona = new Persona(this, 'example-persona-id', { activities: [ Activity.runStudioAppsV2(this, 'example-id1', {}), Activity.manageModels(this, 'example-id2', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.manageEndpoints(this, 'example-id3',{rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.managePipelines(this, 'example-id4', {rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')]}), Activity.visualizeExperiments(this, 'example-id5', {}) ], }); const lambdaFn = lambda.Function.fromFunctionName('example-lambda-function-name'); persona.grantPermissionsTo(lambdaFn); } }

下列程式碼會建立機器學習 (ML) 活動,並從活動建立角色。活動的許可僅適用於您為使用者指定的 VPC 和 KMS 組態。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const activity = Activity.manageJobs(this, 'example-activity-id', { rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')], subnets: [ec2.Subnet.fromSubnetId('example-VPC-subnet-id')], securityGroups: [ec2.SecurityGroup.fromSecurityGroupId('example-VPC-security-group-id')], dataKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], volumeKeys: [kms.Key.fromKeyArn('example-KMS-key-ARN')], }); const role = activity.createRole(this, 'example-IAM-role-id', 'example-IAM-role-name'); } }

下列程式碼會為單一機器學習 (ML) 活動建立 IAM 角色。

export class myCDKStack extends cdk.Stack { constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { super(scope, id, props); const activity = Activity.manageJobs(this, 'example-activity-id', { rolesToPass: [iam.Role.fromRoleName('example-IAM-role-name')], }); activity.create_role(this, 'example-IAM-role-id', 'example-IAM-role-name') } }