Conecte-se à Amazon S3
Observação
Este artigo descreve os padrões herdados para configurar o acesso ao S3. A Databricks recomenda o uso do Unity Catalog para configurar o acesso ao S3 e aos volumes para interação direta com os arquivos. Consulte Conectar-se ao armazenamento de objetos cloud usando o Unity Catalog.
Este artigo explica como conectar à AWS S3 no Databricks.
Acesse buckets do S3 com instance profiles
Você pode carregar IAM role como instance profile no Databricks e anexar instance profile aos clusters para controlar o acesso de dados ao S3. A Databricks recomenda a utilização instance profile quando Unity Catalog não estiver disponível para o seu ambiente ou carga de trabalho. Para obter um tutorial sobre como usar instance profile com Databricks, consulte Tutorial: Configurar o acesso ao 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:
Ser administrador do workspace
Depois de adicionar o perfil da instância ao seu espaço de trabalho, você poderá conceder aos usuários, grupos ou entidades de serviço permissões para iniciar clusters com o perfil da instância. Consulte Gerenciar perfis de instância em Databricks.
Use o controle de acesso a clusters e o controle de acesso a Notebook juntos para proteger o acesso a instance profile. Consulte Permissões de computação e colaboração usando o Databricks Notebook.
Acesse buckets do S3 com URIs e chaves da AWS
Você pode definir propriedades do Spark para configurar chaves AWS para acessar o S3.
A Databricks recomenda a utilização de âmbitos secretos para armazenar todas as credenciais. Você pode conceder acesso a usuários, entidades de serviço e grupos em seu workspace para ler o escopo secreto. Isso protege a chave da AWS e permite que os usuários acessem o S3. Para criar um escopo secreto, consulte Escopos secretos.
As credenciais podem ter o escopo de um cluster ou de um Notebook. Use o controle de acesso ao cluster e o controle de acesso Notebook juntos para proteger o acesso ao S3. Consulte Permissões de computação e Colaborar usando o Databricks Notebook.
Para definir propriedades do Spark, use o seguinte snippet na configuração do Spark de um clusterspara definir a key 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:
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
# 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 buckets
Para habilitar o acesso aos buckets de pagamentos do solicitante , adicione a seguinte linha à clusters configuração do Spark dos seus:
spark.hadoop.fs.s3a.requester-pays.enabled true
Observação
Databricks não oferece suporte a gravações do Delta Lake em buckets de pagamentos do solicitante.
Padrões obsoletos no armazenamento e no acesso a dados do Databricks
Os padrões de armazenamento obsoletos são os seguintes:
O Databricks não recomenda mais a montagem de locais de dados externos no Databricks Filesystem. Consulte Montagem de armazenamento de objetos na nuvem no Databricks.
O Databricks não recomenda mais o uso de passagem de credenciais com S3. Consulte Passagem de credenciais (legado).
Importante
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.