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

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

使用角色管理器 (AWS CDK)

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

重要

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

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

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

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

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

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

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

有一些與機器學習 (ML) 相關的一般 AWS 工作需 SageMaker 要特定的 IAM 許可。執行任務的許可定義為 Amazon SageMaker 角色管理員中的 ML 活動。機器學習 (ML) 活動會指定連結至 IAM 角色的一組許可。例如,Amazon SageMaker 工作室傳統版的 ML 活動具有使用者存取工作室傳統版所需的所有許可。如需機器學習 (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('DOC-EXAMPLE-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 工作室經典版使用者設定檔。使用您在下列程式碼中建立的 IAM 角色的人員可以在登入 AWS 帳戶時開啟 SageMaker Studio 傳統版。

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') } }