Menggunakan manajer peran (AWS CDK) - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan manajer peran (AWS CDK)

Gunakan AWS Cloud Development Kit (AWS CDK) dengan Amazon SageMaker Role Manager untuk membuat peran secara terprogram dan menetapkan izin. Anda dapat menggunakan AWS CDK untuk menyelesaikan tugas apa pun yang dapat Anda lakukan menggunakan. AWS Management Console Akses terprogram CDK membuatnya lebih mudah untuk memberikan izin yang memberi pengguna Anda akses ke sumber daya tertentu. Untuk informasi lebih lanjut tentang AWS CDK, lihat Apa itu AWS CDK?

penting

Anda harus menggunakan persona Peran SageMaker Komputasi untuk membuat Peran SageMaker Komputasi. Untuk informasi lebih lanjut tentang komputasi persona, lihat. SageMaker menghitung persona Untuk kode yang dapat Anda gunakan untuk membuat peran komputasi di dalamnya AWS CDK, lihatBerikan izin ke persona Compute.

Berikut ini adalah contoh tugas yang dapat Anda lakukan di AWS CDK:

  • Buat peran IAM dengan izin granular untuk persona pembelajaran mesin (ML), seperti Ilmuwan Data dan Insinyur MLOP.

  • Berikan izin untuk konstruksi CDK dari persona ML atau aktivitas ML.

  • Tetapkan parameter kondisi aktivitas ML.

  • Aktifkan VPC dan AWS Key Management Service kondisi Amazon global dan tetapkan nilainya.

  • Pilih dari semua versi aktivitas ML untuk pengguna Anda tanpa menyebabkan gangguan pada akses mereka.

Ada AWS tugas umum yang terkait dengan pembelajaran mesin (ML) dengan SageMaker yang memerlukan izin IAM tertentu. Izin untuk melakukan tugas didefinisikan sebagai aktivitas ML di Amazon SageMaker Role Manager. Aktivitas ML menentukan satu set izin yang ditautkan ke peran IAM. Misalnya, aktivitas ML untuk Amazon SageMaker Studio Classic memiliki semua izin yang diperlukan pengguna untuk mengakses Studio Classic. Untuk informasi selengkapnya tentang aktivitas ML, lihatReferensi aktivitas ML.

Saat Anda membuat peran, pertama-tama Anda menentukan konstruksi untuk persona ML atau aktivitas ML. Konstruksi adalah sumber daya dalam AWS CDK tumpukan. Misalnya, konstruksi bisa berupa bucket Amazon S3, subnet Amazon VPC, atau peran IAM.

Saat Anda membuat persona atau aktivitas, Anda dapat membatasi izin yang terkait dengan persona atau aktivitas tersebut ke sumber daya tertentu. Misalnya, Anda dapat menyesuaikan aktivitas agar hanya memberikan izin untuk subnet tertentu dalam VPC Amazon.

Setelah menetapkan izin, Anda dapat membuat peran dan meneruskan peran tersebut untuk membuat sumber daya lain, seperti instance SageMaker buku catatan.

Berikut ini adalah contoh kode di TypeScript untuk tugas yang dapat Anda selesaikan menggunakan CDK. Saat membuat aktivitas, Anda menentukan ID dan opsi untuk konstruksi aktivitas. Opsi adalah kamus yang menentukan parameter yang diperlukan untuk aktivitas, seperti Amazon S3. Anda meneruskan kamus kosong untuk aktivitas yang tidak memiliki parameter yang diperlukan.

Kode berikut membuat persona Data Scientist MLdengan satu set aktivitas ML khusus untuk persona. Izin dari aktivitas ML hanya berlaku untuk VPC Amazon AWS KMS dan konfigurasi yang ditentukan dalam konstruksi persona. Kode berikut membuat kelas untuk persona Data Scientist. Aktivitas ML didefinisikan dalam daftar aktivitas. Izin VPC dan izin KMS didefinisikan sebagai parameter opsional di luar daftar aktivitas.

Setelah Anda mendefinisikan kelas, Anda dapat membuat peran sebagai konstruksi dalam AWS CDK tumpukan. Anda juga dapat membuat instance notebook. Orang yang menggunakan peran IAM yang Anda buat dalam kode berikut dapat mengakses instance notebook saat mereka masuk ke AWS akun mereka.

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

Kode berikut membuat persona Data Scientist MLdengan satu set aktivitas ML khusus untuk persona. Izin dari aktivitas ML hanya berlaku untuk konfigurasi VPC dan KMS yang ditentukan dalam konstruksi persona. Kode berikut membuat kelas untuk persona Data Scientist. Aktivitas ML didefinisikan dalam daftar aktivitas. Izin VPC Amazon dan izin didefinisikan sebagai parameter opsional di luar daftar aktivitas. AWS KMS

Setelah Anda mendefinisikan kelas, Anda dapat membuat peran sebagai konstruksi dalam AWS CDK tumpukan. Anda juga dapat membuat instance notebook. Orang yang menggunakan peran IAM yang Anda buat dalam kode berikut dapat mengakses instance notebook saat mereka masuk ke AWS akun mereka.

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, ...}); } }

Kode berikut membuat persona Ops MLdengan satu set aktivitas ML khusus untuk persona. Izin dari aktivitas ML hanya berlaku untuk VPC Amazon AWS KMS dan konfigurasi yang ditentukan dalam konstruksi persona. Kode berikut membuat kelas untuk persona Ops Ops. Aktivitas ML didefinisikan dalam daftar aktivitas. Izin VPC dan izin KMS didefinisikan sebagai parameter opsional di luar daftar aktivitas.

Setelah Anda mendefinisikan kelas, Anda dapat membuat peran sebagai konstruksi dalam AWS CDK tumpukan. Anda juga dapat membuat profil pengguna Amazon SageMaker Studio Classic. Orang yang menggunakan peran IAM yang Anda buat dalam kode berikut dapat membuka SageMaker Studio Classic saat mereka masuk ke AWS akun mereka.

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, ... }); } }

Kode berikut membuat persona Ops MLdengan satu set aktivitas ML khusus untuk persona. Kode berikut membuat kelas untuk persona Ops Ops. Aktivitas ML didefinisikan dalam daftar aktivitas.

Setelah Anda mendefinisikan kelas, Anda dapat membuat peran sebagai konstruksi dalam AWS CDK tumpukan. Anda juga dapat membuat instance notebook. Kode memberikan izin dari aktivitas ML ke peran IAM dari fungsi Lambda.

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

Kode berikut membuat aktivitas ML dan membuat peran dari aktivitas. Izin dari aktivitas hanya berlaku untuk konfigurasi VPC dan KMS yang Anda tentukan untuk pengguna.

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

Kode berikut membuat peran IAM untuk aktivitas MLtunggal.

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