Utilisation d'un registre Docker nécessitant une authentification pour l'entraînement - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un registre Docker nécessitant une authentification pour l'entraînement

Si votre registre Docker nécessite une authentification, vous devez créer une AWS Lambda fonction fournissant des informations d'accès à SageMaker. Ensuite, créez une tâche d'entraînement et fournissez l'ARN de cette fonction Lambda dans l'API create_training_job. Enfin, vous pouvez éventuellement créer un point de terminaison de VPC d'interface pour que votre VPC puisse communiquer avec votre fonction Lambda sans envoyer le trafic sur Internet. Le guide suivant explique comment créer une fonction Lambda, lui attribuer le rôle approprié et créer un point de terminaison de VPC d'interface.

Créer la fonction Lambda

Créez une AWS Lambda fonction qui transmet les informations d'accès SageMaker et renvoie une réponse. L'exemple de code suivant crée le gestionnaire de fonction Lambda, comme suit.

def handler(event, context): response = { "Credentials": {"Username": "username", "Password": "password"} } return response

Le type d'authentification utilisé pour configurer votre registre Docker privé détermine le contenu de la réponse renvoyée par votre fonction Lambda comme suit.

  • Si votre registre Docker privé utilise une authentification de base, la fonction Lambda renverra le nom d'utilisateur et le mot de passe nécessaires pour s'authentifier auprès du registre.

  • Si votre registre Docker privé utilise l'authentification par jeton du porteur, le nom d'utilisateur et le mot de passe sont envoyés à votre serveur d'autorisation, qui renvoie un jeton du porteur. Ce jeton est ensuite utilisé pour l'authentification auprès de votre registre Docker privé.

Note

Si vous avez plusieurs fonctions Lambda pour vos registres dans le même compte et que le rôle d'exécution est le même pour vos tâches d'entraînement, les tâches d'entraînement pour le registre 1 auront accès aux fonctions Lambda pour les autres registres.

Octroi de l'autorisation de rôle appropriée à votre fonction Lambda

L'IAMRole que vous utilisez dans l'create_training_jobAPI doit être autorisé à appeler une AWS Lambda fonction. L'exemple de code suivant montre comment étendre la politique d'autorisation d'un rôle IAM pour appeler myLambdaFunction.

{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }

Pour obtenir des informations sur la modification d'une politique d'autorisations de rôle, consultez Modification d'une politique d'autorisations de rôle (console) dans le Guide de l'utilisateur AWS Identity and Access Management.

Note

Un rôle IAM associé à une politique AmazonSageMakerFullAccessgérée est autorisé à appeler n'importe quelle fonction Lambda dont le nom contient SageMaker « ».

Créer un point de terminaison de VPC d'interface pour Lambda

Si vous créez un point de terminaison d'interface, votre Amazon VPC peut communiquer avec votre fonction Lambda sans envoyer de trafic sur Internet. Pour plus d'informations, consultez Configuration de points de terminaison de VPC d'interface pour Lambda dans leGuide du développeur AWS Lambda .

Une fois le point de terminaison de votre interface créé, SageMaker Training appellera votre fonction Lambda en envoyant une demande via votre VPC à. lambda.region.amazonaws.com Si vous sélectionnez Enable DNS Name (Activer le nom DNS) lorsque vous créez votre point de terminaison d'interface, Amazon Route 53 route l'appel vers le point de terminaison d'interface Lambda. Si vous utilisez un fournisseur DNS différent, vous devez mapper lambda.region.amazonaws.com à votre point de terminaison d'interface Lambda.