Delen via


Verbinding maken met Amazon S3

In dit artikel wordt uitgelegd hoe u vanuit Azure Databricks verbinding maakt met Amazon S3 (S3).

Toegang tot S3-buckets met URI's en AWS-sleutels

U kunt Spark-eigenschappen instellen om AWS-sleutels te configureren voor toegang tot S3.

Databricks raadt aan geheime bereiken te gebruiken voor het opslaan van alle referenties. U kunt gebruikers, service-principals en groepen in uw werkruimte toegang verlenen om het geheime bereik te lezen. Hierdoor wordt de AWS-sleutel beschermd terwijl gebruikers toegang hebben tot S3. Zie Geheime bereiken beheren als u een geheim bereik wilt maken.

De referenties kunnen worden beperkt tot een cluster of een notebook. Gebruik toegangsbeheer voor clusters en notebooktoegangsbeheer samen om de toegang tot S3 te beveiligen. Zie Compute-machtigingen en samenwerken met behulp van Databricks-notebooks.

Als u Spark-eigenschappen wilt instellen, gebruikt u het volgende fragment in de Spark-configuratie van een cluster om de AWS-sleutels in te stellen die zijn opgeslagen in geheime bereiken als omgevingsvariabelen:

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

U kunt vervolgens lezen uit S3 met behulp van de volgende opdrachten:

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}/")

Access S3 met opensource Hadoop-opties

Databricks Runtime ondersteunt het configureren van het S3A-bestandssysteem met behulp van opensource Hadoop-opties. U kunt globale eigenschappen en eigenschappen per bucket configureren.

Globale configuratie

# 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

Configuratie per bucket

U configureert eigenschappen per bucket met behulp van de syntaxis spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Hiermee kunt u buckets instellen met verschillende referenties, eindpunten enzovoort.

Naast algemene S3-instellingen kunt u bijvoorbeeld elke bucket afzonderlijk configureren met behulp van de volgende sleutels:

# 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>

Afgeschafte patronen voor het opslaan en openen van gegevens vanuit Azure Databricks

Hier volgen afgeschafte opslagpatronen:

Belangrijk

  • Het S3A-bestandssysteem maakt caching standaard mogelijk en publiceert resources op FileSystem.close(). Om te voorkomen dat andere threads onjuist een verwijzing naar het gecachete bestandssysteem gebruiken, gebruik niet expliciet 'FileSystem.close()'.
  • Het S3A-bestandssysteem verwijdert geen mapmarkeringen bij het sluiten van een uitvoerstroom. Oudere toepassingen die zijn gebaseerd op Hadoop-versies die geen HADOOP-13230 bevatten, kunnen ze verkeerd interpreteren als lege mappen, zelfs als er bestanden in zijn.