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

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

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

  • ML ペルソナまたは ML アクティビティからCDK構築するアクセス許可を付与します。

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

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

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

機械学習 (ML) に関連する一般的な AWS タスクには、特定のIAMアクセス許可を必要とする SageMaker があります。タスクを実行するアクセス許可は、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 ノートブックインスタンスなどの他のリソースを作成できます。

を使用して実行できるタスクの 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 アクティビティを含む 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'); } }

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