Aller au contenu principal

Se connecter à Amazon S3

important

Cette documentation a été retirée et pourrait ne pas être mise à jour.

Cet article décrit les méthodes héritées pour la configuration de l'accès à S3. Databricks recommande d'utiliser Unity Catalog pour configurer l'accès à S3 et aux volumes pour une interaction directe avec les fichiers. Consultez Connexion à un emplacement externe AWS S3.

Cet article explique comment se connecter à Amazon S3 (S3) depuis Databricks.

Accéder aux compartiments S3 à l'aide de profils d'instance

Vous pouvez charger des rôles IAM en tant que profils d'instance dans Databricks et attacher des profils d'instance à des clusters pour contrôler l'accès aux données vers S3. Databricks recommande d'utiliser les profils d'instance lorsque Unity Catalog n'est pas disponible pour votre environnement ou votre charge de travail. Pour un tutoriel sur l'utilisation des profils d'instance avec Databricks, consultez Tutoriel : Configurer l'accès S3 avec un profil d'instance.

L'utilisateur AWS qui crée le rôle IAM doit :

  • Être un utilisateur de compte AWS avec l'autorisation de créer ou de mettre à jour des rôles IAM, des politiques IAM, des compartiments S3 et des relations d'approbation entre comptes.

L'utilisateur Databricks qui ajoute le rôle IAM comme profil d'instance dans Databricks doit :

  • Soyez un administrateur de Workspace

Une fois que vous avez ajouté le profil d'instance à votre Workspace, vous pouvez accorder aux utilisateurs, groupes ou Service Principal les autorisations de lancer des clusters avec le profil d'instance. Voir Gérer les profils d'instance dans Databricks.

Utilisez ensemble le contrôle d'accès des clusters et le contrôle d'accès du notebook pour protéger l’accès au profil d’instance. Consultez Autorisations de compute et Collaborer à l'aide de Notebooks Databricks.

Accéder aux compartiments S3 avec des URI et des clés AWS

Vous pouvez définir les propriétés Spark pour configurer les clés AWS afin d’accéder à S3.

Databricks recommande d’utiliser des Secret Scopes pour stocker tous les identifiants. Vous pouvez accorder l’accès aux utilisateurs, aux Service Principal et aux groupes de votre Workspace pour lire le Secret Scope. Ceci protège la clé AWS tout en permettant aux utilisateurs d’accéder à S3. Pour créer un Secret Scope, consultez Gérer les Secret Scope.

Les informations d'identification peuvent être limitées à un cluster ou à un Notebook. Utilisez le contrôle d'accès aux clusters et le contrôle d'accès aux Notebooks ensemble pour protéger l'accès à S3. Consultez Autorisations de compute et Collaborer à l'aide des Notebooks Databricks.

Pour définir les propriétés Spark, utilisez l'extrait suivant dans la configuration Spark d'un cluster afin de définir les clés AWS stockées dans les secret scopes comme variables d'environnement:

AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}

Vous pouvez ensuite lire depuis S3 en utilisant les commandes suivantes :

Python
aws_bucket_name = "my-s3-bucket"

df = spark.read.load(f"s3a://{aws_bucket_name}/flowers/delta/")
display(df)
dbutils.fs.ls(f"s3a://{aws_bucket_name}/")

Accéder à S3 avec des options Hadoop open source

Databricks Runtime prend en charge la configuration du système de fichiers S3A à l'aide des options Hadoop open source. Vous pouvez configurer les propriétés globales et les propriétés par compartiment.

Configuration globale

ini
# Global S3 configuration
spark.hadoop.fs.s3a.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.endpoint <aws-endpoint>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS

Configuration par compartiment

Vous configurez les propriétés par compartiment en utilisant la syntaxe spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Cela vous permet de configurer des compartiments avec différentes informations d'identification, Endpoint, et ainsi de suite.

Par exemple, en plus des paramètres S3 globaux, vous pouvez configurer chaque compartiment individuellement à l’aide des clés suivantes :

ini
# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>

# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>

Accès aux compartiments Requester Pays

Pour activer l'accès aux compartiments Requester Pays, ajoutez la ligne suivante à la configuration Spark de votre cluster :

ini
spark.hadoop.fs.s3a.requester-pays.enabled true
remarque

Databricks ne prend pas en charge les écritures Delta Lake vers les buckets Requester Pays.

Modèles dépréciés pour le stockage et l'accès aux données depuis Databricks

Les modèles de stockage suivants sont obsolètes :

important
  • Le système de fichiers S3A active la mise en cache par default et libère les ressources lors de 'FileSystem.close()'. Pour éviter que d'autres threads n'utilisent une référence au système de fichiers mis en cache de manière incorrecte, n'utilisez pas explicitement 'FileSystem.close()'.
  • Le système de fichiers S3A ne supprime pas les marqueurs de répertoire lors de la fermeture d'un Stream de sortie. Les applications héritées basées sur des versions de Hadoop qui n'incluent pas HADOOP-13230 peuvent les interpréter à tort comme des répertoires vides, même s'ils contiennent des fichiers.