Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
IAMGestione degli accessi
Le seguenti sezioni descrivono i AWS Identity and Access Management (IAM) requisiti per Amazon SageMaker Pipelines. Per un esempio di implementazione delle autorizzazioni, consulta Prerequisiti.
Argomenti
Autorizzazioni relative ai ruoli della pipeline
La tua pipeline richiede un ruolo di esecuzione della IAM pipeline che viene passato a Pipelines quando crei una pipeline. Il ruolo per l' SageMaker istanza che sta creando la pipeline deve disporre dell'iam:PassRole
autorizzazione per il ruolo di esecuzione della pipeline per poterlo passare. Per ulteriori informazioni sui IAM ruoli, consulta IAM Ruoli.
Il ruolo di esecuzione della pipeline richiede le seguenti autorizzazioni:
-
Per passare qualsiasi ruolo a un SageMaker lavoro all'interno di una pipeline, l'
iam:PassRole
autorizzazione per il ruolo che viene ceduto. -
Autorizzazioni
Create
eDescribe
per ogni tipo di processo nella pipeline. -
Autorizzazioni Amazon S3 per utilizzare la funzione
JsonGet
. È possibile controllare l’accesso alle risorse Amazon S3 utilizzando policy basate sulle identità e sulle risorse. Una politica basata sulle risorse viene applicata al bucket Amazon S3 e concede a Pipeline l'accesso al bucket. Una policy basata sull'identità offre alla tua pipeline la possibilità di effettuare chiamate Amazon S3 dal tuo account. Per ulteriori informazioni sulle differenze basate sulle risorse e sulle identità, consulta Policy basate sulle identità e policy basate su risorse.{ "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::
<your-bucket-name>
/*", "Effect": "Allow" }
Autorizzazioni relative alle fasi della pipeline
Le pipeline SageMaker includono passaggi che eseguono i job. Affinché le fasi della pipeline eseguano questi processi, è necessario che nell'account sia presente un IAM ruolo che fornisca l'accesso alla risorsa necessaria. Questo ruolo viene trasferito al responsabile del SageMaker servizio dalla pipeline. Per ulteriori informazioni sui IAM ruoli, vedere IAMRuoli.
Per impostazione predefinita, ogni fase assume il ruolo di esecuzione della pipeline. Facoltativamente, puoi assegnare un ruolo diverso a qualsiasi fase della pipeline. Ciò garantisce che il codice di ogni fase non abbia la possibilità di influire sulle risorse utilizzate in altre fasi, a meno che non esista una relazione diretta tra le due fasi specificate nella definizione della pipeline. Questi ruoli vengono trasmessi quando si definisce lo strumento di elaborazione o valutazione per la propria fase. Per esempi su come includere questi ruoli in queste definizioni, consulta la documentazione di SageMakerPython SDK
Personalizza la gestione degli accessi per i lavori di Pipelines
Puoi personalizzare ulteriormente IAM le tue politiche in modo che i membri selezionati dell'organizzazione possano eseguire alcune o tutte le fasi della pipeline. Ad esempio, puoi concedere a determinati utenti l'autorizzazione a creare processi di addestramento, a un altro gruppo di utenti l'autorizzazione a creare processi di elaborazione e a tutti gli utenti l'autorizzazione a eseguire le fasi rimanenti. Per utilizzare questa funzionalità, seleziona una stringa personalizzata con il prefisso del nome del processo. L'amministratore inserisce il prefisso nel campo consentitoARNs, mentre il data scientist include questo prefisso nelle istanze della pipeline. Poiché la IAM policy per gli utenti autorizzati contiene un job ARN con il prefisso specificato, i job successivi della fase della pipeline dispongono delle autorizzazioni necessarie per procedere. Il prefisso del processo è disattivato per impostazione predefinita: devi attivare questa opzione nella tua classe Pipeline
per utilizzarla.
Per i processi con il prefisso disattivato, il nome del processo è formattato come mostrato e rappresentato da una concatenazione di campi, come descritto nella tabella seguente:
pipelines-
<executionId>
-<stepNamePrefix>
-<entityToken>
-<failureCount>
Campo | Definizione |
---|---|
pipelines |
Una stringa statica sempre anteposta. Questa stringa identifica il servizio di orchestrazione della pipeline come origine del processo. |
executionId |
Un buffer randomizzato per l'istanza in esecuzione della pipeline. |
stepNamePrefix |
Il nome della fase specificato dall'utente (fornito nell'argomento |
entityToken |
Un token randomizzato per garantire l'idempotenza dell'entità della fase. |
failureCount |
Il numero attuale di tentativi effettuati per completare il lavoro. |
In questo caso, al nome del lavoro non viene aggiunto alcun prefisso personalizzato e la policy corrispondente IAM deve corrispondere a questa stringa.
Per gli utenti che attivano il prefisso del processo, il nome del processo sottostante assume la forma seguente, con il prefisso personalizzato specificato come MyBaseJobName
:
<MyBaseJobName>
-<executionId>
-<entityToken>
-<failureCount>
Il prefisso personalizzato sostituisce la pipelines
stringa statica per aiutarti a restringere la selezione di utenti che possono eseguire il SageMaker job come parte di una pipeline.
Restrizioni sulla lunghezza del prefisso
I nomi dei processi hanno vincoli di lunghezza interni specifici per le singole fasi della pipeline. I vincoli limitano anche la lunghezza consentita del prefisso. I requisiti di lunghezza del prefisso sono i seguenti:
Fase della pipeline | Lunghezza del prefisso |
---|---|
|
38 |
6 |
Applica i prefissi dei job a una policy IAM
L'amministratore crea IAM politiche che consentono agli utenti di prefissi specifici di creare offerte di lavoro. La seguente policy di esempio consente ai data scientist di creare processi di addestramento se utilizzano il prefisso MyBaseJobName
.
{ "Action": "sagemaker:CreateTrainingJob", "Effect": "Allow", "Resource": [ "arn:aws:sagemaker:
region
:account-id
:*/MyBaseJobName-*" ] }
Applicazione di prefissi dei processi alle istanze della pipeline
Specifica il prefisso con l'argomento *base_job_name
della classe dell’istanza di processo.
Nota
Trasmetti il prefisso del processo con l'argomento *base_job_name
all'istanza del processo prima di creare una fase della pipeline. Questa istanza di processo contiene le informazioni necessarie affinché il processo venga eseguito come fase di una pipeline. Questo argomento varia a seconda dell'istanza di processo utilizzata. L'elenco seguente mostra quale argomento utilizzare per ogni tipo di fase della pipeline:
base_job_name
per le classiEstimator
(TrainingStep
),Processor
(ProcessingStep
) eAutoML
(AutoMLStep
)tuning_base_job_name
per la classeTuner
(TuningStep
)transform_base_job_name
per la classeTransformer
(TransformStep
)base_job_name
suCheckJobConfig
per le classiQualityCheckStep
(Quality Check) eClarifyCheckstep
(Clarify Check)Per la classe
Model
, l'argomento utilizzato dipende dal fatto che si eseguacreate
oregister
dal modello prima di trasmettere il risultato aModelStep
Se si chiama
create
, il prefisso personalizzato deriva dall'argomentoname
quando si costruisce il modello (ad esempio,Model(name=)
)Se si chiama
register
, il prefisso personalizzato deriva dall'argomentomodel_package_name
della chiamata aregister
(ad esempio,
)my_model
.register(model_package_name=)
L'esempio seguente mostra come specificare un prefisso per una nuova istanza del processo di addestramento.
# Create a job instance xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, role=role, subnets=["subnet-0ab12c34567de89f0"], base_job_name="MyBaseJobName" security_group_ids=["sg-1a2bbcc3bd4444e55"], tags = [ ... ] encrypt_inter_container_traffic=True, ) # Attach your job instance to a pipeline step step_train = TrainingStep( name="TestTrainingJob", estimator=xgb_train, inputs={ "train": TrainingInput(...), "validation": TrainingInput(...) } )
Per impostazione predefinita, l'aggiunta del prefisso al processo è disattivata. Per attivare questa funzionalità, utilizza l'opzione use_custom_job_prefix
di PipelineDefinitionConfig
come mostrato nel seguente frammento:
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig # Create a definition configuration and toggle on custom prefixing definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True); # Create a pipeline with a custom prefix pipeline = Pipeline( name="MyJobPrefixedPipeline", parameters=[...] steps=[...] pipeline_definition_config=definition_config )
Crea ed esegui la tua pipeline. L'esempio seguente crea ed esegue una pipeline e illustra anche come disattivare l'aggiunta del prefisso ai progetti e rieseguire la pipeline.
pipeline.create(role_arn=sagemaker.get_execution_role()) # Optionally, call definition() to confirm your prefixed job names are in the built JSON pipeline.definition() pipeline.start() # To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline # via upsert() or update(), and start a new run definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()
Allo stesso modo, è possibile attivare la funzionalità per le pipeline esistenti e iniziare una nuova esecuzione che utilizza i prefissi dei processi.
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True) pipeline.pipeline_definition_config = definition_config pipeline.update() execution = pipeline.start()
Infine, puoi visualizzare il tuo processo con prefisso personalizzato chiamando list_steps
sull'esecuzione della pipeline.
steps = execution.list_steps() prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
Policy di controllo dei servizi con Pipelines
Le politiche di controllo dei servizi (SCPs) sono un tipo di politica organizzativa che puoi utilizzare per gestire le autorizzazioni all'interno dell'organizzazione. SCPsoffrono il controllo centralizzato sulle autorizzazioni massime disponibili per tutti gli account dell'organizzazione. Utilizzando Pipelines all'interno della vostra organizzazione, potete assicurarvi che i data scientist gestiscano le esecuzioni della pipeline senza dover interagire con la console. AWS
Se utilizzi una VPC soluzione SCP che limita l'accesso ad Amazon S3, devi adottare misure per consentire alla pipeline di accedere ad altre risorse Amazon S3.
Per consentire a Pipelines di accedere ad Amazon S3 al di fuori del VPC tuo ambiente con questa funzione, aggiorna quella JsonGet
della tua organizzazione SCP per assicurarti che il ruolo che utilizza Pipelines possa accedere ad Amazon S3. A tale scopo, crea un'eccezione per i ruoli utilizzati dall'esecutore Pipelines tramite il ruolo di esecuzione della pipeline utilizzando un tag principale e una chiave di condizione.
Per consentire a Pipelines di accedere ad Amazon S3 al di fuori del tuo VPC
-
Crea un tag univoco per il tuo ruolo di esecuzione della pipeline seguendo i passaggi descritti in Etichettare IAM utenti e ruoli.
-
Concedi un'eccezione all'SCPutilizzo della chiave di
Aws:PrincipalTag IAM
condizione per il tag che hai creato. Per ulteriori informazioni, consulta Creazione, aggiornamento ed eliminazione delle policy di controllo del servizio.