Pular para o conteúdo principal

Conectar-se ao Amazon S3

nota

Este artigo descreve os padrões herdados para configurar o acesso a S3. Databricks recomenda o uso de Unity Catalog para configurar o acesso a S3 e volumes para interação direta com arquivos. Consulte Conectar-se ao serviço e ao armazenamento de objetos na nuvem usando Unity Catalog.

Este artigo explica como se conectar a Amazon S3 (S3) a partir de Databricks.

Acessar S3 buckets usando o perfil da instância

O senhor pode carregar a função IAM como perfil de instância em Databricks e anexar o perfil de instância ao clustering para controlar o acesso aos dados em S3. Databricks recomenda o uso do perfil de instância quando Unity Catalog não estiver disponível para o seu ambiente ou carga de trabalho. Para obter um tutorial sobre como usar o perfil de instância com Databricks, consulte o tutorial: Configure o acesso S3 com um instance profile.

O usuário AWS que cria a função IAM deve:

  • Ser um usuário de conta AWS com permissão para criar ou atualizar funções de IAM, políticas de IAM, buckets S3 e relações de confiança entre contas.

O usuário Databricks que adiciona a função IAM como um perfil de instância em Databricks deve:

  • Seja um administrador do workspace

Depois de adicionar o instance profile ao seu workspace, o senhor pode conceder aos usuários, grupos ou entidades de serviço permissões para iniciar o clustering com o instance profile. Veja o perfil da instância gerenciar em Databricks.

Use o controle de acesso ao clustering e o controle de acesso ao Notebook juntos para proteger o acesso ao site instance profile. Consulte Permissões de computação e Colaborar usando o Databricks Notebook.

Acesse os buckets S3 com URIs e a chave AWS

O senhor pode definir as propriedades de Spark para configurar a chave AWS para acessar S3.

Databricks recomenda o uso do Secret Scope para armazenar todas as credenciais. O senhor pode conceder a usuários, entidades de serviço e grupos em seu workspace acesso para ler o Secret Scope. Isso protege o AWS key e permite que os usuários acessem o S3. Para criar um escopo secreto, consulte Gerenciar escopo secreto.

O escopo das credenciais pode ser definido para um clustering ou um Notebook. Use o controle de acesso ao clustering e o controle de acesso ao Notebook juntos para proteger o acesso a S3. Consulte Permissões de computação e Colaborar usando o Databricks Notebook.

Para definir as propriedades do Spark, use o seguinte snippet na configuração Spark de um clustering para definir a chave AWS armazenada no Secret Scope como variável 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 do S3 usando os seguintes comandos:

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

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

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

Configuração global

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

Configuração por bucket

Configure as propriedades por bucket com a sintaxe spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Isso permite configurar buckets com diversas credenciais, endpoints e assim por diante.

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

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>

O solicitante de acesso paga baldes

Para habilitar o acesso aos buckets Requester Pays, adicione a seguinte linha à configuraçãoSpark do seu clustering:

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

Databricks não oferece suporte a gravações do Delta Lake em buckets de pagamentos do solicitante.

Padrões obsoletos para armazenamento e acesso a dados do Databricks

Os padrões de armazenamento obsoletos são os seguintes:

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