Personnalisation d’une instance de bloc-notes SageMaker à l’aide d’un script LCC
Important
Les politiques IAM personnalisées qui autorisent Amazon SageMaker Studio ou Amazon SageMaker Studio Classic à créer des ressources Amazon SageMaker doivent également accorder des autorisations pour ajouter des balises à ces ressources. L’autorisation d’ajouter des balises aux ressources est requise, car Studio et Studio Classic balisent automatiquement toutes les ressources qu’ils créent. Si une politique IAM autorise Studio et Studio Classic à créer des ressources mais n’autorise pas le balisage, des erreurs « AccessDenied » peuvent se produire lors de la tentative de création de ressources. Pour plus d’informations, consultez Octroi d’autorisations pour baliser les ressources SageMaker AI.
Les Politiques gérées par AWS pour Amazon SageMaker AI qui autorisent la création de ressources SageMaker incluent déjà des autorisations permettant d’ajouter des balises lors de la création de ces ressources.
Une configuration de cycle de vie (LCC) fournit des scripts shell qui s’exécutent uniquement lorsque vous créez l’instance de bloc-notes ou chaque fois que vous en démarrez une. Lorsque vous créez une instance de bloc-notes, vous pouvez créer une nouvelle configuration LCC ou attacher une configuration LCC que vous possédez déjà. Les scripts de configuration de cycle de vie sont utiles dans les cas d’utilisation suivants :
-
Installation de packages ou d’exemples de blocs-notes sur une instance de bloc-notes
-
Configuration de la mise en réseau et de la sécurité pour une instance de bloc-notes
-
Utilisation d’un script shell pour personnaliser une instance de bloc-notes
Vous pouvez également utiliser un script de configuration du cycle de vie pour accéder aux services AWS à partir de votre ordinateur portable. Par exemple, vous pouvez créer un script qui vous permet d’utiliser votre bloc-notes pour contrôler d’autres ressources AWS, telles qu’une instance Amazon EMR.
Notre équipe gère un référentiel public de configurations de cycle de vie d’instances de bloc-notes qui traitent les cas d’utilisation courants pour personnaliser les instances de bloc-notes à l’adresse https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples
Note
Chaque script a une limite de 16 384 caractères.
La valeur de la variable d’environnement $PATH qui est disponible pour les deux scripts est /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin. Le répertoire de travail, qui correspond à la valeur de la variable d’environnement $PWD, est /.
Affichez CloudWatch Logs pour les configurations de cycle de vie d’instance de bloc-notes dans le groupe de journaux /aws/sagemaker/NotebookInstances du flux de journaux [notebook-instance-name]/[LifecycleConfigHook].
Les scripts ne peuvent pas s’exécuter pendant plus de 5 minutes. Si un script s’exécute pendant plus de 5 minutes, il échoue et l’instance de bloc-notes n’est pas créée ni démarrée. Pour vous aider à diminuer la durée de l’exécution de scripts, essayez ce qui suit :
-
Réduisez les étapes nécessaires. Par exemple, limitez les environnements conda pour installer de grands packages.
-
Exécutez les tâches en parallèle.
-
Utilisez la commande
nohupdans votre script.
Vous pouvez afficher la liste des configurations de cycle de vie d’instance de bloc-notes que vous avez créées au préalable en choisissant Configuration du cycle de vie dans la console SageMaker AI. Vous pouvez attacher une configuration LCC d’instance de bloc-notes lorsque vous créez une nouvelle instance de bloc-notes. Pour plus d’informations sur la création d’une instance de bloc-notes, consultez Création d’une instance de bloc-notes Amazon SageMaker.
Bonnes pratiques en matière de configuration du cycle de vie
Les bonnes pratiques suivantes sont exigées pour utiliser les configurations de cycle de vie :
Important
Il n'est pas recommandé de stocker des informations sensibles dans votre script de configuration du cycle de vie.
-
Les configurations de cycle de vie sont exécutées en tant qu’utilisateur
root. Si votre script effectue des modifications dans le répertoire/home/ec2-user/SageMaker, (par exemple, l’installation d’un package avecpip), utilisez la commandesudo -u ec2-userpour effectuer l’exécution en tant qu’utilisateurec2-user. Il s’agit du même utilisateur que celui sous lequel Amazon SageMaker AI s’exécute. -
Les instances de bloc-notes SageMaker AI utilisent des environnements
condapour implémenter différents noyaux pour les blocs-notes Jupyter. Si vous souhaitez installer des packages qui sont disponibles pour un ou plusieurs noyaux de bloc-notes, ajoutez les commandes pour installer les packages avec les commandes d’environnementcondaqui activent l’environnement conda contenant le noyau pour l’installation des packages.Par exemple, si vous souhaitez installer un package seulement pour l’environnement
python3, utilisez le code suivant :#!/bin/bash sudo -u ec2-user -i <<EOF # This will affect only the Jupyter kernel called "conda_python3". source activate python3 # ReplacemyPackagewith the name of the package you want to install. pip installmyPackage# You can also perform "conda install" here as well. source deactivate EOFSi vous souhaitez installer un package dans tous les environnements conda de l’instance de bloc-notes, utilisez le code suivant :
#!/bin/bash sudo -u ec2-user -i <<EOF # Note that "base" is special environment name, include it there as well. for env in base /home/ec2-user/anaconda3/envs/*; do source /home/ec2-user/anaconda3/bin/activate $(basename "$env") # Installing packages in the Jupyter system environment can affect stability of your SageMaker # Notebook Instance. You can remove this check if you'd like to install Jupyter extensions, etc. if [ $env = 'JupyterSystemEnv' ]; then continue fi # ReplacemyPackagewith the name of the package you want to install. pip install --upgrade --quietmyPackage# You can also perform "conda install" here as well. source /home/ec2-user/anaconda3/bin/deactivate done EOF -
Tous les environnements conda doivent être stockés dans le dossier des environnements par défaut (c.-à-d. /home/user/anaconda3/envs).
Important
Lorsque vous créez ou modifiez un script, nous vous recommandons d’utiliser un éditeur de texte qui fournit des sauts de ligne de style UNIX, tel que l’éditeur de texte disponible dans la console lors de la création d’un bloc-notes. La copie de texte à partir d’un système d’exploitation autre que Linux peut inclure des sauts de ligne incompatibles et entraîner une erreur inattendue.