SageMaker exécute des notebooks, des jobs d'entraînement et des endpoints d'inférence, chacun attaché à un rôle d'exécution ayant accès aux données d'entraînement dans S3. Deux choses valent la peine d'être prises : les données et modèles, et le rôle d'exécution. Un principal disposant de sagemaker:CreatePresignedNotebookInstanceUrl ouvre un shell dans un notebook en service et lit les identifiants de son rôle depuis le service de métadonnées, ce qui est la même élévation PassRole documentée dans identity.
Ouvrir un notebook que vous pouvez atteindre#
aws sagemaker list-notebook-instances
aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <nb>
# open the URL, drop to a terminal, then read the attached role from IMDS
Lire données et modèles#
aws sagemaker list-training-jobs
aws sagemaker describe-training-job --training-job-name <j> \
--query 'InputDataConfig[].DataSource.S3DataSource.S3Uri' # training data in S3
aws sagemaker list-models ; aws sagemaker describe-model --model-name <m>
Notes d'exploitation#
- Le rôle d'exécution du notebook est généralement large (S3 complet, parfois davantage) ; le voler depuis IMDS transforme l'accès aux données en mouvement dans le compte.
- Les définitions de jobs d'entraînement et de modèles pointent directement vers les compartiments S3 contenant les données, que vous lisez ensuite avec le rôle que vous venez de prendre.
- Créer un nouveau notebook avec un rôle privilégié passé est la variante plus bruyante de
PassRolelorsque vous ne pouvez pas atteindre un notebook existant.
Outils#
- AWS CLI (
sagemaker create-presigned-notebook-instance-url,describe-training-job). - Pacu (
sagemaker__*) : énumérer notebooks, jobs et modèles.