Nagyszabású szolgáltatásfejlesztés érzékeny adatvédelemmel az AWS Glue interaktív munkamenetek és az Amazon SageMaker Studio PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Nagyszabású funkciótervezés érzékeny adatvédelemmel az AWS Glue interaktív munkamenetek és az Amazon SageMaker Studio segítségével

A szervezetek gépi tanulást (ML) és mesterséges intelligencia szolgáltatásokat használnak, hogy javítsák az ügyfélélményt, csökkentsék a működési költségeket, és új lehetőségeket tárjanak fel az üzleti eredmények javítására. Az adatok alátámasztják az ML és az AI használati eseteit, és stratégiai eszközt jelentenek a szervezet számára. Mivel az adatok exponenciális ütemben növekszenek, a szervezetek integrált, költséghatékony és hatékony adatplatform felállítására törekednek az adatok előfeldolgozása, a funkciók tervezése, valamint az ML-modellek nagyarányú felépítése, betanítása és működése érdekében. Ennek elérése érdekében az AWS egy egységes, modern adatplatformot kínál, amelyet a Amazon egyszerű tárolási szolgáltatás (Amazon S3), mint az adattó, amely erre a célra épített eszközöket és feldolgozó motorokat tartalmaz az analitika és az ML munkaterhelések támogatására. Az egységes ML élmény érdekében használhatja Amazon SageMaker Studio, amely kínál natív integráció az AWS Glue interaktív munkamenetekkel a funkciótervezés nagyarányú végrehajtása érzékeny adatvédelemmel. Ebben a bejegyzésben bemutatjuk, hogyan kell megvalósítani ezt a megoldást.

Amazon SageMaker egy teljesen felügyelt ML szolgáltatás, amely lehetővé teszi modellek felépítését, betanítását és üzembe helyezését a felhasználási esetek széles körében. A modellképzéshez bármelyiket használhatja beépített algoritmusok a SageMakerben, hogy gyorsan elkezdhesse az ML modellek betanítását és bevezetését.

A modellépítési és -fejlesztési folyamat kulcsfontosságú eleme a jellemzők tervezése. AWS ragasztó az egyik ajánlott lehetőség a funkciótervezés nagyarányú megvalósítására. Az AWS Glue lehetővé teszi az adatintegráció és -átalakítás elosztott módon történő futtatását egy kiszolgáló nélküli Apache Spark infrastruktúrán, és megkönnyíti a népszerű Spark ML könyvtár használatát a funkciók tervezésére és a modellfejlesztésre. Ezenkívül használhatja az AWS ragasztót a növekményes adatfeldolgozáshoz munkakönyvjelzők, több mint 100 forrásból származó adatok feldolgozása segítségével csatlakozók, és tüskés vagy kiszámíthatatlan munkaterheléseket futtathat a használatával automatikus méretezés.

Az ML-alapú alkalmazások másik fontos követelménye az adatbiztonság és a hozzáférés-szabályozás. Általános igény, hogy szigorúbban ellenőrizzék, ki férhet hozzá a legérzékenyebb adatokhoz a funkciótervezési és modellépítési folyamat részeként, követve a legkisebb jogosultságú hozzáférés elvét. Ennek eléréséhez használhatja az AWS Glue integrációt AWS-tó formáció az adattó eszközeinek fokozottabb irányításához és kezeléséhez. A Lake Formation segítségével részletes adathozzáférés-vezérlést és biztonsági házirendeket konfigurálhat az Amazon S3 Data Lake tetején. A házirendek egy központi helyen vannak meghatározva, lehetővé téve több elemzési és ML szolgáltatást, mint például az AWS Glue, Amazon Athéné, és a SageMaker, hogy kölcsönhatásba léphessenek az Amazon S3-ban tárolt adatokkal.

Az AWS ragasztó tartalmaz a személyazonosításra alkalmas információk (PII) észlelése transzformáció, amely lehetővé teszi az entitások észlelését, elfedését vagy szükség szerinti eltávolítását a fokozott megfelelőség és irányítás érdekében. A személyazonossági adatok transzformációjával észlelheti a személyazonosításra alkalmas adatokat az adatkészletekben, és automatikusan alkalmazhat finomszemcsés hozzáférés-szabályozást a Lake Formation segítségével, hogy korlátozza az érzékeny adatokat a különböző felhasználói csoportok számára.

Használási eset

A hajlammodell használati esetére összpontosítunk, amely egy ügyfélmarketing adatkészletet tartalmaz, és két felhasználói személyt foglal magában: egy adatmérnököt és egy adattudóst. Az adatkészlet vevőnkénti információkat tartalmaz, beleértve a potenciális ügyfelek forrását, a kapcsolatfelvételi megjegyzéseket, a munkakört, néhány jelzőt, látogatásonkénti oldalmegtekintéseket stb. Az adatkészlet érzékeny információkat is tartalmaz, például személyes telefonszámokat.

Az adatmérnök felelős a végpontok közötti adatfeldolgozási folyamat felépítéséért, beleértve az adat-előkészítést, az előfeldolgozást és a hozzáférés-szabályozást. Az adattudós felelős a funkciók tervezéséért, valamint az ML-modell képzéséért és telepítéséért. Vegye figyelembe, hogy az adattudós nem férhet hozzá semmilyen személyes személyazonosításra alkalmas adathoz szolgáltatásfejlesztés vagy az ML-modell betanítása céljából.

Ennek a használati esetnek a részeként az adatmérnök létrehoz egy adatfolyamot az adathalmaz előfeldolgozásához, megvizsgálja az adatkészletet az esetleges személyazonosításra alkalmas információk után, és korlátozza a személyazonosításra alkalmas oszlop hozzáférését az adattudós felhasználóra. Ennek eredményeként, amikor egy adatkutató az adatkészletet funkciótervezés végrehajtására és ML-modellek készítésére használja, nem fér hozzá a személyazonosításra alkalmas adatok érzékeny oszlopához (ebben az esetben a telefonszámokhoz). A szolgáltatástervezési folyamat magában foglalja a karakterlánc típusú oszlopok átalakítását az ML modellekhez optimális formátumra. Speciális felhasználási esetként ezt a hozzáférési mintát kiterjesztheti sor- és cellaszintű biztonság megvalósítására a Lake Formation használatával.

Megoldás áttekintése

A megoldás a következő magas szintű lépéseket tartalmazza:

  1. Állítsa be az erőforrásokat a AWS felhőképződés.
  2. Az adatkészlet előfeldolgozása, beleértve a személyazonosításra alkalmas adatok észlelését és a finomszemcsés hozzáférés-vezérlést, egy AWS Glue interaktív munkamenetben.
  3. Funkciótervezés végrehajtása egy AWS Glue interaktív munkameneten.
  4. Tanítson és telepítsen egy ML-modellt a SageMaker beépített XGBoost algoritmusával.
  5. Értékelje az ML modellt.

A következő ábra a megoldás architektúráját mutatja be.

Előfeltételek

Az oktatóanyag befejezéséhez a következő előfeltételekkel kell rendelkeznie:

Állítsa be az erőforrásokat az AWS CloudFormation segítségével

Ez a bejegyzés egy CloudFormation sablont tartalmaz a gyors beállításhoz. Áttekintheti és testreszabhatja az igényeinek megfelelően. Ha inkább erőforrásokat szeretne beállítani a AWS felügyeleti konzol és az AWS CLI-t, nem pedig az AWS CloudFormationt, tekintse meg az utasításokat a bejegyzés végén található függelékben.

A CloudFormation sablon a következő erőforrásokat állítja elő:

  • S3 vödrök mintaadatkészlettel
  • An AWS Lambda funkciót az adatkészlet betöltéséhez
  • AWS Identity and Access Management (IAM) csoport, felhasználók, szerepkörök és házirendek
  • Lake Formation adatok tó beállításai és engedélyei
  • SageMaker felhasználói profilok

Az erőforrások létrehozásához hajtsa végre a következő lépéseket:

  1. Jelentkezzen be a konzolba.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Indítsa el a Stack alkalmazást:
    Indítás gomb
  3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Következő.
  4. A DataEngineerPwd és a DataScientistPwd, adja meg saját jelszavát az adatmérnök és adattudós felhasználók számára.
  5. A GlueDatabaseName, belép demo.
  6. A RagasztótáblaName, belép web_marketing.
  7. A S3BucketNameForInput, belép blog-studio-pii-dataset-.
  8. A S3BucketNameForOutput, belép blog-studio-output-.
  9. A SageMakerDomainId, adja meg SageMaker tartományazonosítóját, amelyet az előfeltétel lépései során készített el.
  10. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Következő.
  11. A következő oldalon válassza ki Következő.
  12. Tekintse át a részleteket az utolsó oldalon, és válassza ki Tudomásul veszem, hogy az AWS CloudFormation IAM-erőforrásokat hozhat létre.
  13. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Teremt.

A verem létrehozása akár 10 percig is eltarthat. A verem IAM szerepköröket és SageMaker felhasználói profilokat hoz létre két személy számára: adatmérnök és adattudós számára. Létrehoz egy adatbázis-demót és egy táblázatot is web_marketing mintaadatkészlettel.

A verem létrehozásakor az adatmérnök személynek teljes hozzáférése van a táblához, de az adattudós személynek még nincs hozzáférése a táblához.

Az adatkészlet előfeldolgozása

Kezdjük el az adatok előfeldolgozását egy AWS Glue interaktív munkamenetben. Az adatmérnök személy ellenőrizni szeretné az adatokat, hogy lássa, vannak-e érzékeny adatok vagy sem, és minimális hozzáférési engedélyt kíván adni az adattudós személynek. A jegyzetfüzetet innen töltheti le ezt a helyet.

  1. Jelentkezzen be a konzolba a data-engineer felhasználóval.
  2. A SageMaker konzolon válassza a lehetőséget felhasználók.
  3. Válassza ki az adatmérnök felhasználót, és válassza ki OpenStudio.
  4. Hozzon létre egy új jegyzetfüzetet, és válassza ki SparkAnalytics 1.0 mert Kép és a Ragasztó PySpark mert mag.
  5. Indítson interaktív munkamenetet a következő varázslattal a Boto3 újabb verziójának telepítéséhez (ez szükséges a create_data_cells_filter módszer):
    %additional_python_modules boto3==1.24.82

  6. A munkamenet inicializálása:
    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. Hozzon létre egy AWS Glue DynamicFrame-et az újonnan létrehozott táblázatból, és választási típusok megoldása katalógusséma alapján, mert az adatok alapján automatikusan kikövetkeztetett séma helyett a katalógusban meghatározott sémát szeretnénk használni:
    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. Ellenőrizze a táblázatban, hogy vannak-e személyazonosításra alkalmas adatok az AWS Glue személyazonosításra alkalmas azonosításával:
    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. Ellenőrizze, hogy a személyazonosításra alkalmas adatokként besorolt ​​oszlopok tartalmaznak-e bizalmas adatokat vagy sem (ha nem, frissítse a Class_map alkalmazást a nem érzékeny oszlopok elvetéséhez):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Állítsa be a Lake Formation engedélyeket adatcella-szűrő használatával az automatikusan észlelt oszlopokhoz, és korlátozza az oszlopokat az adattudós személyre:
    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. Jelentkezzen be a Stúdióba adattudósként, és ellenőrizze, hogy a személyazonosításra alkalmas adatok oszlopai nem láthatók. A jegyzetfüzetet innen töltheti le ezt a helyet.
  12. Hozzon létre egy új jegyzetfüzetet, és válassza ki SparkAnalytics 1.0 mert Kép és a Ragasztó PySpark mert mag:
    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()

Hajtsa végre a funkciótervezést

Az Apache Spark ML könyvtárat használjuk a funkciók tervezésére adattudós felhasználóként, majd visszaírjuk a kimenetet az Amazon S3-ba.

  1. A következő cellában a jellemzőket a Apache Spark ML könyvtár:
    • StringIndexer a címkékből álló karakterlánc oszlopot címkeindexek oszlopára képezi le.
    • OneHotEncoder egy címkeindexként ábrázolt kategorikus jellemzőt képez le egy bináris vektorra, legfeljebb egyetlen egyértékkel, amely egy adott kategorikus jellemző jelenlétét jelzi. Ezt a transzformációt olyan ML algoritmusokhoz használják, amelyek folyamatos funkciókat várnak el.
    • VectorAssembler egy olyan transzformátor, amely egy adott oszloplistát egyetlen vektoroszlopba egyesít, amelyet azután olyan algoritmusok ML modelljei betanításához használnak, mint a logisztikus regresszió és a döntési fák.
    #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. A végleges átalakított DataFrame a Pipeline könyvtár segítségével hozható létre. A folyamat szakaszok sorozataként van megadva. Ezek a szakaszok sorrendben futnak, és a bemeneti DataFrame átalakul, ahogy áthalad az egyes szakaszokon.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Ezután felosztjuk az adatkészletet betanításra, érvényesítjük és teszteljük a DataFrame-et, majd elmentjük az S3 tárolóba az ML modell betanításához (adja meg AWS-fiókazonosítóját a következő kódban):
    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))

Tanítson és telepítsen egy ML-modellt

Az előző részben befejeztük a funkciótervezést, amely magában foglalta az olyan karakterlánc-oszlopok konvertálását, mint pl region, jobroleés usedpromo az ML modellekhez optimális formátumba. Olyan oszlopokat is beiktattunk, mint pl pageviewspervisit és a totalwebvisits, amely segít megjósolni a vásárló termékvásárlási hajlandóságát.

Most egy ML-modellt betanítunk a betanítás és az érvényesítési adatkészlet beolvasásával a SageMaker beépített XGBoost algoritmusával. Ezután telepítjük a modellt, és lefuttatjuk a pontosság ellenőrzését. A jegyzetfüzetet innen töltheti le ezt a helyet.

A következő cellában a második S3-csoport adatait olvassuk be, amely tartalmazza a szolgáltatásfejlesztési műveleteink kimenetét. Ezután a beépített XGBoost algoritmust használjuk a modell betanításához.

  1. Nyisson meg egy új jegyzetfüzetet. Választ Data Science mert Kép és a Python 3 mert mag (Adja meg AWS-fiókazonosítóját a következő kódban):
    #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. A képzés befejeztével a modellt a SageMaker hosting szolgáltatások segítségével telepíthetjük:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Értékelje az ML modellt

A tesztadatkészlet segítségével értékeljük a modellt, és töröljük a következtetési végpontot, ha végeztünk, hogy elkerüljük a folyamatos költségeket.

  1. Értékelje a modellt a következő kóddal:
    #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))

    A mintafutás pontossága 84.6 % volt. Ez kissé eltérhet a futtatásnál az adatkészlet véletlenszerű felosztása miatt.

  2. A következõ végpontot a következõ kóddal törölhetjük:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Tisztítsuk meg

Most az utolsó lépéshez, az erőforrások tisztításához.

  1. Ürítse ki a CloudFormation-veremen keresztül létrehozott két vödröt.
  2. Törölje a felhasználóhoz társított alkalmazásokat profiles data-scientist és a data-engineer a Stúdión belül.
  3. Törölje a CloudFormation veremet.

Következtetés

Ebben a bejegyzésben egy olyan megoldást mutattunk be, amely lehetővé teszi az olyan személyek számára, mint például az adatmérnökök és az adattudósok, hogy nagy léptékű funkciótervezést hajtsanak végre. Az AWS Glue interaktív munkameneteivel könnyedén megvalósíthatja a funkciók tervezését a méretekben az automatikus személyazonosító adatok észlelésével és a finomszemcsés hozzáférés-vezérléssel anélkül, hogy bármilyen mögöttes infrastruktúrát kellene kezelnie. A Studio egyetlen belépési pontként való használatával egyszerűsített és integrált élményben lehet része egy végpontok közötti ML munkafolyamat felépítéséhez: az adatok előkészítésétől és biztonságossá tételétől az ML-modellek felépítéséig, betanításáig, hangolásáig és üzembe helyezéséig. Ha többet szeretne megtudni, látogasson el Az AWS Glue interaktív munkameneteinek első lépései és a Amazon SageMaker Studio.

Nagyon izgatottak vagyunk ezzel az új képességgel kapcsolatban, és kíváncsian várjuk, mit fogsz építeni vele!


Függelék: Állítsa be az erőforrásokat a konzolon és az AWS parancssori felületén keresztül

Hajtsa végre az ebben a szakaszban található utasításokat, ha a CloudFormation-sablon helyett a konzolt és az AWS parancssori felületet szeretné beállítani.

Előfeltételek

Az oktatóanyag befejezéséhez hozzáféréssel kell rendelkeznie az AWS CLI-hez (lásd Kezdő lépések az AWS CLI-vel), vagy használja a parancssori hozzáférést innen AWS CloudShell.

Konfigurálja az IAM-csoportot, a felhasználókat, a szerepköröket és a házirendeket

Ebben a részben két IAM-felhasználót hozunk létre: data-engineer és data-scientist, amelyek az IAM-csoport data-platform-group csoportjába tartoznak. Ezután egyetlen IAM-házirendet adunk az IAM-csoporthoz.

  1. Az IAM konzolon hozzon létre egy házirendet a JSON lapon nevű új IAM felügyelt házirend létrehozásához DataPlatformGroupPolicy. A házirend lehetővé teszi a csoport felhasználóinak, hogy hozzáférjenek a Studio-hoz, de csak olyan SageMaker felhasználói profil használatával, amely az IAM-felhasználónevüknek megfelelő címkével rendelkezik. Használja a következő JSON-házirend-dokumentumot az engedélyek megadásához:
    {
       "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. Hozzon létre egy IAM-csoportot hívott data-platform-group.
  3. Keresse meg és csatolja a csoporthoz a DataPlatformGroupPolicy nevű AWS felügyelt házirendet.
  4. IAM-felhasználók létrehozása adatmérnöknek és adattudósnak nevezik az IAM csoport data-platform-group alatt.
  5. Hozzon létre egy új felügyelt házirendet SageMakerExecutionPolicy néven (adja meg régióját és fiókazonosítóját a következő kódban):
    {
       "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. Hozzon létre egy új felügyelt házirendet nevezett 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. Hozzon létre egy IAM-szerepet a SageMaker számára az adatmérnök (data-engineer) számára, amelyet a megfelelő felhasználói profil végrehajtási szerepeként használnak. A Engedélyezési szabályzat csatolása oldal, az AmazonSageMakerFullAccess (AWS felügyelt házirend) alapértelmezés szerint csatolva van. Ezt a házirendet később eltávolítja a minimális jogosultság megőrzése érdekében.
    1. A Szerepnév, használja a szakasz elején bemutatott elnevezési konvenciót a SageMakerStudioExecutionRole_data-engineer szerep elnevezéséhez.
    2. A Címkék, adja hozzá a kulcs userprofilename-et és a data-engineer értéket.
    3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Szerep létrehozása.
    4. A fennmaradó házirendek hozzáadásához a szerepek oldalon válassza ki az imént létrehozott szerepnevet.
    5. Alatt Engedélyek, távolítsa el az AmazonSageMakerFullAccess házirendet.
    6. A Engedélyezési szabályzat csatolása oldalon válassza ki az AWS által felügyelt házirendet AwsGlueSessionUserRestrictedServiceRole és az ügyfelek által létrehozott SageMakerExecutionPolicy és SageMakerAdminPolicy házirendeket.
    7. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Szabályzatok csatolása.
    8. módosít a szereped bizalmi kapcsolata:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Hozzon létre egy IAM-szerepet a SageMaker számára az adattudós (data-scientist) számára, amelyet a megfelelő felhasználói profil végrehajtási szerepeként használnak.
    1. A Szerepnév, nevezze el a szerepet SageMakerStudioExecutionRole_data-scientist.
    2. A Címkék, adja hozzá a kulcs felhasználói profilnevet és a value data-scientist értéket.
    3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Szerep létrehozása.
    4. A fennmaradó házirendek hozzáadásához a szerepek oldalon válassza ki az imént létrehozott szerepnevet.
    5. Alatt Engedélyek, távolítsa el az AmazonSageMakerFullAccess házirendet.
    6. A Engedélyezési szabályzat csatolása oldalon válassza ki az AWS felügyelt házirendet AwsGlueSessionUserRestrictedServiceRole és az ügyfél által felügyelt SageMakerExecutionPolicy házirendet, amelyet létrehozott.
    7. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Szabályzatok csatolása.
    8. módosít a szereped bizalmi kapcsolata:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Konfigurálja a SageMaker felhasználói profilokat

A SageMaker felhasználói profilok létrehozásához a studiouserid címkét, hajtsa végre a következő lépéseket:

  1. Az AWS parancssori felület vagy a CloudShell segítségével hozza létre a Studio felhasználói profilt az adatmérnök számára (adja meg fiókazonosítóját és Studio domain azonosítóját a következő kódban):
    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. Ismételje meg a lépést egy felhasználói profil létrehozásához az adattudós számára, lecserélve a fiókazonosítót és a Studio-tartományazonosítót:
    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

Hozzon létre S3-csoportokat, és töltse fel a mintaadatkészletet

Ebben a szakaszban két S3 gyűjtőt hoz létre. Az első csoportban van egy webmarketinggel kapcsolatos mintaadatkészlet. A második tárolót az adattudós használja a szolgáltatástervezési feladatok kimenetének tárolására, és ezt a kimeneti adatkészletet az ML-modell betanításához használja.

Először hozza létre az S3 tárolót a bemeneti adatokhoz:

  1. Letöltés az adatkészletet.
  2. Az Amazon S3 konzolon válassza a lehetőséget Kanalak a navigációs ablaktáblában.
  3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Vödör létrehozása.
  4. A Vidék, válassza ki a SageMaker tartományú régiót, amely tartalmazza az Ön által létrehozott felhasználói profilokat.
  5. A Vödör neve, belép blog-studio-pii-dataset-.
  6. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Vödör létrehozása.
  7. Válassza ki a létrehozott tárolót, és válassza ki Feltöltés.
  8. A Válassza ki a fájlokat szakaszban válassza Fájlok hozzáadása és töltse fel a letöltött adatkészletet.
    Most létrehozza a tárolót a kimeneti adatokhoz:
  9. A Kanalak oldalon válassza a lehetőséget Vödör létrehozása.
  10. A Vidék, válassza ki a SageMaker tartományú régiót, amely tartalmazza az Ön által létrehozott felhasználói profilokat.
  11. A Vödör neve, belép blog-studio-output-.
  12. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Vödör létrehozása.

Hozzon létre egy AWS Glue adatbázist és táblázatot

Ebben a szakaszban létrehoz egy AWS Glue adatbázist és táblázatot az adatkészlethez.

  1. A Lake Formation konzolon, alatt Adatkatalógus a navigációs ablakban válassza a lehetőséget Adatbázisok.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Adatbázis hozzáadása.
  3. A Név, lépjen be a demóba.
  4. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Adatbázis létrehozása.
  5. Alatt Adatkatalógus, választ Asztalok.
  6. A Név, belép web_marketing.
  7. A adatbázisválassza demo.
  8. A Tartalmazza az elérési utat, adja meg az S3 tároló elérési útját a bemeneti adatokhoz.
  9. A Osztályozás, választ CSV.
  10. Alatt Séma, választ Séma feltöltése.
  11. Írja be a következő JSON-tömböt a szövegmezőbe:
    [
       {
          "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. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Feltöltés.
  13. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Küld.
  14. Alatt Táblázat részletei, választ Táblázat szerkesztése.
  15. Alatt A táblázat tulajdonságai, választ hozzáad.
  16. A Kulcs, belép skip.header.line.count, Valamint a Érték, írja be a 1-et.
  17. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Megtakarítás.

Állítsa be a Lake Formation engedélyeit

Ebben a szakaszban a Lake Formation engedélyeket állítja be az IAM-szerep engedélyezéséhez SageMakerStudioExecutionRole_data-engineer adatbázis létrehozásához és az S3 hely regisztrálásához a Lake Formationon belül.

Először is regisztrálja az adattó helyét a táblák kezeléséhez a Lake Formation engedélyeiben található hely alatt:

  1. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Data tó helyei.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Regisztrálja a helyet.
  3. A Amazon S3 elérési út, belép s3://blog-studio-pii-dataset-/ (az adatkészletet tartalmazó vödör).
  4. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Regisztrálja a helyet.
    Most megadja a Lake Formation adatbázis- és táblajogosultságait az IAM-szerepköröknek SageMakerStudioExecutionRole_data-engineer és a SageMakerStudioExecutionRole_data-scientist.Először is adjon engedélyt az adatbázishoz SageMakerStudioExecutionRole_data-engineer:
  5. Alatt Engedélyek, választ Data Lake engedélyek.
  6. Alatt Adatengedély, választ Grant.
  7. A Vezetőinek, választ IAM felhasználók és szerepkörök, és válassza ki a szerepet SageMakerStudioExecutionRole_data-engineer.
  8. A Irányelvcímkék vagy katalógus-források, választ Elnevezett adatkatalógus-források.
  9. A Adatbázisok, válassza a demót.
  10. A Adatbázis engedélyek, válasszuk szuper.
  11. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Grant.
    Ezután adjon engedélyt a következőhöz: SageMakerStudioExecutionRole_data-engineer:
  12. Alatt Adatengedély, választ Grant.
  13. A Vezetőinek, választ IAM felhasználók és szerepkörök, és válassza ki a szerepet SageMakerStudioExecutionRole_data-engineer.
  14. A Irányelvcímkék vagy katalógus-források, választ Elnevezett adatkatalógus-források.
  15. A Adatbázisok, választ demo.
  16. A Asztalok, választ web_marketing.
  17. A Táblázat engedélyek, válasszuk szuper.
  18. A Megadható engedélyek, válasszuk szuper.
  19. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Grant.
    Végül adjon adatbázis-engedélyt a számára SageMakerStudioExecutionRole_data-scientist:
  20. Alatt Adatengedély, választ Grant.
  21. A Vezetőinek, választ IAM felhasználók és szerepkörök, és válassza ki a szerepet SageMakerStudioExecutionRole_data-scientist.
  22. A Irányelvcímkék vagy katalógus-források, választ Elnevezett adatkatalógus-források.
  23. A Adatbázisok, választ demo.
  24. A Adatbázis engedélyek, válasszuk Írja le.
  25. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Grant.

A szerzőkről

Nagyszabású szolgáltatásfejlesztés érzékeny adatvédelemmel az AWS Glue interaktív munkamenetek és az Amazon SageMaker Studio PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Praveen Kumar az AWS Analytics-megoldástervezője, aki a felhőalapú szolgáltatásokat használó modern adat- és elemzési platformok tervezésében, felépítésében és megvalósításában jártas szakértelemmel rendelkezik. Érdeklődési területe a szerver nélküli technológia, a modern felhő adattárházak, a streaming és az ML alkalmazások.

Nagyszabású szolgáltatásfejlesztés érzékeny adatvédelemmel az AWS Glue interaktív munkamenetek és az Amazon SageMaker Studio PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Noritaka Sekiyama az AWS Glue csapatának vezető Big Data építésze. Élvezi a különböző csapatokkal való együttműködést, hogy olyan eredményeket érjen el, mint ez a bejegyzés. Szabadidejében szívesen játszik a családjával videojátékokkal.

Időbélyeg:

Még több AWS gépi tanulás