Connecter un compartiment S3
Seuls les comptes SAP Databricks déployés sur AWS peuvent se connecter aux compartiments S3 avec accès en lecture et écriture.
Cet article décrit comment configurer un emplacement externe dans Unity Catalog pour connecter le stockage cloud à SAP Databricks.
Les emplacements externes associent les identifiants de stockage Unity Catalog aux conteneurs de stockage d’objets cloud. Les emplacements externes sont utilisés pour définir des emplacements de stockage gérés pour les catalogues et les schémas, et pour définir des emplacements pour les tables externes et les volumes externes.
Pour éviter la perte de données, SAP Databricks exige que les emplacements externes soient en lecture seule.
Avant de commencer
Prérequis :
-
Vous devez créer le compartiment S3 que vous souhaitez utiliser comme emplacement externe avant de créer l'objet d'emplacement externe dans SAP Databricks.
- Le Template AWS CloudFormation prend en charge uniquement les compartiments S3.
- Le nom d'un S3 bucket dans lequel vous souhaitez que les utilisateurs lisent et écrivent ne peut pas utiliser la notation par points (par exemple,
incorrect.bucket.name.notation). Pour plus d'informations sur la dénomination des buckets, consultez les règles de dénomination des buckets AWS. - Évitez d'utiliser un chemin d'accès dans S3 qui est déjà défini comme un emplacement externe dans un autre métastore Unity Catalog. Vous pouvez lire en toute sécurité les données d'un emplacement S3 externe unique à partir de plusieurs metastores, mais les écritures simultanées au même emplacement S3 à partir de plusieurs metastores peuvent entraîner des problèmes de cohérence.
-
Si vous n'utilisez pas le template AWS CloudFormation pour créer l'emplacement externe, vous devez d'abord créer un identifiant de stockage dans SAP Databricks qui donne accès au chemin d'accès à l'emplacement de stockage dans le cloud. Consultez la documentation AWS suivante : Créer un identifiant de stockage.
Si vous utilisez le flux AWS CloudFormation, cet identifiant de stockage est créé pour vous.
Autorisations requises :
- Vous devez disposer du privilège
CREATE EXTERNAL LOCATIONà la fois sur le métastore et sur les informations d'identification de stockage référencées dans l'emplacement externe. Les administrateurs de métastore disposent deCREATE EXTERNAL LOCATIONsur le métastore par défaut. - Si vous utilisez le Template AWS CloudFormation, vous devez également disposer du privilège
CREATE STORAGE CREDENTIALsur le métastore. Les administrateurs de métastore disposent deCREATE STORAGE CREDENTIALsur le métastore par défaut.
Créez un emplacement externe pour un compartiment S3 à l'aide d'un AWS CloudFormation Template
Si vous créez un emplacement externe à l'aide du Template AWS CloudFormation, Databricks configure l'emplacement externe et crée un identifiant de stockage pour vous. Vous avez également la possibilité de créer manuellement l'emplacement externe, ce qui nécessite que vous créiez d'abord un rôle IAM qui donne accès au compartiment S3 auquel il est fait référence par l'emplacement externe et un identifiant de stockage qui fait référence à ce rôle IAM.
Autorisations et prérequis : consultez Avant de commencer.
Pour créer l'emplacement externe :
-
Connectez-vous à un Workspace qui est associé au métastore.
-
Cliquez sur
Catalogue pour ouvrir l'Explorateur de catalogues.
-
Cliquez sur le bouton Données externes > , accédez à l’onglet External Locations tab et cliquez sur Créer un emplacement externe .
-
Dans la boîte de dialogue Créer un nouvel emplacement externe , sélectionnez AWS Quickstart (Recommandé) puis cliquez sur Suivant .
Le Quickstart AWS configure l'emplacement externe et crée un identifiant de stockage pour vous. Si vous choisissez d'utiliser l'option Manuelle , vous devez créer manuellement un rôle IAM qui donne accès au compartiment S3 et créer vous-même l'identifiant de stockage dans Databricks.
-
Dans la boîte de dialogue Créer un emplacement externe avec Démarrage rapide , saisissez le chemin du compartiment S3 dans le champ Nom du compartiment .
-
Cliquez sur Générer un nouveau jeton pour générer le jeton d'accès personnel que vous utiliserez pour vous authentifier entre Databricks et votre compte AWS.
-
Copiez le jeton et cliquez sur Lancer le démarrage rapide .
-
Dans le Template CloudFormation AWS qui se lance (intitulé Pile de création rapide ), collez le jeton dans le champ Identifiants de compte Databricks .
-
Acceptez les conditions en bas de page ( Je reconnais qu'AWS CloudFormation pourrait créer des ressources IAM avec des noms personnalisés ).
-
Cliquez sur « Créer une pile ».
La création de l'objet d'emplacement externe dans Databricks par le template CloudFormation peut prendre quelques minutes.
-
Retournez à votre Workspace Databricks et cliquez sur Catalogue pour ouvrir l' Explorateur de catalogues .
-
Cliquez sur le bouton Données externes > pour accéder à la tab External Locations .
-
Confirmez qu'un nouvel emplacement externe a été créé.
Les emplacements externes générés automatiquement utilisent la syntaxe de nommage
db_s3_external_databricks-S3-ingest-<id>. -
(Facultatif) Liez l'emplacement externe à des workspaces spécifiques.
Par default, tout utilisateur privilégié peut utiliser l’emplacement externe sur n’importe quel workspace attaché au métastore. Si vous souhaitez autoriser l’accès uniquement à partir de workspaces spécifiques, accédez à l’onglet tab et attribuez des workspaces. Voir (Facultatif) Attribuer un emplacement externe à des Workspace spécifiques.
-
Accorder l'autorisation d'utiliser l'emplacement externe.
Pour que quiconque puisse utiliser l'emplacement externe, vous devez accorder des autorisations :
- Pour utiliser l'emplacement externe afin d'ajouter un emplacement de stockage géré au métastore, au catalogue ou au schéma, octroyez le privilège
CREATE MANAGED LOCATION. - Pour créer des tables ou des volumes externes, accordez
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
Pour utiliser Catalog Explorer pour accorder des autorisations :
- Cliquez sur le nom de l'emplacement externe pour ouvrir le volet de détails.
- Dans l'onglet **tab**, cliquez sur **Accorder**.
- Dans la boîte de dialogue Accorder sur
<external location>, sélectionnez des utilisateurs, des groupes ou des Service Principals dans le champ Principaux , et sélectionnez le privilège que vous souhaitez accorder. - Cliquez sur Accorder .
- Pour utiliser l'emplacement externe afin d'ajouter un emplacement de stockage géré au métastore, au catalogue ou au schéma, octroyez le privilège
(Facultatif) Attribuer un emplacement externe à des workspaces spécifiques
Par default, un emplacement externe est accessible depuis tous les workspaces du métastore. Cela signifie que si un utilisateur s'est vu accorder un privilège (tel que READ FILES) sur cet emplacement externe, il peut exercer ce privilège depuis n'importe quel workspace attaché au métastore. Si vous utilisez les workspaces pour isoler l'accès aux données des utilisateurs, vous voudrez peut-être autoriser l'accès à un emplacement externe uniquement depuis des workspaces spécifiques. Cette fonctionnalité est connue sous le nom de liaison de workspace ou d'isolation d'emplacement externe.
Les cas d'utilisation typiques pour lier un emplacement externe à des Workspace spécifiques incluent :
- S'assurer que les data engineers qui disposent du privilège
CREATE EXTERNAL TABLEsur un emplacement externe contenant des données de production peuvent créer des tables externes à cet emplacement uniquement dans un workspace de production. - S'assurer que les data engineers qui ont le privilège
READ FILESsur un emplacement externe contenant des données sensibles ne peuvent utiliser que des workspaces spécifiques pour accéder à ces données.
Les liaisons de Workspace sont référencées au moment où les privilèges vis-à-vis de l'emplacement externe sont exercés. Par exemple, si un utilisateur crée une table externe en émettant l'instruction CREATE TABLE myCat.mySch.myTable LOCATION 's3://bucket/path/to/table' depuis le Workspace myWorkspace, les vérifications de liaison du Workspace suivantes sont effectuées en plus des vérifications régulières des privilèges de l'utilisateur :
- L'emplacement externe couvrant
's3://bucket/path/to/tableest-il lié àmyWorkspace? - Le catalogue
myCatest-il lié àmyWorkspaceavec le niveau d'accèsRead & Write?
Si l’emplacement externe est par la suite dissocié de myWorkspace, la table externe continue alors de fonctionner.
Cette fonctionnalité vous permet également de renseigner un catalogue à partir d'un workspace central et de le rendre disponible à d'autres workspaces à l'aide de liaisons de catalogue, sans avoir également à rendre l'emplacement externe disponible dans ces autres workspaces.
Associer un emplacement externe à un ou plusieurs workspaces
Pour attribuer un emplacement externe à des workspaces spécifiques, vous pouvez utiliser l'Explorateur de catalogues.
Autorisations requises : administrateur du metastore, propriétaire de l'emplacement externe ou MANAGE sur l'emplacement externe.
Les administrateurs de métastore peuvent voir tous les emplacements externes dans un métastore en utilisant l'Explorateur de catalogue — et les propriétaires d'emplacements externes peuvent voir tous les emplacements externes qu'ils possèdent dans un métastore — qu'importe que l'emplacement externe soit attribué au workspace actuel. Les emplacements externes qui ne sont pas attribués au workspace apparaissent grisés.
-
Connectez-vous à un Workspace lié au métastore.
-
Dans la barre latérale, cliquez sur
Catalog .
-
Cliquez sur le bouton Données externes > pour accéder à la tab External Locations .
-
Sélectionnez l'emplacement externe et accédez à l'onglet Workspaces .
-
Sous l'onglet Workspaces , décochez la case Tous les Workspaces ont accès .
Si votre emplacement externe est déjà lié à un ou plusieurs Workspace, cette case est déjà décochée.
-
Cliquez sur Assigner aux workspaces et saisissez ou recherchez les workspaces que vous souhaitez assigner.
Pour révoquer l'accès, accédez à l'onglet Workspaces , sélectionnez le Workspace et cliquez sur Révoquer . Pour autoriser l'accès depuis tous les Workspaces, cochez la case Tous les Workspaces ont accès .