Journaliser les appels d'API Amazon SageMaker avec la AWS CloudTrail - Amazon SageMaker

Journaliser les appels d'API Amazon SageMaker avec la AWS CloudTrail

Amazon SageMaker est intégré à AWS CloudTrail, service qui enregistre les mesures prises par un utilisateur, un rôle ou un service AWS dans SageMaker. CloudTrail capture tous les appels d'API pour SageMaker en tant qu'événements, à l'exception de InvokeEndPoint. Les appels capturés incluent les appels provenant de la console SageMaker et les appels de code vers les opérations d'API SageMaker. Si vous créez un journal d'activité, vous pouvez activer l'envoi en continu d'événements CloudTrail à un compartiment Amazon S3, notamment d'événements pour SageMaker. Si vous ne configurez pas de journal d'activité, vous pouvez toujours afficher les événements les plus récents dans la console CloudTrail dans l'historique des événements. Les informations collectées par CloudTrail vous permettent de déterminer la demande qui a été envoyée à SageMaker, l'adresse IP à partir de laquelle la demande a été effectuée, l'auteur et la date de la demande, ainsi que d'autres détails.

Pour en savoir plus sur CloudTrail, consultez le Guide de l'utilisateur AWS CloudTrail.

Par défaut, les données de journaux sont stockées dans CloudWatch Logs pour une durée indéfinie. Vous pouvez néanmoins configurer la durée de stockage des données de journaux dans un groupe de journaux. Pour de plus amples informations, veuillez consulter Change Log Data Retention in CloudWatch Logs (Modifier la durée de conservation des données de journaux dans CloudWatch Logs dans le Guide de l'utilisateur Amazon CloudWatch Logs.

Informations SageMaker dans CloudTrail

CloudTrail est activé dans votre compte AWS lors de la création de ce dernier. Lorsqu'une activité se produit dans Amazon SageMaker, elle est enregistrée dans un événement CloudTrail avec d'autres événements de services AWS dans l'historique des événements. Vous pouvez afficher, rechercher et télécharger les événements récents dans votre compte AWS. Pour plus d'informations, veuillez consulter Affichage des événements avec l'historique des événements CloudTrail.

Pour enregistrer en continu des événements dans votre compte AWS, notamment des événements pour Amazon SageMaker, créez un journal d'activité. Un journal de suivi permet à CloudTrail de livrer des fichiers journaux dans un compartiment Amazon S3. Par défaut, lorsque vous créez un journal d'activité dans la console, il s'applique à toutes les régions AWS. Le journal d'activité consigne les événements de toutes les régions dans la partition AWS et livre les fichiers journaux dans le compartiment Amazon S3 de votre choix. En outre, vous pouvez configurer d'autres services AWS pour analyser et agir sur les données d'événements collectées dans les journaux CloudTrail. Pour en savoir plus, consultez les ressources suivantes :

Toutes les actions SageMaker, à l'exception de InvokeEndpoint, sont journalisées par CloudTrail et documentées dans les Operations. À titre d'exemple, les appels vers les actions CreateTrainingJob, CreateEndpoint et CreateNotebookInstance génèrent des entrées dans les fichiers journaux CloudTrail.

Chaque événement ou entrée du journal contient des informations sur la personne qui a généré la demande. Les informations relatives à l'identité permettent de déterminer les éléments suivants :

  • Si la demande a été effectuée avec les informations d'identification utilisateur racine ou AWS Identity and Access Management (IAM).

  • Si la demande a été effectuée avec les informations d'identification de sécurité temporaires d'un rôle ou d'un utilisateur fédéré.

  • Si la requête a été effectuée par un autre service AWS.

Pour en savoir plus, consultez l'élément userIdentity CloudTrail.

Opérations effectuées par le réglage de modèle automatique

SageMaker prend en charge la journalisation des événements de service non API dans vos fichiers journaux CloudTrail pour les tâches de réglage de modèle automatiques. Ces événements sont liés à vos tâches de réglage, mais ne sont pas le résultat direct d'une requête du client à l'API AWS publique. Par exemple, lorsque vous créez une tâche de réglage d'hyperparamètres en appelant CreateHyperParameterTuningJob, SageMaker crée des tâches d'entraînement afin d'évaluer les différentes combinaisons d'hyperparamètres et trouver le meilleur résultat. De même, lorsque vous appelez StopHyperParameterTuningJob pour arrêter une tâche de réglage d'hyperparamètres, SageMaker peut arrêter toutes tâches d'entraînement associées, en cours d'exécution. Les événements non API de vos tâches de réglage sont journalisés dans CloudTrail pour vous aider à améliorer la gouvernance, la conformité et l'audit des risques et des opérations pour votre compte AWS.

Les entrées de journal générées par les événements de services non-API ont un eventType de AwsServiceEvent au lieu de AwsApiCall.

Comprendre les entrées des fichiers journaux SageMaker

Un journal de suivi est une configuration qui permet la remise d'événements sous forme de fichiers journaux dans un compartiment S3 que vous spécifiez. Les fichiers journaux CloudTrail peuvent contenir une ou plusieurs entrées de journal. Un événement représente une demande individuelle émise à partir d'une source quelconque et comprend des informations sur l'action demandée, la date et l'heure de l'action, les paramètres de la demande, etc. Les fichiers journaux CloudTrail ne constituent pas une trace de pile ordonnée d'appels d'API publics. Ils ne suivent donc aucun ordre précis.

Les exemples suivants présentent une entrée de journal pour l'action CreateEndpoint, qui crée un point de terminaison pour déployer un modèle entraîné.

{ "eventVersion":"1.05", "userIdentity": { "type":"IAMUser", "principalId":"AIXDAYQEXAMPLEUMLYNGL", "arn":"arn:aws:iam::123456789012:user/intern", "accountId":"123456789012", "accessKeyId":"ASXIAGXEXAMPLEQULKNXV", "userName":"intern" }, "eventTime":"2018-01-02T13:39:06Z", "eventSource":"sagemaker.amazonaws.com", "eventName":"CreateEndpoint", "awsRegion":"us-west-2", "sourceIPAddress":"127.0.0.1", "userAgent":"USER_AGENT", "requestParameters": { "endpointName":"ExampleEndpoint", "endpointConfigName":"ExampleEndpointConfig" }, "responseElements": { "endpointArn":"arn:aws:sagemaker:us-west-2:123456789012:endpoint/exampleendpoint" }, "requestID":"6b1b42b9-EXAMPLE", "eventID":"a6f85b21-EXAMPLE", "eventType":"AwsApiCall", "recipientAccountId":"444455556666" }

L'exemple suivant est une entrée de journal pour l'action CreateModel, qui crée un ou plusieurs conteneurs pour héberger un modèle entraîné précédemment.

{ "eventVersion":"1.05", "userIdentity": { "type":"IAMUser", "principalId":"AIXDAYQEXAMPLEUMLYNGL", "arn":"arn:aws:iam::123456789012:user/intern", "accountId":"123456789012", "accessKeyId":"ASXIAGXEXAMPLEQULKNXV", "userName":"intern" }, "eventTime":"2018-01-02T15:23:46Z", "eventSource":"sagemaker.amazonaws.com", "eventName":"CreateModel", "awsRegion":"us-west-2", "sourceIPAddress":"127.0.0.1", "userAgent":"USER_AGENT", "requestParameters": { "modelName":"ExampleModel", "primaryContainer": { "image":"174872318107.dkr.ecr.us-west-2.amazonaws.com/kmeans:latest" }, "executionRoleArn":"arn:aws:iam::123456789012:role/EXAMPLEARN" }, "responseElements": { "modelArn":"arn:aws:sagemaker:us-west-2:123456789012:model/barkinghappy2018-01-02t15-23-32-275z-ivrdog" }, "requestID":"417b8dab-EXAMPLE", "eventID":"0f2b3e81-EXAMPLE", "eventType":"AwsApiCall", "recipientAccountId":"444455556666" }