Conecte-se ao Amazon S3
Esta documentação foi descontinuada e pode não ser atualizada.
Este artigo descreve padrões legados para configurar o acesso ao S3. Databricks recomenda o uso Unity Catalog para configurar o acesso ao S3 e aos volumes para interação direta com arquivos. Consulte Conectar-se a um local externo do AWS S3.
Este artigo explica como conectar-se ao Amazon S3 (S3) a partir do Databricks.
Acesse buckets S3 usando o perfil da instância.
Você pode carregar uma função IAM como um perfil de instância no Databricks e anexar esse perfil a clusters para controlar o acesso aos dados no S3. Databricks recomenda o uso de perfis de instância quando Unity Catalog não estiver disponível para seu ambiente ou carga de trabalho. Para um tutorial sobre como usar o perfil de instância com Databricks, consulte o tutorial: Configurar 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, você pode conceder permissões a usuários, grupos ou entidades de serviço para iniciar clusters com o instance profile. Veja o perfil da instância de gerenciamento no Databricks.
Utilize o controle de acesso ao cluster e o controle de acesso ao notebook em conjunto para proteger o acesso ao instance profile. Consulte as permissões de computação e a colaboração usando o Databricks Notebook.
Acesse buckets S3 com URIs e chave AWS
Você pode configurar as propriedades Spark para definir a chave AWS para acessar S3.
Databricks recomenda o uso do Escopo Secreto para armazenar todas as credenciais. Você pode conceder aos usuários, entidades de serviço e grupos em seu workspace acesso para ler o Escopo Secreto. Isso protege a key AWS , permitindo ao mesmo tempo que os usuários acessem S3. Para criar um Escopo Secreto, consulte Gerenciar Escopo Secreto.
As credenciais podem ser definidas para um cluster ou um notebook. Use o controle de acesso ao cluster e o controle de acesso ao Notebook em conjunto para proteger o acesso ao S3. Consulte Permissões de computação e Colaboração usando o Databricks Notebook.
Para definir as propriedades Spark , use o seguinte trecho de código na configuração Spark de um cluster para definir a chave AWS armazenada no Escopo Secreto 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:
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 Hadoop de código aberto.
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
# 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:
# 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 os valores.
Para habilitar o acesso aos buckets Requester Pays , adicione a seguinte linha à configuração do Spark do seu cluster:
spark.hadoop.fs.s3a.requester-pays.enabled true
Databricks não oferece suporte a gravações do Delta Lake em buckets de pagamentos do solicitante.
Padrões obsoletos para armazenar e acessar dados do Databricks
Os padrões de armazenamento obsoletos são os seguintes:
-
A Databricks não recomenda mais a montagem de locais de dados externos no sistema de arquivos da Databricks. Consulte Montando armazenamento de objetos cloud no Databricks.
-
A Databricks não recomenda mais o uso de encaminhamento de credenciais com o S3. Consulte Passagem de credenciais (legado).
- O sistema de arquivos S3A habilita o cache por default e libera o recurso em 'FileSystem.close()'. Para evitar que outras threads 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.