Partager via


Se connecter à des services de stockage sur Azure avec des magasin de données

S’APPLIQUE À :Kit de développement logiciel (SDK) Python azureml v1

S’APPLIQUE À :extension Azure CLI ml v1

Dans cet article, découvrez comment se connecter aux services de stockage de données sur Azure à l’aide des magasins de données Azure Machine Learning et du kit SDK Python d’Azure Machine Learning.

Les magasins de données se connectent de façon sécurisée à votre service de stockage sur Azure et ils évitent de compromettre vos informations d’authentification ou l’intégrité de votre banque de données d’origine. Un magasin de données conserve les informations de connexion, comme par exemple, votre ID d’abonnement ou votre autorisation de jeton, dans le coffre de clés associé à l’espace de travail. Avec un magasin de données, vous pouvez accéder en toute sécurité à votre stockage car vous pouvez éviter les informations de connexion codées en dur dans vos scripts. Vous pouvez créer des magasins de données qui se connectent à ces solutions de stockage Azure.

Pour plus d’informations qui expliquent comment les magasins de données correspondent au flux de travail d’accès aux données global Azure Machine Learning, consulter l’article Accéder en toute sécurité aux données.

Pour savoir comment se connecter à une ressource de stockage de données avec une interface utilisateur, visiter Se connecter au stockage de données avec l’interface utilisateur studio.

Conseil

Cet article présume que vous souhaitez vous connecter à votre service de stockage à l’aide d’informations d’authentification, comme un principal de service ou un jeton de signature d’accès partagé (SAS). Noter que si les informations d’identification sont enregistrées auprès des magasins de données, tous les utilisateurs détenant le rôle de Lecteur d’espace de travail peuvent récupérer ces informations d’identification. Pour plus d’informations, consulter Gérer les rôles dans votre espace de travail.

Pour plus d’informations sur l’accès basé sur l’identité, visiter Accès basé sur l’identité aux données des services de stockage (v1).

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayer la version gratuite ou payante d’Azure Machine Learning

  • Un compte de stockage Azure avec un type de stockage pris en charge

  • Le kit de développement logiciel (SDK) Azure Machine Learning pour Python

  • Un espace de travail Azure Machine Learning.

    Créer un espace de travail Azure Machine Learning ou utilisez un espace de travail existant via le kit SDK Python

    Importer les classes Workspace et Datastore puis charger vos informations d’abonnement à partir du fichier config.json à l’aide de la fonction from_config(). Par défaut, la fonction recherche le fichier JSON dans le répertoire actif mais vous pouvez également spécifier un paramètre de chemin d’accès pour pointer vers le fichier avec from_config(path="your/file/path") :

    import azureml.core
    from azureml.core import Workspace, Datastore
    
    ws = Workspace.from_config()
    

    La création d’espace de travail inscrit automatiquement un conteneur d’objets blob Azure et un partage de fichiers Azure comme magasins de données dans l’espace de travail. sous les noms workspaceblobstore et workspacefilestore respectivement. Le workspaceblobstore stocke les artefacts de l’espace de travail et vos journaux d’expérience de Machine Learning. Il sert en tant que magasin de données par défaut et ne peut pas être supprimé de l’espace de travail. Le workspacefilestore stocke des notebooks et des scripts R autorisés via une instance de calcul.

    Remarque

    Le concepteur Azure Machine Learning crée automatiquement un magasin de données nommé azureml_globaldatasets lorsque vous ouvrez un exemple dans la page d’accueil du concepteur. Ce magasin de données contient uniquement des exemples de jeux de données. Veuillez ne pas utiliser ce magasin de données pour accéder à des données confidentielles.

Types de services de stockage de données pris en charge

Les magasins de données prennent actuellement en charge le stockage des informations de connexion dans les services de stockage figurant dans cette matrice :

Conseil

Pour les solutions de stockage non prises en charge (celles qui ne sont pas répertoriées dans le tableau suivant), vous pouvez rencontrer des problèmes lors de la connexion et de l’utilisation de vos données. Nous vous suggérons de déplacer vos données vers une solution de stockage Azure prise en charge. Cela peut également aider pour des scénarios supplémentaires, comme par exemple la réduction des coûts de sortie de données pendant les expériences ML.

Type de stockage Type d'authentification Azure Machine Learning Studio SDK Python Azure Machine Learning Interface CLI Azure Machine Learning API REST Azure Machine Learning VS Code
Stockage Blob Azure Clé de compte
Jeton SAS
Partage de fichiers Azure Clé de compte
Jeton SAS
Azure Data Lake Storage Gen 1 Principal du service
Azure Data Lake Storage Gen 2 Principal du service
Azure SQL Database Authentification SQL
Principal du service
Azure PostgreSQL Authentification SQL
Azure Database pour MySQL Authentification SQL ✓* ✓* ✓*
Système de fichiers Databricks Aucune authentification ✓** ✓ ** ✓**

Conseils liés au stockage

Nous vous recommandons la création d’un magasin de données pour un conteneur Blob Azure. Les stockages Standard et Premium sont tous deux disponibles pour les objets blob. Le stockage Premium est plus cher, mais ses vitesses de débit supérieures vous feront gagner du temps sur vos exécutions d’entraînement, en particulier si vous effectuez l’entraînement sur un jeu de données volumineux. Pour plus d’informations sur les coûts des comptes de stockage, consulter la Calculatrice de prix Azure.

Azure Data Lake Storage Gen2 est construit sur le stockage d’objets blob Azure. Il est conçu pour l’analytique du Big Data d’entreprise. En tant que Data Lake Storage Gen2, le stockage Blob utilise une fonctionnalité espace de noms hiérarchique. L’espace de noms hiérarchique organise les objets/fichiers dans une hiérarchie de répertoires pour offrir un accès efficace aux données.

Accès et autorisations pour le stockage

Pour garantir que vous vous connectez de manière sécurisée à votre service de stockage Azure, Azure Machine Learning exige que vous ayez l’autorisation d’accéder au conteneur de stockage de données correspondant. Cet accès dépend des informations d’authentification utilisées pour inscrire le magasin de données.

Notes

Cette instruction s’applique également aux magasins de données créés avec l’accès aux données basé sur l’identité.

Réseau virtuel

Azure Machine Learning nécessite des étapes de configuration supplémentaires pour communiquer avec un compte de stockage situé derrière un pare-feu, ou dans un réseau virtuel. Pour un compte de stockage se trouvant derrière un pare-feu, vous pouvez Ajouter l’adresse IP de votre client à une liste d’autorisation avec le portail Azure.

Azure Machine Learning peut recevoir des requêtes issues de clients situés en dehors du réseau virtuel. Pour vous assurer que l’entité demandant des données au service est sécurisée et pour permettre l’affichage des données dans votre espace de travail, utilisez un point de terminaison privé avec votre espace de travail.

Pour les utilisateurs du kit SDK Python : Pour accéder à vos données sur une cible de calcul avec votre script d’entraînement, vous devez localiser la cible de calcul au sein d’un même réseau et sous-réseau virtuels du stockage. Vous pouvez utiliser une instance/un cluster de calcul dans le même réseau virtuel.

Pour les utilisateurs d’Azure Machine Learning studio : Plusieurs caractéristiques s’appuient sur la possibilité de lire des données à partir d’un jeu de données. Comme par exemple, les aperçus de jeux de données, les profils et Machine Learning automatisé. Pour que ces caractéristiques fonctionnent avec le stockage derrière des réseaux virtuels, utilisez une identité managée par l’espace de travail dans le studio pour permettre à Azure Machine Learning d’accéder au compte de stockage de l’extérieur du réseau virtuel.

Remarque

Pour les données stockées dans une instance Azure SQL Database derrière un réseau virtuel, définir Refuser l’accès public sur Non avec le portail Azure pour autoriser Azure Machine Learning à accéder au compte de stockage.

Validation de l’accès

Avertissement

L’accès inter-clients aux comptes de stockage n’est pas pris en charge. Si votre scénario a besoin d’un accès inter-clients, contacter l’alias de l’équipe de support des données Azure Machine Learning à l’adresse amldatasupport@microsoft.com pour obtenir de l’aide sur une solution de code personnalisée.

Dans le cadre du processus de création et d’inscription du magasin de données initial, Azure Machine Learning vérifie automatiquement que le service de stockage sous-jacent existe et que le principal fourni par l’utilisateur (nom d’utilisateur, principal de service ou jeton SAS) peut accéder au stockage spécifié.

Après la création du magasin de données, cette validation est effectuée uniquement pour les méthodes qui requièrent l’accès au conteneur de stockage sous-jacent, et non chaque fois que des objets du magasin de données sont récupérés. Par exemple, la validation se produit si vous souhaitez télécharger des fichiers à partir de votre magasin de données. Toutefois, si vous souhaitez modifier uniquement votre magasin de données par défaut, la validation ne se produit pas.

Pour authentifier votre accès au service de stockage sous-jacent, vous pouvez fournir votre clé de compte, des jetons de signature d’accès partagé (SAS) ou le principal de service dans la méthode register_azure_*() correspondante du type de magasin de données que vous souhaitez créer. La matrice de types de stockage répertorie les types d’authentification pris en charge qui correspondent à chaque type de magasin de données.

Vous trouverez des informations sur la clé de compte, le jeton SAS et le principal de service à votre portail Azure.

  • Pour utiliser une clé de compte ou un jeton SAP pour l’authentification, sélectionnez Comptes de stockage dans le volet gauche, puis choisissez le compte de stockage que vous souhaitez inscrire

    • La page Vue d’ensemble fournit des informations de nom du compte, conteneur, nom du partage de fichiers, etc
      • Pour les clés de compte, accédez à Clés d’accès dans le volet Paramètres
      • Pour les jetons SAP, accédez à Signatures d’accès partagé dans le volet Paramètres
  • Pour utiliser un principal de service pour l’authentification, accéder à vos Inscriptions d’applications et sélectionner l’application que vous souhaitez utiliser

    • La page Vue d’ensemble correspondante de l’application sélectionnée contient des informations requises , par exemple, l’ID de locataire et l’ID client

Important

Pour modifier vos clés d’accès pour un compte de stockage Azure (clé de compte ou jeton SAP), synchroniser les nouvelles informations d’identification avec votre espace de travail et les magasins de données qui y sont connectés. Pour plus d’informations, consulter synchroniser vos informations d’identification mises à jour.

Autorisations

Pour le conteneur de blobs Azure et le stockage Azure Data Lake Gen2, assurez-vous que vos informations d’authentification vous donnent un accès Lecteur des données blob du stockage. Pour plus d’informations, consulter Lecteur de données Blob de stockage. Par défaut, le jeton SAS d'un compte ne dispose d'aucune autorisation.

  • Pour l’accès en lecture aux données, vos informations d’authentification doivent au minimum disposer d’autorisations de liste et de lecture pour les conteneurs et les objets

  • L’accès à l’écriture des données requiert également les autorisations d’écriture et de modification

Créer et inscrire des magasins de données

L’inscription d’une solution de stockage Azure en tant que magasin de données, ce dernier est automatiquement créé et inscrit dans un espace de travail spécifique. Passer en revue les autorisations d’accès au stockage dans ce document afin d’avoir de l’aide à propos des scénarii de réseau virtuel ainsi que où trouver les informations de connexion requises.

Cette section fournit des exemples décrivant comment créer un inscrire un magasin de données via le kit de développement logiciel (SDK) Python pour ces types de stockage. Les paramètres montrés dans ces exemples sont les paramètres requis pour créer et inscrire un magasin de données :

Pour créer des magasins de données pour les autres services de stockage pris en charge, visiter la documentation de référence des méthodes register_azure_* applicables.

Pour savoir comment se connecter à une ressource de stockage de données avec une interface utilisateur, visiter Se connecter aux données avec Azure Machine Learning studio.

Important

Si vous désinscrivez puis réinscrivez un magasin de données portant le même nom et que la réinscription échoue, le compte Azure Key Vault de votre espace de travail peut ne pas être doté de la suppression réversible. Par défaut, la suppression réversible est activée pour l’instance de coffre de clés créée par votre espace de travail, mais elle peut ne pas l’être si vous avez utilisé un coffre de clés existant ou si votre espace de travail a été créé avant octobre 2020. Pour plus d’informations décrivant l’activation de la suppression réversible, consultez Activer la suppression réversible pour un coffre de clés existant.

Remarque

Un nom du magasin de données doit contenir uniquement des lettres minuscules, des chiffres et des traits de soulignement.

Conteneur d’objets blob Azure

Pour inscrire un conteneur d’objets blob Azure comme magasin de données, utiliser la méthode register_azure_blob_container().

Cet exemple de code crée le magasin de données blob_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données utilise la clé d’accès au compte fournit pour accéder au conteneur blob my-container-name sur le compte de stockage my-account-name. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section accès au stockage et autorisations.

blob_datastore_name='azblobsdk' # Name of the datastore to workspace
container_name=os.getenv("BLOB_CONTAINER", "<my-container-name>") # Name of Azure blob container
account_name=os.getenv("BLOB_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("BLOB_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

blob_datastore = Datastore.register_azure_blob_container(workspace=ws, 
                                                         datastore_name=blob_datastore_name, 
                                                         container_name=container_name, 
                                                         account_name=account_name,
                                                         account_key=account_key)

Partage de fichiers Azure

Pour inscrire un partage de fichiers Azure comme magasin de données, utiliser la méthode register_azure_file_share().

Cet exemple de code crée le magasin de données file_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données utilise le partage de fichiers my-fileshare-name sur le compte de stockage my-account-name avec la clé d'accès au compte fournie. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section accès au stockage et autorisations.

file_datastore_name='azfilesharesdk' # Name of the datastore to workspace
file_share_name=os.getenv("FILE_SHARE_CONTAINER", "<my-fileshare-name>") # Name of Azure file share container
account_name=os.getenv("FILE_SHARE_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("FILE_SHARE_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

file_datastore = Datastore.register_azure_file_share(workspace=ws,
                                                     datastore_name=file_datastore_name, 
                                                     file_share_name=file_share_name, 
                                                     account_name=account_name,
                                                     account_key=account_key)

Azure Data Lake Storage Gen 2

Pour un magasin de données Azure Data Lake Storage Gen 2 (ADLS Gen 2), utiliser la méthode register_azure_data_lake_gen2() pour inscrire un magasin de données d’informations d’identification connecté à un stockage Azure DataLake Gen 2 avec des autorisations de principal du service.

Pour utiliser votre principal de service, vous devez inscrire votre application et accorder au principal de service l’accès aux données via un contrôle d’accès en fonction du rôle Azure (Azure RBAC) ou des listes de contrôle d’accès (ACL, access control lists). Pour plus d’informations, visiter configuration du contrôle d’accès pour ADLS Gen 2.

Ce code crée le magasin de données adlsgen2_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données accède au système de fichiers test dans le compte de stockage account_name à travers l’utilisation des informations d’identification du principal de service fournies. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section accès au stockage et autorisations.

adlsgen2_datastore_name = 'adlsgen2datastore'

subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of ADLS account
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS account

account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<my_account_name>") # ADLS Gen2 account name
tenant_id=os.getenv("ADLSGEN2_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADLSGEN2_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal

adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
                                                             datastore_name=adlsgen2_datastore_name,
                                                             account_name=account_name, # ADLS Gen2 account name
                                                             filesystem='test', # ADLS Gen2 filesystem
                                                             tenant_id=tenant_id, # tenant id of service principal
                                                             client_id=client_id, # client id of service principal
                                                             client_secret=client_secret) # the secret of service principal

Créer des magasins de données avec d’autres outils Azure

En plus de la création de magasins de données avec le kit SDK Python et le studio, vous pouvez aussi créer des magasin de données avec des modèles Azure Resource Manager ou l’extension VS Code Azure Machine Learning.

Azure Resource Manager

Vous pouvez utiliser plusieurs modèles à https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices pour créer des magasins de données. Pour plus d'informations sur ces modèles, visiter Utiliser un modèle Azure Resource Manager afin de créer un espace de travail pour Azure Machine Learning.

Extension VS Code

Pour plus d’information sur la création et la gestion des magasins de données à l’aide de l’extension VS Code Azure Machine Learning, visiter le guide pratique de la gestion des ressources VS Code.

Utiliser des données dans vos magasins de données

Après la création d’un magasin de données, créer un Azure Machine Learning DataSet pour interagir avec vos données. Un jeu de données intègre vos données dans un objet consommable évalué tardivement pour les tâches de Machine Learning, comme la formation. Avec les jeux de données, vous pouvez télécharger ou monter des fichiers de n’importe quel format à partir des services de stockage Azure pour l’entraînement de modèles sur une cible de calcul. Apprenez-en davantage sur l’entraînement des modèles ML avec des jeux de données.

Récupérer les magasins de données à partir de votre espace de travail

Pour obtenir un magasin de données spécifique inscrit dans l’espace de travail actif, utilisez la méthode statique get() sur la classe Datastore :

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

Pour obtenir la liste des banques de données inscrites avec un espace de travail donné, utiliser la propriété datastores sur un objet d’espace de travail :

# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
    print(name, datastore.datastore_type)

Cet exemple de code montre comment obtenir le magasin de données par défaut de l’espace de travail :

datastore = ws.get_default_datastore()

Vous pouvez également modifier le magasin de données par défaut avec cet exemple de code. Seul le Kit de développement logiciel (SDK) prend en charge cette capacité :

 ws.set_default_datastore(new_default_datastore)

Accéder aux données pendant le scoring

Azure Machine Learning offre plusieurs moyens d’utiliser vos modèles pour le scoring. Certaines de ces méthodes ne fournissent pas d’accès aux magasins de données. Le tableau suivant décrit les méthodes qui vous permettent d’accéder aux magasins de données pendant le scoring :

Méthode Accès aux magasins de données Description
Prédiction par lots Effectuez des prédictions sur de grandes quantités de données de façon asynchrone.
Service web   Déployez des modèles comme un service web.

Lorsque le SDK ne fournit pas d’accès aux magasins de données, vous pouvez créer du code personnalisé avec le SDK Azure approprié pour accéder aux données. Par exemple, la bibliothèque de client Kit de développement logiciel (SDK) de stockage Azure pour Python peut accéder aux données stockées dans des objets blob ou des fichiers.

Déplacer des données vers des solutions de stockage Azure prises en charge

Azure Machine Learning prend en charge l’accès au données depuis

  • stockage d’objets blob Azure
  • Azure Files
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL Database
  • Base de données Azure pour PostgreSQL

Si vous utilisez un stockage non pris en charge, nous vous recommandons d’utiliser Azure Data Factory ainsi que ces étapes pour déplacer vos données vers des solutions de stockage Azure. Déplacer vos données vers un stockage pris en charge peut vous aider à réduire les coûts de sortie des données pendant les expériences Machine Learning.

Azure Data Factory fournit un moyen de transfert des données efficace et résilient avec plus de 80 connecteurs prédéfinis, sans coût supplémentaire. Ces connecteurs incluent les services de données Azure, les sources de données locales, Amazon S3 et Redshift, et Google BigQuery.

Étapes suivantes