Administración de clústeres con AMI personalizadas
Una vez creada la AMI personalizada, puede utilizarla para crear o actualizar un clúster de Amazon SageMaker HyperPod. También puede escalar verticalmente o añadir grupos de instancias que usen la nueva AMI.
Permisos necesarios para las operaciones de clúster
Añada los siguientes permisos al usuario administrador del clúster que opera y configura los clústeres de SageMaker HyperPod. En el siguiente ejemplo de política, se incluye el conjunto mínimo de permisos para que los administradores de clústeres ejecuten las API principales de SageMaker HyperPod y administren los clústeres de SageMaker HyperPod con AMI personalizadas.
Tenga en cuenta que los permisos para compartir instantáneas de AMI y AMI EBS se incluyen mediante los permisos de las API ModifyImageAttribute y ModifySnapshotAttribute como parte de la siguiente política. Para limitar los permisos de uso compartido, puede seguir los siguientes pasos:
-
Agregue etiquetas para controlar los permisos de uso compartido de la AMI para la AMI y la instantánea de la AMI. Por ejemplo, puede etiquetar la AMI con
AllowSharingcomotrue. -
Agregue la clave de contexto a la política para permitir que solo se compartan las AMI etiquetadas con determinadas etiquetas.
La siguiente política es una política restringida para garantizar que solo se permitan las AMI etiquetadas con AllowSharing como true.
{ "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" } } } ] }
importante
Si tiene previsto usar una AMI personalizada cifrada, asegúrese de que la clave de KMS cumpla con los permisos descritos en Cifrado de AWS KMS key administrado por el cliente para SageMaker HyperPod. Además, asegúrese de que la clave de KMS de la AMI personalizada también se utilice para cifrar el volumen raíz de Amazon EBS del clúster.
Creación de un clúster
Puede especificar su AMI personalizada en el campo ImageId de la operación CreateCluster.
En los siguientes ejemplos se muestra cómo crear un clúster con una AMI personalizada, con y sin una clave de AWS KMS administrada por el cliente para cifrar los volúmenes del clúster.
Actualización del software de clúster
Si quiere actualizar un grupo de instancias existente en su clúster con la AMI personalizada, puede usar la operación UpdateClusterSoftware y especificar su AMI personalizada en el campo ImageId. Tenga en cuenta que, a menos que especifiques el nombre de un grupo de instancias específico en su solicitud, la nueva imagen se aplicará a todos los grupos de instancias del clúster.
En el siguiente ejemplo se muestra cómo actualizar el software de plataforma de un clúster con una AMI personalizada:
aws sagemaker update-cluster-software \ --cluster-name<exampleClusterName>\ --instance-groups<instanceGroupToUpdate>\ --image-id<customAmiId>
Escalado vertical de un grupo de instancias
En los siguientes ejemplos, se muestra cómo escalar un grupo de instancias verticalmente para un clúster con una AMI personalizada, con o sin una clave de AWS KMS administrada por el cliente para el cifrado.
Adición de un grupo de instancias
En el siguiente ejemplo se muestra cómo añadir un grupo de instancias a un clúster con una AMI personalizada:
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>" }'