Rekayasa fitur berskala besar dengan perlindungan data sensitif menggunakan sesi interaktif AWS Glue dan Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Rekayasa fitur berskala besar dengan perlindungan data sensitif menggunakan sesi interaktif AWS Glue dan Amazon SageMaker Studio

Organisasi menggunakan pembelajaran mesin (ML) dan layanan AI untuk meningkatkan pengalaman pelanggan, mengurangi biaya operasional, dan membuka peluang baru untuk meningkatkan hasil bisnis. Data mendukung kasus penggunaan ML dan AI dan merupakan aset strategis bagi organisasi. Saat data tumbuh dengan kecepatan eksponensial, organisasi ingin menyiapkan platform data yang terintegrasi, hemat biaya, dan berperforma baik untuk melakukan praproses data, melakukan rekayasa fitur, serta membangun, melatih, dan mengoperasionalkan model ML dalam skala besar. Untuk mencapainya, AWS menawarkan platform data modern terpadu yang didukung oleh Layanan Penyimpanan Sederhana Amazon (Amazon S3) sebagai data lake dengan alat yang dibuat khusus dan mesin pemrosesan untuk mendukung analitik dan beban kerja ML. Untuk pengalaman ML terpadu, Anda dapat menggunakan Studio Amazon SageMaker, Yang menawarkan integrasi asli dengan sesi interaktif AWS Glue untuk melakukan rekayasa fitur dalam skala besar dengan perlindungan data sensitif. Dalam posting ini, kami menunjukkan bagaimana menerapkan solusi ini.

Amazon SageMaker adalah layanan ML terkelola sepenuhnya yang memungkinkan Anda membuat, melatih, dan menerapkan model dalam skala besar untuk berbagai kasus penggunaan. Untuk pelatihan model, Anda dapat menggunakan salah satu dari algoritme bawaan dalam SageMaker untuk mulai melatih dan menerapkan model ML dengan cepat.

Komponen kunci dari proses pembangunan dan pengembangan model adalah rekayasa fitur. Lem AWS adalah salah satu opsi yang disarankan untuk mencapai rekayasa fitur dalam skala besar. AWS Glue memungkinkan Anda menjalankan integrasi dan transformasi data secara terdistribusi pada infrastruktur Apache Spark tanpa server, dan memudahkan penggunaan pustaka Spark ML yang populer untuk rekayasa fitur dan pengembangan model. Selain itu, Anda dapat menggunakan AWS Glue untuk pemrosesan data bertahap penanda pekerjaan, menyerap data dari lebih dari 100 sumber menggunakan konektor, dan jalankan beban kerja yang tajam atau tidak dapat diprediksi menggunakan penskalaan otomatis.

Persyaratan penting lainnya untuk aplikasi berbasis ML adalah keamanan data dan kontrol akses. Sudah menjadi tuntutan umum untuk memiliki kontrol yang lebih ketat pada siapa yang dapat mengakses data paling sensitif sebagai bagian dari proses pembuatan model dan rekayasa fitur dengan mengikuti prinsip akses dengan hak istimewa terkecil. Untuk mencapai ini, Anda dapat memanfaatkan integrasi AWS Glue dengan Formasi Danau AWS untuk peningkatan tata kelola dan pengelolaan aset data lake. Dengan Lake Formation, Anda dapat mengonfigurasi kebijakan keamanan dan kontrol akses data terperinci di atas data lake Amazon S3 Anda. Kebijakan ditentukan di satu lokasi terpusat, yang memungkinkan beberapa analitik dan layanan ML, seperti AWS Glue, Amazon Athena, dan SageMaker, untuk berinteraksi dengan data yang disimpan di Amazon S3.

Lem AWS mencakup a deteksi informasi identitas pribadi (PII). transformasi yang memberikan kemampuan untuk mendeteksi, menyamarkan, atau menghapus entitas sebagaimana diperlukan, untuk meningkatkan kepatuhan dan tata kelola. Dengan transformasi PII, Anda dapat mendeteksi data PII dalam kumpulan data dan secara otomatis menerapkan kontrol akses terperinci menggunakan Lake Formation untuk membatasi data sensitif bagi grup pengguna yang berbeda.

Gunakan kasing

Kami fokus pada kasus penggunaan model kecenderungan yang mencakup kumpulan data pemasaran pelanggan dan melibatkan dua persona pengguna: seorang insinyur data dan ilmuwan data. Kumpulan data berisi informasi per pelanggan, termasuk sumber prospek, catatan kontak, peran pekerjaan, beberapa bendera, tampilan halaman per kunjungan, dan banyak lagi. Kumpulan data juga mencakup informasi sensitif seperti nomor telepon pribadi.

Insinyur data bertanggung jawab untuk membangun pipa pemrosesan data ujung ke ujung, termasuk persiapan data, prapemrosesan, dan kontrol akses. Ilmuwan data bertanggung jawab atas rekayasa fitur, serta melatih dan menerapkan model ML. Perhatikan bahwa ilmuwan data tidak diizinkan mengakses data sensitif PII apa pun untuk rekayasa fitur atau melatih model ML.

Sebagai bagian dari kasus penggunaan ini, teknisi data membuat pipeline data untuk memproses awal set data, memindai set data untuk informasi PII apa pun, dan membatasi akses kolom PII ke pengguna ilmuwan data. Akibatnya, saat data scientist menggunakan set data untuk melakukan rekayasa fitur dan membuat model ML, mereka tidak memiliki akses ke kolom sensitif PII (dalam hal ini nomor telepon). Proses rekayasa fitur melibatkan konversi kolom tipe string ke format yang optimal untuk model ML. Sebagai kasus penggunaan tingkat lanjut, Anda dapat memperluas pola akses ini untuk menerapkan keamanan tingkat baris dan tingkat sel menggunakan Lake Formation.

Ikhtisar solusi

Solusinya berisi langkah-langkah tingkat tinggi berikut:

  1. Siapkan sumber daya dengan Formasi AWS Cloud.
  2. Praproses dataset, termasuk deteksi PII dan kontrol akses terperinci, pada sesi interaktif AWS Glue.
  3. Lakukan rekayasa fitur pada sesi interaktif AWS Glue.
  4. Latih dan terapkan model ML menggunakan algoritme XGBoost bawaan SageMaker.
  5. Evaluasi model ML.

Diagram berikut menggambarkan arsitektur solusi.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus memiliki prasyarat berikut:

Siapkan sumber daya dengan AWS CloudFormation

Posting ini menyertakan template CloudFormation untuk pengaturan cepat. Anda dapat meninjau dan menyesuaikannya sesuai dengan kebutuhan Anda. Jika Anda lebih suka menyiapkan sumber daya di Konsol Manajemen AWS dan AWS CLI daripada AWS CloudFormation, lihat instruksi di lampiran di akhir posting ini.

Template CloudFormation menghasilkan sumber daya berikut:

  • Bucket S3 dengan kumpulan data sampel
  • An AWS Lambda berfungsi untuk memuat dataset
  • Identitas AWS dan Manajemen Akses (IAM) grup, pengguna, peran, dan kebijakan
  • Pengaturan dan izin danau data Lake Formation
  • Profil pengguna SageMaker

Untuk membuat sumber daya Anda, selesaikan langkah-langkah berikut:

  1. Masuk ke konsol.
  2. Pilih Luncurkan Stack:
    Tombol peluncuran
  3. Pilih Selanjutnya.
  4. Untuk Insinyur DataPwd dan Ilmuwan DataPwd, masukkan kata sandi Anda sendiri untuk pengguna data engineer dan data scientist.
  5. Untuk NamaDatabase Lem, Masuk demo.
  6. Untuk NamaTabel Lem, Masuk web_marketing.
  7. Untuk S3BucketNameForInput, Masuk blog-studio-pii-dataset-.
  8. Untuk S3BucketNameForOutput, Masuk blog-studio-output-.
  9. Untuk SageMakerDomainId, masukkan ID domain SageMaker yang Anda siapkan di langkah prasyarat.
  10. Pilih Selanjutnya.
  11. Di halaman berikutnya, pilih Selanjutnya.
  12. Tinjau detailnya di halaman terakhir dan pilih Saya mengakui bahwa AWS CloudFormation dapat menciptakan sumber daya IAM.
  13. Pilih membuat.

Pembuatan tumpukan dapat memakan waktu hingga 10 menit. Tumpukan membuat peran IAM dan profil pengguna SageMaker untuk dua persona: insinyur data dan ilmuwan data. Itu juga membuat demo dan tabel basis data web_marketing dengan kumpulan data sampel.

Pada saat pembuatan stack, persona data engineer memiliki akses penuh ke tabel, tetapi persona data scientist belum memiliki akses ke tabel.

Praproses dataset

Mari mulai praproses data pada sesi interaktif AWS Glue. Persona data engineer ingin memverifikasi data untuk melihat apakah ada data sensitif atau tidak, dan memberikan izin akses minimal kepada persona data scientist. Anda dapat mengunduh buku catatan dari lokasi ini.

  1. Masuk ke konsol menggunakan pengguna insinyur data.
  2. Di konsol SageMaker, pilih pengguna.
  3. Pilih pengguna insinyur data dan pilih Buka Studio.
  4. Buat buku catatan baru dan pilih SparkAnalytics 1.0 untuk Gambar dan Lem PySpark untuk Inti.
  5. Mulai sesi interaktif dengan keajaiban berikut untuk menginstal versi Boto3 yang lebih baru (ini diperlukan untuk menggunakan create_data_cells_filter metode):
    %additional_python_modules boto3==1.24.82

  6. Inisialisasi sesi:
    import boto3
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    sc = SparkContext.getOrCreate()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)

  7. Buat AWS Glue DynamicFrame dari tabel yang baru dibuat, dan menyelesaikan jenis pilihan berdasarkan skema katalog, karena kami ingin menggunakan skema yang ditentukan dalam katalog alih-alih skema yang disimpulkan secara otomatis berdasarkan data:
    dyf_marketing = glueContext.create_dynamic_frame.from_catalog(
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing_resolved = dyf_marketing.resolveChoice(
    choice="match_catalog",
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing_resolved.printSchema()

  8. Validasi dalam tabel apakah ada data PII menggunakan deteksi PII AWS Glue:
    from awsglueml.transforms import EntityDetector
    
    entities_filter = [
    "EMAIL",
    "CREDIT_CARD",
    "IP_ADDRESS",
    "MAC_ADDRESS",
    "PHONE_NUMBER"
    ]
    entity_detector = EntityDetector()
    classified_map = entity_detector.classify_columns(dyf_marketing_resolved, entities_filter, 1.0, 0.1)
    print(classified_map)

  9. Verifikasi apakah kolom yang diklasifikasikan sebagai PII berisi data sensitif atau tidak (jika tidak, perbarui class_map untuk menghapus kolom yang tidak sensitif):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Siapkan izin Lake Formation menggunakan filter sel data untuk kolom yang terdeteksi secara otomatis, dan batasi kolom untuk persona ilmuwan data:
    lakeformation = boto3.client('lakeformation')
    sts = boto3.client('sts')
    
    account_id = sts.get_caller_identity().get('Account')
    
    # Create a data cell filter for excluding phone_number column
    lakeformation.create_data_cells_filter(
    TableData={
    'TableCatalogId': account_id,
    'DatabaseName': 'demo',
    'TableName': 'web_marketing',
    'Name': 'pii',
    'RowFilter': {
    'AllRowsWildcard': {}
    
    },
    'ColumnWildcard': {
    'ExcludedColumnNames': list(classified_map.keys())
    }
    }
    )
    
    # Grant permission on the data cell filter
    lakeformation.grant_permissions(
    Principal={
    'DataLakePrincipalIdentifier': f'arn:aws:iam::{account_id}:role/SageMakerStudioExecutionRole_data-scientist'
    },
    Resource={
    'DataCellsFilter': {
    'TableCatalogId': account_id,
    'DatabaseName': 'demo',
    'TableName': 'web_marketing',
    'Name': 'pii'
    }
    },
    Permissions=[
    'SELECT'
    ]
    )

  11. Masuk ke Studio sebagai ilmuwan data untuk melihat bahwa kolom PII tidak terlihat. Anda dapat mengunduh buku catatan dari lokasi ini.
  12. Buat buku catatan baru dan pilih SparkAnalytics 1.0 untuk Gambar dan Lem PySpark untuk Inti:
    import boto3
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    sc = SparkContext.getOrCreate()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    
    dyf_marketing = glueContext.create_dynamic_frame.from_catalog(
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing.printSchema()

Lakukan rekayasa fitur

Kami menggunakan pustaka Apache Spark ML untuk melakukan rekayasa fitur sebagai pengguna data-scientist dan kemudian menulis kembali hasilnya ke Amazon S3.

  1. Di sel berikut, kami menerapkan fitur dari Pustaka Apache Spark ML:
    • StringIndexer memetakan kolom string label ke kolom indeks label.
    • OneHotEncoder memetakan fitur kategorikal, yang direpresentasikan sebagai indeks label, ke vektor biner dengan paling banyak satu nilai tunggal yang menunjukkan adanya fitur kategorikal tertentu. Transformasi ini digunakan untuk algoritme ML yang mengharapkan fitur berkelanjutan.
    • VectorAssembler adalah transformator yang menggabungkan daftar kolom tertentu menjadi satu kolom vektor, yang kemudian digunakan dalam melatih model ML untuk algoritme seperti regresi logistik dan pohon keputusan.
    #feature engineering by using string indexer and one hot encoding from spark ML library
    from pyspark.ml.feature import StringIndexer, VectorIndexer, OneHotEncoder, VectorAssembler
    from pyspark.ml import Pipeline
    
    cols = ['lastcampaignactivity','region','viewedadvertisement','usedpromo','jobrole']
    
    int_cols = ['pageviewspervisit','totaltimeonwebsite','totalwebvisits',]
    
    indexers = [
    StringIndexer(inputCol=c, outputCol="{0}_indexed".format(c))
    for c in cols
    ]
    
    encoders = [
    OneHotEncoder(
    inputCol=indexer.getOutputCol(),
    outputCol="{0}_encoded".format(indexer.getOutputCol()))
    for indexer in indexers
    ]
    
    assembler = VectorAssembler(
    inputCols=[encoder.getOutputCol() for encoder in encoders]+int_cols,
    outputCol="features"
    )

  2. DataFrame akhir yang diubah dapat dibuat menggunakan pustaka Pipeline. Sebuah pipa ditentukan sebagai urutan tahapan. Tahapan ini dijalankan secara berurutan dan input DataFrame diubah saat melewati setiap tahapan.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Selanjutnya, kami membagi set data menjadi melatih, memvalidasi, dan menguji DataFrame dan menyimpannya di bucket S3 untuk melatih model ML (berikan ID akun AWS Anda dalam kode berikut):
    from pyspark.ml.functions import vector_to_array
    
    #set s3 output location for feature engineering output
    bucket='blog-studio-output-'
    
    #convert sparse to dense vector
    df_tfm=df_tfm.select('converted',vector_to_array("features").alias("features_array"))
    
    #split features array into individual columns
    df_tfm=df_tfm.select([df_tfm.converted] + [df_tfm.features_array[i] for i in range(17)])
    
    #split the overall dataset into 70-20-10 training , validation and test
    (train_df, validation_df, test_df) = df_tfm.randomSplit([0.7,0.2,0.1])
    
    #write back train, validation and test datasets to S3
    train_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/training/'.format(bucket))
    
    validation_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/validation/'.format(bucket))
    
    test_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/test/'.format(bucket))

Latih dan terapkan model ML

Di bagian sebelumnya, kami telah menyelesaikan rekayasa fitur, termasuk mengonversi kolom string seperti region, jobrole, dan usedpromo ke dalam format yang optimal untuk model ML. Kami juga menyertakan kolom seperti pageviewspervisit dan totalwebvisits, yang akan membantu kami memprediksi kecenderungan pelanggan untuk membeli produk.

Kami sekarang melatih model ML dengan membaca dataset pelatihan dan validasi menggunakan algoritme XGBoost bawaan SageMaker. Kemudian kami menerapkan model dan menjalankan pemeriksaan akurasi. Anda dapat mengunduh buku catatan dari lokasi ini.

Di sel berikut, kami membaca data dari bucket S3 kedua, yang menyertakan output dari operasi rekayasa fitur kami. Kemudian kami menggunakan algoritme bawaan XGBoost untuk melatih model.

  1. Buka buku catatan baru. Memilih Ilmu Data untuk Gambar dan Python 3 untuk Inti (berikan ID akun AWS Anda dalam kode berikut):
    #set s3 bucket location for training data
    import sagemaker
    import boto3
    from sagemaker import get_execution_role
    
    container = sagemaker.image_uris.retrieve(region=boto3.Session().region_name,
    framework='xgboost', version='latest')
    bucket='blog-studio-output-'
    prefix='web-marketing/processed'
    
    #read train and validation input datasets
    s3_input_train = sagemaker.inputs.TrainingInput(s3_data='s3://{}/{}/training/'
    .format(bucket, prefix), content_type='csv')
    s3_input_validation = sagemaker.inputs.TrainingInput(s3_data='s3://{}/{}/validation/'
    .format(bucket, prefix), content_type='csv')
    
    #train xgb model
    sess = sagemaker.Session()
    from sagemaker import get_execution_role
    
    xgb = sagemaker.estimator.Estimator(
    container,
    role=get_execution_role(),
    instance_count=1,
    instance_type='ml.m4.xlarge',
    output_path='s3://{}/{}/output'
    .format(bucket, prefix),
    sagemaker_session=sess
    )
    
    xgb.set_hyperparameters(
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.8,
    silent=0,
    objective='binary:logistic',
    num_round=100
    )
    
    xgb.fit({'train': s3_input_train, 'validation': s3_input_validation})

  2. Saat pelatihan selesai, kami dapat menerapkan model menggunakan layanan hosting SageMaker:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Evaluasi model ML

Kami menggunakan kumpulan data pengujian untuk mengevaluasi model dan menghapus titik akhir inferensi setelah selesai untuk menghindari biaya berkelanjutan.

  1. Evaluasi model dengan kode berikut:
    #create csv serialiser to run accuracy on test dataset
    xgb_predictor.serializer = sagemaker.serializers.CSVSerializer()
    
    #read test dataset
    import io
    import pandas as pd
    
    s3 = boto3.resource('s3')
    bucket_obj = s3.Bucket(bucket)
    
    test_line = []
    test_objs = bucket_obj.objects.filter(Prefix="web-marketing/processed/test")
    for obj in test_objs:
    try:
    key = obj.key
    body = obj.get()['Body'].read()
    temp = pd.read_csv(io.BytesIO(body),header=None, encoding='utf8',sep=',')
    test_line.append(temp)
    except:
    continue
    
    test_df = pd.concat(test_line)
    
    #predict results using deployed model
    import numpy as np
    def predict(data, predictor, rows=500 ):
    split_array = np.array_split(data, int(data.shape[0] / float(rows) + 1))
    predictions = ''
    for array in split_array:
    predictions = ','.join([predictions, predictor.predict(array).decode('utf-8')])
    return np.fromstring(predictions[1:], sep=',')
    
    #drop the target variable in test_df and make prediction
    predictions = predict(test_df.drop(test_df.columns[0], axis=1).to_numpy(), xgb_predictor)
    
    #calculate accuracy using sklearn library
    from sklearn.metrics import accuracy_score, confusion_matrix
    y_pred=np.round(predictions)
    y_true=test_df.iloc[:,0].values.tolist()
    print('Accuracy score: ',accuracy_score(y_true, y_pred))
    print('Confusion matrix: n',confusion_matrix(y_true, y_pred))

    Hasil akurasi untuk sample run adalah 84.6 %. Ini bisa sedikit berbeda untuk proses Anda karena pemisahan acak dari kumpulan data.

  2. Kami dapat menghapus titik akhir inferensi dengan kode berikut:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Membersihkan

Sekarang ke langkah terakhir, membersihkan sumber daya.

  1. Kosongkan dua keranjang yang dibuat melalui tumpukan CloudFormation.
  2. Hapus aplikasi yang terkait dengan pengguna profiles data-scientist dan data-engineer dalam Studio.
  3. Hapus tumpukan CloudFormation.

Kesimpulan

Dalam postingan ini, kami mendemonstrasikan solusi yang memungkinkan persona seperti insinyur data dan ilmuwan data untuk melakukan rekayasa fitur dalam skala besar. Dengan sesi interaktif AWS Glue, Anda dapat dengan mudah mencapai rekayasa fitur dalam skala besar dengan deteksi PII otomatis dan kontrol akses terperinci tanpa perlu mengelola infrastruktur dasar apa pun. Dengan menggunakan Studio sebagai titik masuk tunggal, Anda bisa mendapatkan pengalaman yang disederhanakan dan terintegrasi untuk membangun alur kerja ML end-to-end: mulai dari menyiapkan dan mengamankan data hingga membuat, melatih, menyesuaikan, dan menerapkan model ML. Untuk mempelajari lebih lanjut, kunjungi Memulai sesi interaktif AWS Glue dan Studio Amazon SageMaker.

Kami sangat senang dengan kemampuan baru ini dan ingin melihat apa yang akan Anda bangun dengannya!


Lampiran: Siapkan sumber daya melalui konsol dan AWS CLI

Selesaikan instruksi di bagian ini untuk menyiapkan sumber daya menggunakan konsol dan AWS CLI, bukan template CloudFormation.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus memiliki akses ke AWS CLI (lihat Memulai dengan AWS CLI) atau gunakan akses baris perintah dari AWS CloudShell.

Konfigurasikan grup, pengguna, peran, dan kebijakan IAM

Di bagian ini, kami membuat dua pengguna IAM: insinyur data dan ilmuwan data, yang termasuk dalam grup platform data grup IAM. Kemudian kami menambahkan satu kebijakan IAM ke grup IAM.

  1. Di konsol IAM, buat kebijakan di tab JSON untuk membuat kebijakan terkelola IAM baru bernama DataPlatformGroupPolicy. Kebijakan tersebut mengizinkan pengguna dalam grup untuk mengakses Studio, tetapi hanya menggunakan profil pengguna SageMaker dengan tag yang cocok dengan nama pengguna IAM mereka. Gunakan dokumen kebijakan JSON berikut untuk memberikan izin:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:ListUserProfiles",
                "sagemaker:ListApps"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioReadOnly"
          },
          {
             "Action":"sagemaker:AddTags",
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAddTags"
          },
          {
             "Condition":{
                "StringEquals":{
                   "sagemaker:ResourceTag/studiouserid":"${aws:username}"
                }
             },
             "Action":[
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeUserProfile"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAllowedUserProfile"
          },
          {
             "Condition":{
                "StringNotEquals":{
                   "sagemaker:ResourceTag/studiouserid":"${aws:username}"
                }
             },
             "Action":[
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeUserProfile"
             ],
             "Resource":"*",
             "Effect":"Deny",
             "Sid":"AmazonSageMakerDeniedUserProfiles"
          }
       ]
    }

  2. Buat grup IAM bernama data-platform-group.
  3. Cari dan lampirkan kebijakan terkelola AWS bernama DataPlatformGroupPolicy ke grup.
  4. Buat pengguna IAM disebut data-engineer dan data-scientist di bawah grup IAM data-platform-group.
  5. Buat kebijakan terkelola baru bernama SageMakerExecutionPolicy (berikan ID Wilayah dan akun Anda dalam kode berikut):
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:ListUserProfiles",
                "sagemaker:ListApps"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioReadOnly"
          },
          {
             "Action":"sagemaker:AddTags",
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAddTags"
          },
          {
             "Action":[
                "sagemaker:CreateTrainingJob",
                "sagemaker:DescribeTrainingJob",
                "logs:DescribeLogStreams",
                "sagemaker:CreateModel",
                "sagemaker:CreateEndpointConfig",
                "sagemaker:CreateEndpoint",
                "sagemaker:DescribeEndpoint",
                "sagemaker:InvokeEndpoint",
                "sagemaker:DeleteEndpointConfig",
                "sagemaker:DeleteEndpoint"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerTrainingAndDeploy"
          },
          {
             "Action":"sagemaker:*App",
             "Resource":"arn:aws:sagemaker:::app/*/${aws:PrincipalTag/userprofilename}/*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAllowedApp"
          },
          {
             "Action":"sagemaker:*App",
             "Effect":"Deny",
             "NotResource":"arn:aws:sagemaker:::app/*/${aws:PrincipalTag/userprofilename}/*",
             "Sid":"AmazonSageMakerDeniedApps"
          },
          {
             "Action":[
                "glue:GetTable",
                "glue:GetTables",
                "glue:SearchTables",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetPartition",
                "glue:GetPartitions"
             ],
             "Resource":[
                "arn:aws:glue:::table/demo/*",
                "arn:aws:glue:::database/demo",
                "arn:aws:glue:::catalog"
             ],
             "Effect":"Allow",
             "Sid":"GlueCatalogPermissions"
          },
          {
             "Action":[
                "lakeformation:GetDataAccess",
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState",
                "lakeformation:GetWorkUnits",
                "lakeformation:GetWorkUnitResults"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"LakeFormationPermissions"
          },
          {
             "Effect":"Allow",
             "Action":[
                "s3:CreateBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:DeleteObject"
             ],
             "Resource":[
                "arn:aws:s3:::blog-studio-output-",
                "arn:aws:s3:::blog-studio-output-/*"
             ]
          },
          {
             "Action":[
                "iam:PassRole",
                "iam:GetRole",
                "sts:GetCallerIdentity"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioIAMPassRole"
          },
          {
             "Action":"sts:AssumeRole",
             "Resource":"*",
             "Effect":"Deny",
             "Sid":"DenyAssummingOtherIAMRoles"
          }
       ]
    }

  6. Buat kebijakan terkelola baru bernama SageMakerAdminPolicy:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "lakeformation:GrantPermissions",
                "lakeformation:RevokePermissions",
                "lakeformation:ListPermissions",
                "lakeformation:BatchGrantPermissions",
                "lakeformation:BatchRevokePermissions",
                "lakeformation:CreateDataCellsFilter",
                "lakeformation:DeleteDataCellsFilter",
                "lakeformation:ListDataCellsFilter",
                "glue:GetUserDefinedFunctions",
                "glue:BatchGetCustomEntityTypes"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"GlueLakeFormationPermissions"
          }
       ]
    }

  7. Buat peran IAM untuk SageMaker untuk insinyur data (data-engineer), yang digunakan sebagai peran eksekusi profil pengguna yang sesuai. Di Lampirkan kebijakan izin halaman, AmazonSageMakerFullAccess (kebijakan terkelola AWS) dilampirkan secara default. Anda menghapus kebijakan ini nanti untuk mempertahankan hak istimewa minimum.
    1. Untuk Nama peran, gunakan konvensi penamaan yang diperkenalkan di awal bagian ini untuk menamai peran SageMakerStudioExecutionRole_data-engineer.
    2. Untuk Tag, tambahkan nama profil pengguna kunci dan insinyur data nilai.
    3. Pilih Buat peran.
    4. Untuk menambahkan kebijakan yang tersisa, di Peran halaman, pilih nama peran yang baru saja Anda buat.
    5. Bawah izin, hapus kebijakan AmazonSageMakerFullAccess.
    6. pada Lampirkan kebijakan izin halaman, pilih kebijakan terkelola AWS AwsGlueSessionUserRestrictedServiceRole, dan kebijakan terkelola pelanggan SageMakerExecutionPolicy dan SageMakerAdminPolicy yang Anda buat.
    7. Pilih Lampirkan kebijakan.
    8. memodifikasi hubungan kepercayaan peran Anda:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Buat peran IAM untuk SageMaker untuk ilmuwan data (ilmuwan data), yang digunakan sebagai peran eksekusi profil pengguna yang sesuai.
    1. Untuk Nama peran, beri nama peran SageMakerStudioExecutionRole_data-scientist.
    2. Untuk Tag, tambahkan nama profil pengguna utama dan nilai data-scientist.
    3. Pilih Buat peran.
    4. Untuk menambahkan kebijakan yang tersisa, di Peran halaman, pilih nama peran yang baru saja Anda buat.
    5. Bawah izin, hapus kebijakan AmazonSageMakerFullAccess.
    6. pada Lampirkan kebijakan izin halaman, pilih kebijakan terkelola AWS AwsGlueSessionUserRestrictedServiceRole, dan kebijakan terkelola pelanggan SageMakerExecutionPolicy yang Anda buat.
    7. Pilih Lampirkan kebijakan.
    8. memodifikasi hubungan kepercayaan peran Anda:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Konfigurasikan profil pengguna SageMaker

Untuk membuat profil pengguna SageMaker Anda dengan studiouserid tag, selesaikan langkah-langkah berikut:

  1. Gunakan AWS CLI atau CloudShell untuk membuat profil pengguna Studio untuk teknisi data (berikan ID akun dan ID domain Studio Anda dalam kode berikut):
    aws sagemaker create-user-profile --domain-id  --user-profile-name data-engineer --tags Key=studiouserid,Value=data-engineer --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_data-engineer

  2. Ulangi langkah untuk membuat profil pengguna untuk data scientist, dengan mengganti ID akun dan ID domain Studio:
    aws sagemaker create-user-profile --domain-id  --user-profile-name data-scientist --tags Key=studiouserid,Value=data-scientist --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_data-scientist

Buat bucket S3 dan unggah kumpulan data sampel

Di bagian ini, Anda membuat dua bucket S3. Bucket pertama memiliki kumpulan data sampel yang terkait dengan pemasaran web. Bucket kedua digunakan oleh data scientist untuk menyimpan keluaran dari tugas rekayasa fitur, dan kumpulan data keluaran ini digunakan untuk melatih model ML.

Pertama, buat bucket S3 untuk input data:

  1. Unduh kumpulan data.
  2. Pada konsol Amazon S3, pilih Ember di panel navigasi.
  3. Pilih Buat ember.
  4. Untuk Daerah, pilih Wilayah dengan domain SageMaker yang menyertakan profil pengguna yang Anda buat.
  5. Untuk Nama ember, Masuk blog-studio-pii-dataset-.
  6. Pilih Buat ember.
  7. Pilih ember yang Anda buat dan pilih Unggah.
  8. Dalam majalah Pilih file bagian, pilih Tambahkan file dan unggah kumpulan data yang Anda unduh.
    Sekarang Anda membuat keranjang untuk data keluaran:
  9. pada Ember halaman, pilih Buat ember.
  10. Untuk Daerah, pilih Wilayah dengan domain SageMaker yang menyertakan profil pengguna yang Anda buat.
  11. Untuk Nama ember, Masuk blog-studio-output-.
  12. Pilih Buat ember.

Buat database dan tabel AWS Glue

Di bagian ini, Anda membuat database dan tabel AWS Glue untuk set data.

  1. Di konsol Formasi Danau, di bawah Katalog data di panel navigasi, pilih Database.
  2. Pilih Tambahkan database.
  3. Untuk Nama, masukkan demo.
  4. Pilih Buat database.
  5. Bawah Katalog data, pilih Meja.
  6. Untuk Nama, Masuk web_marketing.
  7. Untuk Basis Data, pilih demo.
  8. Untuk Sertakan jalur, masukkan jalur bucket S3 Anda untuk memasukkan data.
  9. Untuk Klasifikasi, pilih CSV.
  10. Bawah Skema, pilih Unggah Skema.
  11. Masukkan larik JSON berikut ke dalam kotak teks:
    [
       {
          "Name":"lastcampaignactivity",
          "Type":"string"
       },
       {
          "Name":"pageviewspervisit",
          "Type":"double"
       },
       {
          "Name":"totaltimeonwebsite",
          "Type":"bigint"
       },
       {
          "Name":"totalwebvisits",
          "Type":"bigint"
       },
       {
          "Name":"attendedmarketingevent",
          "Type":"string"
       },
       {
          "Name":"organicsearch",
          "Type":"string"
       },
       {
          "Name":"viewedadvertisement",
          "Type":"string"
       },
       {
          "Name":"leadsource",
          "Type":"string"
       },
       {
          "Name":"jobrole",
          "Type":"string"
       },
       {
          "Name":"contactnotes",
          "Type":"string"
       },
       {
          "Name":"leadprofile",
          "Type":"string"
       },
       {
          "Name":"usedpromo",
          "Type":"string"
       },
       {
          "Name":"donotreachout",
          "Type":"boolean"
       },
       {
          "Name":"city",
          "Type":"string"
       },
       {
          "Name":"converted",
          "Type":"bigint"
       },
       {
          "Name":"region",
          "Type":"string"
       },
       {
          "Name":"phone_number",
          "Type":"string"
       }
    ]

  12. Pilih Unggah.
  13. Pilih Kirim.
  14. Bawah Detail tabel, pilih Edit tabel.
  15. Bawah Properti tabel, pilih Add.
  16. Untuk kunci, Masuk skip.header.line.count, Dan untuk Nilai, masukkan 1.
  17. Pilih Save.

Konfigurasikan izin Lake Formation

Di bagian ini, Anda menyiapkan izin Lake Formation untuk mengizinkan peran IAM SageMakerStudioExecutionRole_data-engineer untuk membuat database dan mendaftarkan lokasi S3 di dalam Lake Formation.

Pertama, daftarkan lokasi danau data untuk mengelola tabel di bawah lokasi di izin Formasi Danau:

  1. Pilih Lokasi data lake.
  2. Pilih Daftarkan lokasi.
  3. Untuk Jalur Amazon S3, Masuk s3://blog-studio-pii-dataset-/ (ember yang berisi kumpulan data).
  4. Pilih Daftarkan lokasi.
    Sekarang Anda memberikan izin database dan tabel Lake Formation ke peran IAM SageMakerStudioExecutionRole_data-engineer dan SageMakerStudioExecutionRole_data-scientist.Pertama, berikan izin database untuk SageMakerStudioExecutionRole_data-engineer:
  5. Bawah izin, pilih Izin danau data.
  6. Bawah izin data, pilih Hibah.
  7. Untuk Kepala sekolah, pilih Pengguna dan peran IAM, dan pilih peran SageMakerStudioExecutionRole_data-engineer.
  8. Untuk Tag kebijakan atau resource katalog, pilih Sumber daya katalog data bernama.
  9. Untuk Database, pilih demo.
  10. Untuk Izin basis data, memilih besar.
  11. Pilih Hibah.
    Selanjutnya, berikan izin tabel untuk SageMakerStudioExecutionRole_data-engineer:
  12. Bawah izin data, pilih Hibah.
  13. Untuk Kepala sekolah, pilih Pengguna dan peran IAM, dan pilih peran SageMakerStudioExecutionRole_data-engineer.
  14. Untuk Tag kebijakan atau resource katalog, pilih Sumber daya katalog data bernama.
  15. Untuk Database, pilih demo.
  16. Untuk Meja, pilih web_marketing.
  17. Untuk tabel izin, memilih besar.
  18. Untuk Dapat diterima izin, memilih besar.
  19. Pilih Hibah.
    Terakhir, berikan izin basis data untuk SageMakerStudioExecutionRole_data-scientist:
  20. Bawah izin data, pilih Hibah.
  21. Untuk Kepala sekolah, pilih Pengguna dan peran IAM, dan pilih peran SageMakerStudioExecutionRole_data-scientist.
  22. Untuk Tag kebijakan atau resource katalog, pilih Sumber daya katalog data bernama.
  23. Untuk Database, pilih demo.
  24. Untuk Izin basis data, memilih Menggambarkan.
  25. Pilih Hibah.

Tentang Penulis

Rekayasa fitur berskala besar dengan perlindungan data sensitif menggunakan sesi interaktif AWS Glue dan Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Praveen Kumar adalah Arsitek Solusi Analisis di AWS dengan keahlian dalam merancang, membangun, dan mengimplementasikan data modern dan platform analitik menggunakan layanan cloud-native. Bidang minatnya adalah teknologi tanpa server, gudang data cloud modern, streaming, dan aplikasi ML.

Rekayasa fitur berskala besar dengan perlindungan data sensitif menggunakan sesi interaktif AWS Glue dan Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Noritaka Sekiyama adalah Arsitek Big Data Utama di tim AWS Glue. Dia senang berkolaborasi dengan tim yang berbeda untuk memberikan hasil seperti postingan ini. Di waktu luangnya, ia menikmati bermain video game bersama keluarganya.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS