Laajamittainen ominaisuussuunnittelu ja arkaluontoinen tietosuoja käyttämällä interaktiivisia AWS Glue -istuntoja ja Amazon SageMaker Studio PlatoBlockchain Data Intelligencea. Pystysuuntainen haku. Ai.

Laajamittainen ominaisuussuunnittelu arkaluontoisella tietosuojalla interaktiivisten AWS Glue -istuntojen ja Amazon SageMaker Studion avulla

Organisaatiot käyttävät koneoppimista (ML) ja tekoälypalveluja parantaakseen asiakaskokemusta, alentaakseen toimintakustannuksia ja avatakseen uusia mahdollisuuksia liiketoiminnan tulosten parantamiseen. Data tukee ML:n ja tekoälyn käyttötapauksia ja on strateginen voimavara organisaatiolle. Tietojen kasvaessa eksponentiaalisesti, organisaatiot haluavat perustaa integroidun, kustannustehokkaan ja tehokkaan tietoalustan tietojen esikäsittelyä, ominaisuuksien suunnittelua sekä ML-mallien rakentamista, kouluttamista ja käyttökelpoisuutta varten. Tämän saavuttamiseksi AWS tarjoaa yhtenäisen nykyaikaisen tietoalustan, jonka tehonlähteenä on Amazonin yksinkertainen tallennuspalvelu (Amazon S3) tietojärvenä, jossa on tarkoitukseen rakennetut työkalut ja prosessointikoneet, jotka tukevat analytiikkaa ja ML-työkuormia. Yhtenäisen ML-kokemuksen saamiseksi voit käyttää Amazon SageMaker Studio, joka tarjoaa natiivi integraatio interaktiivisten AWS Glue -istuntojen kanssa suorittaa ominaisuussuunnittelua mittakaavassa arkaluontoisen tietosuojan avulla. Tässä viestissä näytämme, kuinka tämä ratkaisu otetaan käyttöön.

Amazon Sage Maker on täysin hallittu ML-palvelu, jonka avulla voit rakentaa, kouluttaa ja ottaa käyttöön malleja laajassa mittakaavassa monenlaisiin käyttötapauksiin. Mallikoulutukseen voit käyttää mitä tahansa sisäänrakennetut algoritmit SageMakerissa, jotta pääset nopeasti alkuun ML-mallien koulutuksessa ja käyttöönotossa.

Mallinrakennus- ja kehitysprosessin keskeinen osa on ominaisuussuunnittelu. AWS-liima on yksi suositelluista vaihtoehdoista ominaisuussuunnittelun saavuttamiseksi mittakaavassa. AWS Glue mahdollistaa tietojen integroinnin ja muuntamisen hajautetusti palvelimettomassa Apache Spark -infrastruktuurissa ja helpottaa suositun Spark ML -kirjaston käyttöä ominaisuussuunnitteluun ja mallien kehittämiseen. Lisäksi voit käyttää AWS-liimaa inkrementaaliseen tietojenkäsittelyyn työn kirjanmerkit, kerää tietoja yli 100 lähteestä käyttämällä Liittimetja suorittaa piikkisiä tai arvaamattomia työkuormia käyttämällä automaattinen skaalaus.

Toinen tärkeä vaatimus ML-pohjaisille sovelluksille on tietoturva ja kulunvalvonta. On yleinen vaatimus hallita tiukemmin sitä, kuka pääsee käsiksi arkaluontoisimpiin tietoihin osana ominaisuuksien suunnittelua ja mallinrakennusprosessia noudattamalla vähiten käyttöoikeuksien periaatetta. Tämän saavuttamiseksi voit hyödyntää AWS Glue -integraatiota AWS-järvien muodostuminen datajärven omaisuuden hallinnan ja hallinnan lisäämiseksi. Lake Formationin avulla voit määrittää tarkkoja tietojen käytön hallintaa ja suojauskäytäntöjä Amazon S3 -datajärvesi päälle. Käytännöt on määritelty keskeisessä paikassa, mikä mahdollistaa useiden analytiikka- ja ML-palveluiden, kuten AWS Gluen, Amazon Athenaja SageMaker, jotta voit olla vuorovaikutuksessa Amazon S3:een tallennettujen tietojen kanssa.

AWS-liima sisältää a henkilökohtaisten tunnistetietojen (PII) havaitseminen muunnos, joka tarjoaa mahdollisuuden havaita, peittää tai poistaa entiteettejä tarpeen mukaan parantaakseen vaatimustenmukaisuutta ja hallintaa. PII-muunnoksen avulla voit havaita henkilökohtaisia ​​tunnistetietoja tietojoukoissa ja käyttää automaattisesti tarkkaa pääsynhallintaa Lake Formationin avulla rajoittaaksesi arkaluonteisia tietoja eri käyttäjäryhmille.

Käytä tapausta

Keskitymme taipumusmallin käyttötapaukseen, joka sisältää asiakasmarkkinointitietojoukon ja sisältää kaksi käyttäjäpersoonaa: tietosuunnittelijan ja datatieteilijän. Tietojoukko sisältää asiakaskohtaisia ​​tietoja, kuten liidilähteen, yhteystiedot, työtehtävän, joitain lippuja, sivun näyttökertoja käyntiä kohti ja paljon muuta. Tietojoukko sisältää myös arkaluontoisia tietoja, kuten henkilökohtaisia ​​puhelinnumeroita.

Tietosuunnittelija vastaa päästä-päähän tietojenkäsittelyputken rakentamisesta, mukaan lukien tietojen valmistelu, esikäsittely ja kulunvalvonta. Tietotutkija vastaa ominaisuussuunnittelusta sekä ML-mallin koulutuksesta ja käyttöönotosta. Huomaa, että datatutkija ei saa käyttää henkilökohtaisia ​​tunnistetietoja ominaisuuksien suunnittelua tai ML-mallin koulutusta varten.

Osana tätä käyttötapausta tietosuunnittelija rakentaa dataputken datajoukon esikäsittelyä varten, skannaa tietojoukosta henkilökohtaisia ​​tunnistetietoja ja rajoittaa PII-sarakkeen pääsyn datatieteilijälle. Tämän seurauksena, kun datatieteilijä käyttää tietojoukkoa ominaisuuksien suunnitteluun ja ML-mallien rakentamiseen, heillä ei ole pääsyä henkilökohtaisten tunnistetietojen arkaluontoiseen sarakkeeseen (tässä tapauksessa puhelinnumerot). Ominaisuuden suunnitteluprosessi sisältää merkkijonotyyppisten sarakkeiden muuntamisen ML-malleille optimaaliseen muotoon. Edistyneenä käyttötapana voit laajentaa tätä käyttöoikeusmallia toteuttaaksesi rivi- ja solutason suojauksen Lake Formationin avulla.

Ratkaisun yleiskatsaus

Ratkaisu sisältää seuraavat korkean tason vaiheet:

  1. Määritä resurssit kanssa AWS-pilven muodostuminen.
  2. Esikäsittele tietojoukko, mukaan lukien henkilökohtaisten tunnistetietojen havaitseminen ja hienorakeinen pääsynhallinta, interaktiivisessa AWS Glue -istunnossa.
  3. Suorita ominaisuussuunnittelu interaktiivisessa AWS Glue -istunnossa.
  4. Harjoittele ja ota käyttöön ML-malli SageMakerin sisäänrakennetun XGBoost-algoritmin avulla.
  5. Arvioi ML-malli.

Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.

Edellytykset

Tämän opetusohjelman suorittaminen edellyttää, että sinulla on seuraavat edellytykset:

Määritä resurssit AWS CloudFormationin avulla

Tämä viesti sisältää CloudFormation-mallin nopeaa käyttöönottoa varten. Voit tarkistaa ja muokata sitä tarpeidesi mukaan. Jos haluat määrittää resursseja mieluummin AWS-hallintakonsoli ja AWS CLI AWS CloudFormationin sijaan, katso ohjeet tämän viestin lopussa olevassa liitteessä.

CloudFormation-malli luo seuraavat resurssit:

Luo resurssit suorittamalla seuraavat vaiheet:

  1. Kirjaudu sisään konsoliin.
  2. Valita Käynnistä pino:
    Käynnistä-painike
  3. Valita seuraava.
  4. varten DataEngineerPwd ja DataScientistPwd, syötä oma salasanasi datasuunnittelijan ja datatieteilijän käyttäjille.
  5. varten Liimatietokannan nimi, tulla sisään demo.
  6. varten Liimataulukon nimi, tulla sisään web_marketing.
  7. varten S3BucketNameForInput, tulla sisään blog-studio-pii-dataset-.
  8. varten S3BucketNameForOutput, tulla sisään blog-studio-output-.
  9. varten SageMakerDomainId, anna SageMaker-verkkotunnuksesi tunnus, jonka olet laatinut edellytysvaiheissa.
  10. Valita seuraava.
  11. Valitse seuraavalla sivulla seuraava.
  12. Tarkista yksityiskohdat viimeisellä sivulla ja valitse Tunnustan, että AWS CloudFormation saattaa luoda IAM-resursseja.
  13. Valita luoda.

Pinon luominen voi kestää jopa 10 minuuttia. Pino luo IAM-rooleja ja SageMaker-käyttäjäprofiileja kahdelle persoonalle: tietosuunnittelijalle ja tietotieteilijälle. Se luo myös tietokannan demon ja taulukon web_marketing mallitietojoukon kanssa.

Pinon luomishetkellä tietosuunnittelijan persoonalla on täysi pääsy taulukkoon, mutta datatieteilijällä ei ole vielä pääsyä taulukkoon.

Esikäsittele tietojoukko

Aloitetaan tietojen esikäsittely interaktiivisessa AWS Glue -istunnossa. Tietosuunnittelija haluaa tarkistaa tiedot, onko arkaluontoisia tietoja vai ei, ja myöntää datatieteilijälle minimaalisen käyttöoikeuden. Voit ladata muistikirjan osoitteesta tämä paikka.

  1. Kirjaudu sisään konsoliin data-insinöörin käyttäjällä.
  2. Valitse SageMaker-konsolissa käyttäjät.
  3. Valitse data-insinöörin käyttäjä ja valitse Avaa Studio.
  4. Luo uusi muistikirja ja valitse SparkAnalytics 1.0 varten Kuva ja Liimaa PySpark varten Ydin.
  5. Aloita interaktiivinen istunto seuraavalla taikuudella asentaaksesi Boto3:n uudemman version (tätä tarvitaan create_data_cells_filter menetelmä):
    %additional_python_modules boto3==1.24.82

  6. Alusta istunto:
    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. Luo AWS Glue DynamicFrame äskettäin luodusta taulukosta ja ratkaista valintatyypit perustuu luetteloskeemaan, koska haluamme käyttää luettelossa määritettyä skeemaa automaattisesti dataan perustuvan skeeman sijaan:
    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. Tarkista taulukosta, onko henkilökohtaisia ​​tunnistetietoja AWS Glue PII -tunnistuksen avulla:
    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. Tarkista, sisältävätkö henkilökohtaisiksi tunnisteiksi luokitellut sarakkeet arkaluontoisia tietoja vai eivät (jos ei, päivitä Classified_map poistaaksesi ei-arkaluonteiset sarakkeet):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Määritä Lake Formationin käyttöoikeudet käyttämällä tietosolusuodatinta automaattisesti havaituille sarakkeille ja rajaa sarakkeet tietotutkijapersoonaan:
    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. Kirjaudu Studioon datatieteilijänä nähdäksesi, etteivät PII-sarakkeet ole näkyvissä. Voit ladata muistikirjan osoitteesta tämä paikka.
  12. Luo uusi muistikirja ja valitse SparkAnalytics 1.0 varten Kuva ja Liimaa PySpark varten Ydin:
    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()

Suorita ominaisuussuunnittelu

Käytämme Apache Spark ML -kirjastoa ominaisuuksien suunnitteluun datatieteilijäkäyttäjänä ja kirjoitamme sitten ulostulon takaisin Amazon S3:lle.

  1. Seuraavassa solussa käytämme ominaisuuksia kohteesta Apache Spark ML -kirjasto:
    • StringIndexer kartoittaa merkkijonosarakkeen tarrahakemistosarakkeeseen.
    • OneHotEncoder kartoittaa kategorisen ominaisuuden, joka esitetään etikettiindeksinä, binäärivektoriin, jossa on enintään yksi yksi arvo, joka osoittaa tietyn kategorisen ominaisuuden olemassaolon. Tätä muunnosa käytetään ML-algoritmeille, jotka odottavat jatkuvia ominaisuuksia.
    • VectorAssembler on muuntaja, joka yhdistää tietyn luettelon sarakkeista yhdeksi vektorisarakkeeksi, jota sitten käytetään ML-mallien koulutuksessa algoritmeille, kuten logistiselle regressio- ja päätöspuille.
    #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. Lopullinen muunnettu DataFrame voidaan luoda käyttämällä Pipeline-kirjastoa. Liukulinja määritellään vaiheiden sarjana. Nämä vaiheet ajetaan järjestyksessä ja syöte DataFrame muunnetaan, kun se kulkee kunkin vaiheen läpi.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Seuraavaksi jaamme tietojoukon koulutuksiin, validoimme ja testaamme DataFrame-kehyksen ja tallennamme sen S3-alueeseen ML-mallin kouluttamiseksi (anna AWS-tilitunnuksesi seuraavassa koodissa):
    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))

Kouluta ja ota käyttöön ML-malli

Edellisessä osiossa viimeistelimme ominaisuussuunnittelun, joka sisälsi merkkijonosarakkeiden muuntamisen, kuten region, jobroleja usedpromo muotoon, joka on optimaalinen ML-malleille. Lisäsimme myös sarakkeita, kuten pageviewspervisit ja totalwebvisits, joka auttaa ennustamaan asiakkaan taipumusta ostaa jokin tuote.

Koulutamme nyt ML-mallin lukemalla harjoitus- ja validointitietojoukon SageMakerin sisäänrakennetun XGBoost-algoritmin avulla. Sitten otamme mallin käyttöön ja suoritamme tarkkuustarkistuksen. Voit ladata muistikirjan osoitteesta tämä paikka.

Seuraavassa solussa luemme tietoja toisesta S3-alueesta, joka sisältää ominaisuussuunnittelutoimintojemme tulosteen. Sitten käytämme sisäänrakennettua XGBoost-algoritmia mallin kouluttamiseen.

  1. Avaa uusi muistikirja. Valita data Science varten Kuva ja Python 3 varten Ydin (anna AWS-tilisi tunnus seuraavassa koodissa):
    #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. Kun koulutus on valmis, voimme ottaa mallin käyttöön SageMaker-isännöintipalveluilla:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Arvioi ML-malli

Käytämme testitietojoukkoa mallin arvioimiseen ja poistamme päätelmäpäätepisteen, kun olemme valmis, jotta vältytään mahdollisilta jatkuvilta maksuilta.

  1. Arvioi malli seuraavalla koodilla:
    #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))

    Näyteajon tarkkuustulos oli 84.6 %. Tämä voi olla hieman erilainen juoksussasi tietojoukon satunnaisen jaon vuoksi.

  2. Voimme poistaa päätelmäpäätepisteen seuraavalla koodilla:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Puhdistaa

Nyt viimeiseen vaiheeseen, resurssien puhdistamiseen.

  1. Tyhjennä kaksi CloudFormation-pinon kautta luotua ämpäriä.
  2. Poista käyttäjään liittyvät sovellukset profiles data-scientist ja data-engineer Studion sisällä.
  3. Poista CloudFormation-pino.

Yhteenveto

Tässä viestissä esittelimme ratkaisun, jonka avulla henkilöt, kuten datainsinöörit ja datatieteilijät, voivat suorittaa ominaisuussuunnittelua mittakaavassa. Interaktiivisten AWS Glue -istuntojen avulla voit helposti toteuttaa ominaisuussuunnittelua mittakaavassa automaattisen PII-tunnistuksen ja hienorakeisen kulunhallinnan avulla ilman, että sinun tarvitsee hallita taustalla olevaa infrastruktuuria. Käyttämällä Studiota yhtenäisenä sisääntulopisteenä voit saada yksinkertaistetun ja integroidun kokemuksen päästä päähän ML-työnkulun rakentamiseen: tietojen valmistelusta ja suojaamisesta ML-mallien rakentamiseen, koulutukseen, viritykseen ja käyttöönottoon. Lisätietoja on osoitteessa Interaktiivisten AWS Glue -istuntojen käytön aloittaminen ja Amazon SageMaker Studio.

Olemme erittäin innoissamme tästä uudesta ominaisuudesta ja haluamme nähdä, mitä aiot rakentaa sen avulla!


Liite: Määritä resurssit konsolin ja AWS CLI:n kautta

Täytä tämän osion ohjeet määrittääksesi resurssit käyttämällä konsolia ja AWS CLI:tä CloudFormation-mallin sijaan.

Edellytykset

Suorittaaksesi tämän opetusohjelman, sinulla on oltava pääsy AWS CLI:hen (katso AWS CLI:n käytön aloittaminen) tai käytä komentorivikäyttöä osoitteesta AWS CloudShell.

Määritä IAM-ryhmä, käyttäjät, roolit ja käytännöt

Tässä osiossa luomme kaksi IAM-käyttäjää: data-engineer ja data-scientist, jotka kuuluvat IAM-ryhmään data-platform-group. Sitten lisäämme yhden IAM-käytännön IAM-ryhmään.

  1. IAM-konsolissa luo käytäntö JSON-välilehdellä luoda uuden IAM: n hallinnoiman käytännön nimeltä DataPlatformGroupPolicy. Käytännön avulla ryhmän käyttäjät voivat käyttää Studiota, mutta vain käyttämällä SageMaker-käyttäjäprofiilia, jonka tunniste vastaa heidän IAM-käyttäjänimeään. Käytä seuraavaa JSON-käytäntödokumenttia lupien myöntämiseen:
    {
       "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. Luo IAM-ryhmä nimeltään data-platform-group.
  3. Etsi ja liitä AWS-hallittu käytäntö nimeltä DataPlatformGroupPolicy ryhmään.
  4. Luo IAM-käyttäjiä kutsutaan data-insinööriksi ja data-tutkijaksi IAM-ryhmän data-platform-ryhmässä.
  5. Luo uusi hallinnoitu käytäntö nimeltä SageMakerExecutionPolicy (anna alueesi ja tilitunnuksesi seuraavassa koodissa):
    {
       "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. Luo uusi hallinnoitu käytäntö nimeltään 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. Luo IAM-rooli SageMakerille tietosuunnittelijalle (data-engineer), jota käytetään vastaavan käyttäjäprofiilin suoritusroolina. Käytössä Liitä käyttöoikeuskäytäntö -sivulle AmazonSageMakerFullAccess (AWS-hallittu käytäntö) on oletuksena liitetty. Poistat tämän käytännön myöhemmin säilyttääksesi vähimmäisoikeudet.
    1. varten Roolinimi, käytä tämän osion alussa esiteltyä nimeämiskäytäntöä roolin nimeämiseen SageMakerStudioExecutionRole_data-engineer.
    2. varten Tunnisteet, lisää avain userprofilename ja value data-engineer.
    3. Valita Luo rooli.
    4. Voit lisätä jäljellä olevat käytännöt Roolit -sivulla, valitse juuri luomasi roolin nimi.
    5. Alle Oikeudet, poista AmazonSageMakerFullAccess-käytäntö.
    6. On Liitä käyttöoikeuskäytäntö -sivulla valitse AWS-hallittu käytäntö AwsGlueSessionUserRestrictedServiceRole ja luomasi asiakkaan hallinnoimat SageMakerExecutionPolicy- ja SageMakerAdminPolicy-käytännöt.
    7. Valita Liitä käytännöt.
    8. Muuttaa roolisi luottamussuhde:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Luo IAM-rooli SageMakerille datatieteilijälle (data-scientist), jota käytetään vastaavan käyttäjäprofiilin suoritusroolina.
    1. varten Roolinimi, nimeä rooli SageMakerStudioExecutionRole_data-scientist.
    2. varten Tunnisteet, lisää avain userprofilename ja value data-scientist.
    3. Valita Luo rooli.
    4. Voit lisätä jäljellä olevat käytännöt Roolit -sivulla, valitse juuri luomasi roolin nimi.
    5. Alle Oikeudet, poista AmazonSageMakerFullAccess-käytäntö.
    6. On Liitä käyttöoikeuskäytäntö -sivulla valitse AWS-hallittu käytäntö AwsGlueSessionUserRestrictedServiceRole ja luomasi asiakkaan hallinnoima käytäntö SageMakerExecutionPolicy.
    7. Valita Liitä käytännöt.
    8. Muuttaa roolisi luottamussuhde:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Määritä SageMaker-käyttäjäprofiilit

Voit luoda SageMaker-käyttäjäprofiileja käyttämällä studiouserid -tunniste, suorita seuraavat vaiheet:

  1. Luo Studion käyttäjäprofiili tietosuunnittelijalle AWS-CLI:n tai CloudShellin avulla (anna tilisi tunnus ja Studio-verkkotunnuksesi tunnus seuraavassa koodissa):
    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. Toista vaihe luodaksesi käyttäjäprofiilin datatieteilijälle ja korvaa tilin tunnus ja Studio-verkkotunnuksen tunnus:
    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

Luo S3-ryhmät ja lähetä näytetietojoukko

Tässä osiossa luot kaksi S3-ämpäriä. Ensimmäisessä ryhmässä on verkkomarkkinointiin liittyvä esimerkkitietojoukko. Tietotieteilijä käyttää toista säilöä ominaisuussuunnittelutehtävien tulosteen tallentamiseen, ja tätä lähtötietojoukkoa käytetään ML-mallin kouluttamiseen.

Luo ensin S3-säilö syöttötiedoille:

  1. Lataa tietojoukko.
  2. Valitse Amazon S3 -konsolissa kauhat navigointipaneelissa.
  3. Valita Luo ämpäri.
  4. varten Alue, valitse SageMaker-toimialueen alue, joka sisältää luomasi käyttäjäprofiilit.
  5. varten Kauhan nimi, tulla sisään blog-studio-pii-dataset-.
  6. Valita Luo ämpäri.
  7. Valitse luomasi ämpäri ja valitse Lataa.
  8. In Valitse tiedostot osiossa, valitse Lisätä tiedostoja ja lataa lataamasi tietojoukko.
    Nyt luot sängyn tulostiedoille:
  9. On kauhat sivu, valitse Luo ämpäri.
  10. varten Alue, valitse SageMaker-toimialueen alue, joka sisältää luomasi käyttäjäprofiilit.
  11. varten Kauhan nimi, tulla sisään blog-studio-output-.
  12. Valita Luo ämpäri.

Luo AWS Glue -tietokanta ja -taulukko

Tässä osiossa luot AWS Glue -tietokannan ja -taulukon tietojoukolle.

  1. Lake Formation -konsolin alla Tietoluettelo valitse siirtymisruudussa Tietokannat.
  2. Valita Lisää tietokanta.
  3. varten Nimi, avaa demo.
  4. Valita Luo tietokanta.
  5. Alle Tietoluettelo, valitse taulukot.
  6. varten Nimi, tulla sisään web_marketing.
  7. varten tietokantavalitse demo.
  8. varten Sisällytä polku, kirjoita S3-säihön polku syöttötietoja varten.
  9. varten Luokittelu, valitse CSV.
  10. Alle Malli, valitse Lataa Schema.
  11. Kirjoita seuraava JSON-taulukko tekstiruutuun:
    [
       {
          "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. Valita Lataa.
  13. Valita Lähetä.
  14. Alle Taulukon tiedot, valitse Muokkaa taulukkoa.
  15. Alle Taulukon ominaisuudet, valitse Lisää.
  16. varten avain, tulla sisään skip.header.line.count, Ja Arvo, kirjoita 1.
  17. Valita Säästä.

Määritä Lake Formationin käyttöoikeudet

Tässä osiossa määrität Lake Formationin käyttöoikeudet salliaksesi IAM-roolin SageMakerStudioExecutionRole_data-engineer luodaksesi tietokannan ja rekisteröidäksesi S3-sijainnin Lake Formationissa.

Rekisteröi ensin datajärven sijainti, jotta voit hallita taulukoita sijainnin alla Lake Formation -oikeuksissa:

  1. Valita Datajärvien sijainnit.
  2. Valita Rekisteröi sijainti.
  3. varten Amazon S3 -polku, tulla sisään s3://blog-studio-pii-dataset-/ (tietojoukon sisältävä ämpäri).
  4. Valita Rekisteröi sijainti.
    Nyt myönnät Lake Formation -tietokannan ja taulukon käyttöoikeudet IAM-rooleille SageMakerStudioExecutionRole_data-engineer ja SageMakerStudioExecutionRole_data-scientist. Myönnä ensin tietokannan käyttöoikeus kohteelle SageMakerStudioExecutionRole_data-engineer:
  5. Alle Oikeudet, valitse Datajärven käyttöoikeudet.
  6. Alle Tietojen käyttöoikeus, valitse Grant.
  7. varten Päämiehet, valitse IAM-käyttäjät ja -roolitja valitse rooli SageMakerStudioExecutionRole_data-engineer.
  8. varten Käytäntötunnisteet tai luetteloresurssit, valitse Nimetyt tietoluetteloresurssit.
  9. varten Tietokannat, valitse demo.
  10. varten Tietokannan käyttöoikeudet, valita suuri.
  11. Valita Grant.
    Seuraavaksi myönnä taulukon käyttöoikeus kohteelle SageMakerStudioExecutionRole_data-engineer:
  12. Alle Tietojen käyttöoikeus, valitse Grant.
  13. varten Päämiehet, valitse IAM-käyttäjät ja -roolitja valitse rooli SageMakerStudioExecutionRole_data-engineer.
  14. varten Käytäntötunnisteet tai luetteloresurssit, valitse Nimetyt tietoluetteloresurssit.
  15. varten Tietokannat, valitse demo.
  16. varten taulukot, valitse web_marketing.
  17. varten Pöytä käyttöoikeudet, valita suuri.
  18. varten Myönnetty käyttöoikeudet, valita suuri.
  19. Valita Grant.
    Lopuksi myönnä tietokannan käyttöoikeus kohteelle SageMakerStudioExecutionRole_data-scientist:
  20. Alle Tietojen käyttöoikeus, valitse Grant.
  21. varten Päämiehet, valitse IAM-käyttäjät ja -roolitja valitse rooli SageMakerStudioExecutionRole_data-scientist.
  22. varten Käytäntötunnisteet tai luetteloresurssit, valitse Nimetyt tietoluetteloresurssit.
  23. varten Tietokannat, valitse demo.
  24. varten Tietokannan käyttöoikeudet, valita Kuvata.
  25. Valita Grant.

Tietoja Tekijät

Laajamittainen ominaisuussuunnittelu ja arkaluontoinen tietosuoja käyttämällä interaktiivisia AWS Glue -istuntoja ja Amazon SageMaker Studio PlatoBlockchain Data Intelligencea. Pystysuuntainen haku. Ai.

Praveen Kumar on AWS:n Analytics-ratkaisuarkkitehti, jolla on asiantuntemusta nykyaikaisten data- ja analytiikkaalustojen suunnittelusta, rakentamisesta ja toteuttamisesta pilvipohjaisia ​​palveluita käyttäen. Hänen kiinnostuksen kohteitaan ovat palvelinton teknologia, modernit pilvitietovarastot, suoratoisto ja ML-sovellukset.

Laajamittainen ominaisuussuunnittelu ja arkaluontoinen tietosuoja käyttämällä interaktiivisia AWS Glue -istuntoja ja Amazon SageMaker Studio PlatoBlockchain Data Intelligencea. Pystysuuntainen haku. Ai.

Noritaka Sekiyama on pääasiallinen Big Data -arkkitehti AWS Glue -tiimissä. Hän nauttii yhteistyöstä eri tiimien kanssa tuottaakseen tämän postauksen kaltaisia ​​tuloksia. Vapaa-ajallaan hän pelaa videopelejä perheensä kanssa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen