Créez un identifiant de stockage et un emplacement externe pour S3 en utilisant Catalog Explorer ou SQL.
Cette page explique comment se connecter à un compartiment AWS S3 en créant d'abord un objet d'identifiant de stockage, puis en créant un objet d'emplacement externe à l'aide de l'Explorateur de catalogues ou de SQL. Vous devez créer l'identifiant de stockage avant de créer l'emplacement externe. Pour plus d'informations sur les identifiants de stockage et les emplacements externes, consultez Comment Unity Catalog gouverne-t-il l'accès au stockage cloud ?.
Pour un processus de configuration plus automatisé, Databricks recommande d'utiliser le template AWS CloudFormation Quickstart pour créer ces deux objets.
Présentation vidéo
Cette vidéo montre comment créer manuellement un identifiant de stockage et un emplacement externe pour l’accès S3 (6 minutes).
Avant de commencer
Prérequis :
Vous devez créer le compartiment S3 que vous souhaitez utiliser comme emplacement externe dans AWS avant de créer l'objet d'emplacement externe dans Databricks.
-
N’utilisez pas la notation par points (par exemple,
incorrect.bucket.name.notation) dans les noms de compartiments S3. Bien qu'AWS autorise les points dans les noms de compartiments, Databricks ne prend pas en charge les compartiments S3 avec notation par points. Les compartiments contenant des points peuvent entraîner des problèmes de compatibilité avec des fonctionnalités telles qu'OpenSharing en raison d'échecs de validation des certificats SSL. Pour plus d'informations, consultez les meilleures pratiques de dénomination de compartiments AWS. -
Les chemins d’emplacement externe doivent contenir uniquement des caractères ASCII standard (lettres
A–Z,a–z, chiffres0–9et des symboles courants tels que/,_,-). -
Le bucket ne peut pas avoir une liste de contrôle d'accès S3 qui lui est associée.
-
É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.
Databricks : autorisations requises :
- Vous devez 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. - 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.
Exigences en matière d’autorisations AWS :
- Vous devez disposer des autorisations
iam:CreateRolepour créer le rôle IAM.
Créer un identifiant de stockage qui accède à un compartiment AWS S3
Avant de créer un emplacement externe, vous avez besoin d'un identifiant de stockage qui permet l'accès au compartiment S3. Si vous disposez déjà d'un identifiant de stockage, vous pouvez passer à Créer un emplacement externe pour un compartiment AWS S3.
Étape 1 : Créez un rôle IAM
Dans AWS, créez un rôle IAM qui donne accès au compartiment S3 auquel vous souhaitez que vos utilisateurs accèdent. Ce rôle IAM doit être défini dans le même compte que le compartiment S3.
Si vous avez déjà créé un rôle IAM qui fournit cet accès, vous pouvez ignorer cette étape et passer directement à l'étape 2 : fournir les détails du rôle IAM à Databricks.
-
Créez un rôle IAM qui permettra l'accès au compartiment S3.
La création de rôle est un processus en deux étapes. Dans cette étape, vous créez le rôle, en ajoutant une politique de relation d'approbation *temporaire* et un ID externe d'espace réservé que vous modifiez ensuite après avoir créé les informations d'identification de stockage dans Databricks.
Vous devez modifier la politique de confiance après avoir créé le rôle, car votre rôle doit s'auto-imputer (c'est-à-dire qu'il doit être configuré pour se faire confiance). Le rôle doit donc exister avant que vous n'ajoutiez la déclaration d'auto-imputation. Pour des informations sur les rôles d'auto-imputation, consultez cet article de blog Amazon.
Databricks bloque les identifiants de stockage nouveaux et existants basés sur des rôles IAM qui ne s'auto-assument pas. Pour plus de détails, consultez la politique d’application des rôles à attribution automatique.
Pour créer la politique, vous devez utiliser un ID externe de substitut.
-
Créez le rôle IAM avec une Politique de confiance personnalisée .
-
Dans le champ Custom Trust Policy , collez la politique JSON suivante.
Cette politique établit une relation de confiance entre comptes afin que Unity Catalog puisse endosser le rôle pour accéder aux données du bucket au nom des utilisateurs Databricks. Ceci est spécifié par l'ARN dans la section
Principal. C'est une valeur statique qui fait référence à un rôle créé par Databricks.La politique définit l'ID externe sur
0000comme espace réservé. Vous mettrez cela à jour avec l'ID externe de votre identifiant de stockage lors d'une étape ultérieure.
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws-us-gov:iam::170661010020:role/unity-catalog-prod-UCMasterRole-1DI6DL6ZP26AS"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
-
Ignorer la configuration de la politique d’autorisations. Vous reviendrez pour l’ajouter à une étape ultérieure.
-
Enregistrez le rôle IAM.
-
Créez la politique IAM suivante dans le même compte que le compartiment S3, en remplaçant les valeurs suivantes :
-
<BUCKET>: Nom du compartiment S3. -
<KMS-KEY>Facultatif. Si le chiffrement est activé, fournissez le nom de la clé KMS qui chiffre le contenu du compartiment S3. Si le chiffrement est désactivé, supprimez l'intégralité de la section KMS de la politique IAM.
-
Si le chiffrement est activé, vous devez mettre à jour votre politique de clé KMS dans AWS pour accorder l'accès au rôle IAM de Unity Catalog. Sinon, Unity Catalog ne peut pas accéder aux données du compartiment. Ajoutez ce qui suit à la politique de clé, en remplaçant les espaces réservés par vos valeurs :
"Principal": {
"AWS": "arn:aws:iam::<AWS-ACCOUNT-ID>:role/<UNITY-CATALOG-IAM-ROLE>"
}
Voir Configurer le chiffrement pour S3 à l'aide d'Unity Catalog.
-
<AWS-ACCOUNT-ID>: L'Identifiant du compte de votre compte AWS (pas votre compte Databricks). -
<AWS-IAM-ROLE-NAME>: Le nom du rôle IAM AWS que vous avez créé à l'étape précédente.
Cette politique IAM octroie un accès en lecture et en écriture. Vous pouvez également créer une politique qui n'accorde qu'un accès en lecture. Cependant, cela pourrait être inutile car vous pouvez marquer les informations d'identification de stockage en lecture seule, et Databricks ignore tout accès en écriture accordé par ce rôle IAM.
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"],
"Effect": "Allow"
},
{
"Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"],
"Resource": ["arn:aws:kms:<KMS-KEY>"],
"Effect": "Allow"
},
{
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"],
"Effect": "Allow"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": ["arn:aws-us-gov:s3:::<BUCKET>/*", "arn:aws-us-gov:s3:::<BUCKET>"],
"Effect": "Allow"
},
{
"Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"],
"Resource": ["arn:aws-us-gov:kms:<KMS-KEY>"],
"Effect": "Allow"
},
{
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws-us-gov:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"],
"Effect": "Allow"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": ["arn:aws-us-gov:s3:::<BUCKET>/*", "arn:aws-us-gov:s3:::<BUCKET>"],
"Effect": "Allow"
},
{
"Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"],
"Resource": ["arn:aws-us-gov:kms:<KMS-KEY>"],
"Effect": "Allow"
},
{
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws-us-gov:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"],
"Effect": "Allow"
}
]
}
If you need a more restrictive IAM policy for Unity Catalog, contact your Databricks account team for assistance.
- Créez une politique IAM pour les événements de fichier dans le même compte que le compartiment S3.
Si vous n'accordez pas à Databricks l'accès pour configurer les événements de fichiers en votre nom, vous devez configurer manuellement les événements de fichiers pour chaque emplacement. Ignorer cette configuration manuelle limite votre accès à plusieurs fonctionnalités Databricks. Pour plus d'information sur les événements de fichiers, consultez Configurer les événements de fichiers pour un emplacement externe.
La politique IAM octroie à Databricks l'autorisation de mettre à jour la configuration de notification d'événements de votre compartiment, de créer une rubrique SNS, de créer une file d'attente SQS et d'abonner la file d'attente SQS à la rubrique SNS. Ce sont les ressources requises pour les fonctionnalités qui utilisent les événements de fichiers. Remplacez <BUCKET> par le nom du compartiment S3.
Les autorisations d'événements de fichiers permettent à Databricks de configurer et de gérer une infrastructure de notification qui achemine les métadonnées de modification de fichiers (clés d'objet, types d'événements) de votre compartiment S3 vers Databricks. Ils n'accordent aucun nouvel accès à vos données ; le contenu des fichiers n'est jamais transmis via cette infrastructure.
- SetupStatement : Permet à Databricks de configurer les notifications de compartiment S3 et de créer des rubriques SNS gérées et des files d'attente SQS (préfixées
csms-*) pour la livraison d'événements de modification de fichiers. - ListStatement : Permet à Databricks de découvrir et d’auditer les ressources SNS/SQS gérées qu’il a créées.
- **TeardownStatement :** Permet à Databricks de nettoyer les rubriques SNS et les files d'attente SQS lorsque les événements de fichiers sont désactivés ou que l'emplacement externe est supprimé.
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": ["arn:aws-us-gov:s3:::<BUCKET>", "arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": ["arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": ["arn:aws-us-gov:s3:::<BUCKET>", "arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": ["arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws-us-gov:sqs:*:*:csms-*", "arn:aws-us-gov:sns:*:*:csms-*"]
}
]
}
-
Associez les politiques IAM au rôle IAM.
Dans le tab Permission du rôle, attachez les stratégies IAM que vous venez de créer.
Étape 2 : Fournissez à Databricks les détails du rôle IAM
-
Dans Databricks, connectez-vous à un Workspace lié au métastore Unity Catalog.
Vous devez disposer du privilège
CREATE STORAGE CREDENTIAL. Les rôles d'administrateur de métastore et d'administrateur de compte incluent tous deux ce privilège. -
Dans la barre latérale, cliquez sur
Catalogue .
-
Cliquez sur **Connecter** > **Identifiants**.
-
Sélectionnez **Créer l'identifiant**.
-
Sélectionnez le Type d'informations d'identification Rôle IAM AWS .
-
Saisissez un nom pour l'identifiant, l'ARN du rôle IAM qui autorise Unity Catalog à accéder à l'emplacement de stockage sur votre tenant cloud, et un commentaire facultatif.
-
(Facultatif) Si vous souhaitez que les utilisateurs aient un accès en lecture seule aux emplacements externes qui utilisent ces informations d'identification de stockage, dans Options avancées , sélectionnez Limiter l'utilisation en lecture seule . Vous pouvez modifier ce paramètre ultérieurement. Pour plus d'informations, consultez Marquer un identifiant de stockage en lecture seule.
-
Cliquez sur Créer .
-
Dans la boîte de dialogue **Informations d'identification créées**, copiez l'**ID externe**.
-
Cliquez sur **OK**.
-
(Facultatif) Liez les informations d'identification de stockage à des Workspace spécifiques.
Par default, tout utilisateur privilégié peut utiliser les informations d'identification de stockage sur tout 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. Consultez Attribuer des informations d'identification de stockage à des Workspace spécifiques.
Étape 3 : mettez à jour la politique de relation d’approbation du rôle IAM
Dans AWS, modifiez la politique de relation d’approbation pour ajouter l’ID externe de votre identifiant de stockage et le rendre auto-assumé.
- Retournez à votre rôle IAM enregistré et accédez à l'onglet **Trust Relationships**.
- Cliquez sur Modifier la stratégie d'approbation et mettez à jour la stratégie pour qu'elle corresponde aux éléments suivants, en remplaçant
<STORAGE-CREDENTIAL-EXTERNAL-ID>par l'ID externe que vous avez copié à l'étape précédente :
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
"arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ",
"arn:aws-us-gov:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws-us-gov:iam::170661010020:role/unity-catalog-prod-UCMasterRole-1DI6DL6ZP26AS",
"arn:aws-us-gov:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
}
}
}
]
}
Étape 4 : Valider l'identifiant de stockage
Après avoir apporté les modifications à la politique d'approbation du rôle IAM à l'étape 3 : Mettre à jour la politique de relation d'approbation du rôle IAM, vérifiez que votre rôle IAM est correctement configuré pour être utilisé comme identifiant de stockage.
Pour valider la configuration, vous devez être le propriétaire de l'identifiant de stockage, un administrateur du métastore, ou vous avez les autorisations CREATE EXTERNAL LOCATION sur l'identifiant de stockage.
- Dans Databricks, connectez-vous à un Workspace lié au métastore.
- Dans la barre latérale, cliquez sur
Catalogue .
- Cliquez sur **Connecter** > **Identifiants**.
- Sélectionnez l'identifiant de stockage que vous souhaitez valider.
- Cliquez sur **Valider la configuration**.
- Si l'une des vérifications échoue, revenez à l'étape 3 : mettre à jour la stratégie de relation d'approbation du rôle IAM et examinez la stratégie d'approbation du rôle IAM afin de les configurer correctement.
Une fois l’identifiant de stockage validé, vous pouvez l’utiliser pour créer un emplacement externe.
Politique d'application des rôles auto-assumés
Si vous ne rencontrez pas d'erreur « Failed - Self Assume Role » lors de la validation de la connexion, vous pouvez ignorer cette section.
Le 30 juin 2023, AWS a mis à jour sa politique d'approbation de rôle IAM pour exiger que les rôles IAM s'auto-approuvent explicitement pour les appels STS:AssumeRole. En conséquence, Databricks exige que les rôles IAM AWS pour les identifiants de stockage soient auto-assumés. Pour plus de détails, consultez ce billet de blog de la communauté.
Le 20 janvier 2025, Databricks a commencé à bloquer l'utilisation des identifiants de stockage existants avec des rôles IAM non auto-assumés. Cela peut interrompre les charges de travail et les Jobs qui s'exécutent à l'aide d'identifiants non auto-assumés.
Pour vérifier si un rôle AWS IAM pour un identifiant de stockage est auto-assumé, suivez les instructions de l'Étape 4 : Valider l'identifiant de stockage. Si la vérification du **Rôle d'auto-prise en charge** échoue, veuillez revoir Étape 3 : Mettre à jour la politique de relation de confiance du rôle IAM et reconfigurer la politique de confiance du rôle IAM pour qu'elle se fasse confiance.
Si vous avez plusieurs identifiants de stockage dans un métastore que vous souhaitez vérifier, utilisez le Notebook suivant pour vérifier les capacités d'auto-attribution de tous les identifiants de stockage de votre métastore :
Notebook de vérification des identifiants de stockage auto-assumés
Créer un emplacement externe pour un compartiment S3 AWS
Cette section décrit comment créer un emplacement externe à l'aide de Catalog Explorer ou de SQL. Il est supposé que vous disposez déjà d'un identifiant de stockage qui permet l'accès au compartiment S3.
Si vous ne disposez pas déjà d'un identifiant de stockage, Databricks vous recommande d'utiliser le template de démarrage rapide AWS CloudFormation pour créer l'identifiant de stockage et l'emplacement externe. Pour créer manuellement un identifiant de stockage à la place, consultez Créer un identifiant de stockage qui accède à un bucket AWS S3.
Option 1 : Créez un emplacement externe à l’aide de Catalog Explorer
Utilisez Catalog Explorer pour créer manuellement un emplacement externe si vous préférez travailler dans l'interface utilisateur. Pour créer des emplacements externes par programmation, utilisez SQL.
Pour créer l'emplacement externe :
-
Connectez-vous à un Workspace qui est associé au métastore.
-
Dans la barre latérale, cliquez sur
Catalogue .
-
Cliquez sur Connecter > Emplacements externes .
-
Cliquez sur Créer un emplacement externe .
-
Dans la boîte de dialogue Créer un nouvel emplacement externe , cliquez sur Manuel , puis sur Suivant .
-
Dans la boîte de dialogue Créer un nouvel emplacement externe manuellement , saisissez un Nom d'emplacement externe .
-
Sous Type de stockage , sélectionnez S3 .
-
Sous URL , saisissez le chemin d'accès au compartiment S3. Par exemple,
s3://<bucket-path>. -
Sous Identifiant de stockage , sélectionnez l'identifiant de stockage qui accorde l'accès à l'emplacement externe.
Si vous ne disposez pas d'un objet d'identifiant de stockage, mais que vous avez un rôle AWS IAM qui permet d'accéder au compartiment S3, vous pouvez sélectionner **+ Créer un nouvel identifiant de stockage** pour créer l'objet d'identifiant de stockage dans cette boîte de dialogue.
-
(Facultatif) Si vous souhaitez que les utilisateurs disposent d'un accès en lecture seule à l'emplacement externe, cliquez sur **Options avancées** et sélectionnez **Limiter à l'utilisation en lecture seule**. Vous pouvez modifier ce paramètre ultérieurement. Pour plus d'informations, consultez Marquer un emplacement externe comme lecture seule.
-
(Facultatif) Si l'emplacement externe est destiné à la migration de charges de travail existantes, cliquez sur Options avancées et activez le mode Fallback .
Consultez Activer le mode fallback sur les emplacements externes.
-
(Facultatif) Si le compartiment S3 nécessite un chiffrement SSE, vous pouvez configurer un algorithme de chiffrement pour permettre aux tables externes et aux volumes dans Unity Catalog d'accéder aux données de votre compartiment S3.
Pour obtenir des instructions, consultez Configurer un algorithme de chiffrement sur un emplacement externe (AWS S3 uniquement).
-
(Facultatif) Les événements de fichier sont activés par default pour simplifier la configuration et améliorer les performances et la capacité des fonctionnalités telles que les Trigger d'arrivée de fichiers et les notifications de fichiers Auto Loader. La validation peut échouer si les identifiants ne sont pas configurés correctement. Pour plus de détails sur la configuration des identifiants, consultez Configurer les événements de fichier pour un emplacement externe. Si vous ne prévoyez pas d'utiliser les fonctionnalités d'événements de fichiers, vous pouvez toujours choisir de forcer la création de l'emplacement.
Pour modifier le type d'événement de fichier, cliquez sur Options avancées et sélectionnez une option dans la liste déroulante Type d'événement de fichier :
- Automatique (recommandé) : la file d’attente de stockage et l’abonnement aux événements sont automatiquement créés et gérés tout au long de leur cycle de vie.
- **Fourni** : La file d'attente de stockage est fournie par votre organisation. Choisissez cette option si votre organisation exige de posséder et de configurer les ressources cloud et les contrôles de sécurité.
-
Cliquez sur Créer .
-
(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 Attribuer un emplacement externe à des workspaces spécifiques.
-
Allez dans l'onglet **tab** pour accorder l'autorisation d'utiliser l'emplacement externe.
Pour que quiconque puisse utiliser l'emplacement externe, vous devez accorder les autorisations :
- Pour utiliser l'emplacement externe afin d'ajouter un emplacement de stockage géré au métastore, au catalogue ou au schéma, accordez le privilège
CREATE MANAGED LOCATION. - Pour créer des tables ou des volumes externes, accordez
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
- 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, accordez le privilège
Option 2 : créer un emplacement externe à l'aide de SQL
Pour créer un emplacement externe à l'aide de SQL, exécutez la commande suivante dans un Notebook ou l'éditeur de requêtes SQL. Remplacez les valeurs des espaces réservés.
<location-name>Un nom pour l'emplacement externe. Silocation_nameinclut des caractères spéciaux, tels que des tirets (-), il doit être entouré d'accents graves (` `). Voir Noms.<bucket-path>: Le chemin dans votre tenant cloud auquel cet emplacement externe accorde l'accès. Par exemple,s3://mybucket.<storage-credential-name>: Le nom de l'identifiant de stockage qui autorise la lecture et l'écriture dans le compartiment. Si le nom de l'identifiant de stockage inclut des caractères spéciaux, tels que des tirets (-), il doit être entouré d'accents graves (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Si vous souhaitez limiter l'accès à l'emplacement externe à des workspaces spécifiques de votre compte, également appelé liaison de workspace ou isolation d'emplacement externe, consultez Attribuer un emplacement externe à des workspaces spécifiques.
Étapes suivantes
- Accorder aux autres utilisateurs l'autorisation d'utiliser des emplacements externes. Consultez Gérer les emplacements externes.
- Définissez des emplacements de stockage gérés à l'aide d'emplacements externes. Voir Spécifier un emplacement de stockage géré dans Unity Catalog.
- Définir des tables externes à l'aide d'emplacements externes. Voir Travailler avec des tables externes.
- Définir des volumes externes à l'aide d'emplacements externes. Consultez Que sont les volumes Unity Catalog ?.