Share via


Conectar-se ao Amazon S3

Este artigo explica como se conectar ao AWS S3 a partir do Azure Databricks.

Acesse buckets do S3 com URIs e chaves da AWS

Você pode definir as propriedades do Spark para configurar uma chave da AWS para acessar o S3.

O Databricks recomenda a utilização de âmbitos de segredos para armazenar todas as credenciais. Pode conceder aos utilizadores, principais de serviço e grupos na sua área de trabalho acesso para ler o âmbito de segredo. Isso protege a chave da AWS e, ao mesmo tempo, permite que os usuários acessem o S3. Para criar um escopo secreto, consulte Escopos secretos.

As credenciais podem ter como escopo um cluster ou um bloco de anotações. Use o controle de acesso do cluster e o controle de acesso do notebook juntos para proteger o acesso ao S3. Consulte Permissões de computação e Colaborar usando blocos de anotações Databricks.

Para definir as propriedades do Spark, use o seguinte trecho na configuração do Spark de um cluster para definir as chaves da AWS armazenadas em escopos secretos como variáveis de ambiente:

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

Em seguida, você pode ler a partir do S3 usando os seguintes comandos:

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

Acesse o S3 com opções do Hadoop de código aberto

O Databricks Runtime suporta a configuração do sistema de arquivos S3A usando opções Hadoop de código aberto. Você pode configurar propriedades globais e propriedades por bucket.

Configuração global

# 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

Configuração por bucket

Você configura propriedades por bucket usando a sintaxe spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Isso permite configurar buckets com diferentes credenciais, pontos de extremidade e assim por diante.

Por exemplo, além das configurações globais do S3, você pode configurar cada bucket individualmente usando as seguintes chaves:

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

Padrões descontinuados para armazenar e aceder a dados do Azure Databricks

A seguir estão os padrões de armazenamento preteridos:

Importante

  • O sistema de arquivos S3A permite o armazenamento em cache por padrão e libera recursos em 'FileSystem.close()'. Para evitar que outros threads usem uma referência ao sistema de arquivos armazenado em cache incorretamente, não use explicitamente o 'FileSystem.close().
  • O sistema de arquivos S3A não remove marcadores de diretório ao fechar um fluxo de saída. Aplicativos herdados baseados em versões do Hadoop que não incluem HADOOP-13230 podem interpretá-los incorretamente como diretórios vazios, mesmo se houver arquivos dentro.