ロールマネージャー (AWS CDK) の使用 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ロールマネージャー (AWS CDK) の使用

Amazon SageMaker Role Manager AWS Cloud Development Kit (AWS CDK) で を使用して、プログラムでロールを作成し、アクセス許可を設定します。を使用して AWS CDK 、 を使用して実行できるタスクをすべて実行できます AWS Management Console。CDK へのプログラムによる アクセスによって、特定のリソースへのアクセスを許可するアクセス許可をユーザーに付与しやすくなります。の詳細については AWS CDK、「 とは」を参照してください AWS CDK。

重要

SageMaker コンピューティングロールを作成するには、 SageMaker コンピューティングロールペルソナを使用する必要があります。コンピューティングペルソナの詳細については、「SageMaker コンピューティングペルソナ」を参照してください。内でコンピューティングロールを作成するために使用できるコードについては AWS CDK、「」を参照してくださいコンピューティングペルソナにアクセス許可を付与する

AWS CDKで実行できるタスクの例を以下に示します。

  • データサイエンティストや MLOps エンジニアなどの機械学習 (ML) ペルソナ向けに、きめ細かいアクセス許可を持つ IAM ロールを作成します。

  • ML ペルソナや ML アクティビティから CDK コンストラクトにアクセス許可を付与します。

  • ML アクティビティの条件パラメータを設定します。

  • グローバル Amazon VPC と AWS Key Management Service 条件を有効にし、それらの値を設定します。

  • アクセスを中断することなく、ユーザー向けの ML アクティビティのすべてのバージョンから選択できます。

機械学習 (ML) に関連する一般的な AWS タスクには SageMaker 、特定の IAM アクセス許可が必要です。タスクを実行するアクセス許可は、Amazon SageMaker Role Manager の ML アクティビティとして定義されます。ML アクティビティは IAM ロールにリンクされた一連のアクセス許可を指定します。例えば、Amazon SageMaker Studio Classic の ML アクティビティには、ユーザーが Studio Classic にアクセスするために必要なすべてのアクセス許可があります。ML アクティビティの詳細については、「ML アクティビティリファレンス」を参照してください。

ロールを作成するときは、まず ML ペルソナまたは ML アクティビティのコンストラクトを定義します。コンストラクトはスタック内のリソースです AWS CDK 。例えば、コンストラクトとして Amazon S3 バケット、Amazon VPC サブネット、または IAM ロールが考えられます。

ペルソナまたはアクティビティを作成するときに、そのペルソナまたはアクティビティに関連するアクセス許可を特定のリソースに制限できます。例えば、Amazon VPC 内の特定のサブネットのみにアクセス許可を付与するようにアクティビティをカスタマイズできます。

アクセス許可を定義したら、ロールを作成し、そのロールを渡してノートブック SageMaker インスタンスなどの他のリソースを作成できます。

以下は CDK を使用して実行できるタスクの Typescript のコード例です。アクティビティを作成するときは、アクティビティのコンストラクトの 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 アクティビティを含む MLOps ペルソナを作成します。ML アクティビティからのアクセス許可は、ペルソナコンストラクトで指定された Amazon VPC と AWS KMS 設定にのみ適用されます。次のコードは、MLOps ペルソナのクラスを作成します。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 アクティビティを含む MLOps ペルソナを作成します。次のコードは、MLOps ペルソナのクラスを作成します。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'); } }

次のコードは、1 つの 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') } }