Gestion du cluster avec des AMI personnalisées
Une fois l’AMI personnalisée générée, vous pouvez l’utiliser pour créer ou mettre à jour un cluster Amazon SageMaker HyperPod. Vous pouvez également augmenter verticalement ou ajouter des groupes d’instances qui utilisent la nouvelle AMI.
Autorisations requises pour les opérations du cluster
Ajoutez les autorisations suivantes à l’administrateur du cluster qui gère et configure les clusters SageMaker HyperPod. L’exemple de politique suivant inclut l’ensemble minimal d’autorisations permettant aux administrateurs de clusters d’exécuter les API principales de SageMaker HyperPod et de gérer les clusters SageMaker HyperPod avec une AMI personnalisée.
Notez que les autorisations de partage d’instantanés d’AMI et EBS d’AMI sont incluses par le biais des autorisations d’API ModifyImageAttribute et ModifySnapshotAttribute dans le cadre de la politique suivante. Pour réduire la portée des autorisations de partage, procédez comme suit :
-
Ajoutez des balises pour contrôler les autorisations de partage d’AMI sur l’AMI et l’instantané d’AMI. Par exemple, vous pouvez baliser l’AMI avec
AllowSharingdéfini surtrue. -
Ajoutez la clé de contexte dans la politique pour autoriser le partage d’AMI uniquement pour les AMI balisées avec certaines balises.
La politique suivante est une politique à portée réduite visant à garantir que seules les AMI balisées avec AllowSharing défini sur true sont autorisées.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/your-execution-role-name" }, { "Effect": "Allow", "Action": [ "sagemaker:CreateCluster", "sagemaker:DeleteCluster", "sagemaker:DescribeCluster", "sagemaker:DescribeCluterNode", "sagemaker:ListClusterNodes", "sagemaker:ListClusters", "sagemaker:UpdateCluster", "sagemaker:UpdateClusterSoftware", "sagemaker:BatchDeleteClusterNodes", "eks:DescribeCluster", "eks:CreateAccessEntry", "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:AssociateAccessPolicy", "iam:CreateServiceLinkedRole", "ec2:DescribeImages", "ec2:DescribeSnapshots" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:ModifyImageAttribute", "ec2:ModifySnapshotAttribute" ], "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/AllowSharing": "true" } } } ] }
Important
Si vous prévoyez d’utiliser une AMI personnalisée chiffrée, veillez à ce que votre clé KMS réponde aux autorisations décrites dans Chiffrement par AWS KMS key gérée par le client pour SageMaker HyperPod. En outre, assurez-vous que la clé KMS de votre AMI personnalisée est également utilisée pour chiffrer le volume racine Amazon EBS de votre cluster.
Créer un cluster
Vous pouvez spécifier votre AMI personnalisée dans le champ ImageId pour l’opération CreateCluster.
Les exemples suivants montrent comment créer un cluster avec une AMI personnalisée, avec ou sans clé gérée par le client AWS KMS pour chiffrer les volumes du cluster.
Mise à jour du logiciel du cluster
Si vous souhaitez mettre à jour un groupe d’instances existant sur votre cluster avec votre AMI personnalisée, vous pouvez utiliser l’opération UpdateClusterSoftware et spécifier votre AMI personnalisée dans le champ ImageId. Notez que la nouvelle image est appliquée à tous les groupes d’instances de votre cluster, à moins que vous spécifiiez le nom d’un groupe d’instances spécifique dans votre demande.
L’exemple suivant montre comment mettre à jour le logiciel de plateforme d’un cluster avec une AMI personnalisée :
aws sagemaker update-cluster-software \ --cluster-name<exampleClusterName>\ --instance-groups<instanceGroupToUpdate>\ --image-id<customAmiId>
Augmentation verticale d’un groupe d’instances
Les exemples suivants montrent comment augmenter verticalement un groupe d’instances pour un cluster à l’aide d’une AMI personnalisée, avec ou sans clé gérée par le client AWS KMS pour le chiffrement.
Ajout d’un groupe d’instances
L’exemple suivant montre comment ajouter un groupe d’instances à un cluster à l’aide d’une AMI personnalisée :
aws sagemaker update-cluster \ --cluster-name "<exampleClusterName>" \ --instance-groups '{ "InstanceGroupName": "<exampleGroupName>", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 2, "LifeCycleConfig": { "SourceS3Uri": "<s3://amzn-s3-demo-bucket>", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>", "ThreadsPerCore": 1, "ImageId": "<your_custom_ami>" }' '{ "InstanceGroupName": "<exampleGroupName2>", "InstanceType": "ml.c5.2xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "<s3://amzn-s3-demo-bucket>", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "<arn:aws:iam::444455556666:role/Admin>", "ThreadsPerCore": 1, "ImageId": "<your_custom_ami>" }'