配置AWS存储

本文描述了如何为两种不同的用例配置Amazon Web Services S3 bucket:

  • 工作区的根存储:用于工作空间对象(如集群日志、笔记本修订和作业结果库)的根存储。方法创建新的工作空间账户控制台或者用账户API,必须首先设置一个S3存储桶,将其用作工作区的根存储。

  • 日志交付(所有部署类型):用于交付日志的存储,例如可计费的使用情况或审计日志。

提示

您可以使用以下工具自动化AWS存储部署Databricks Terraform提供商.看到使用Terraform创建Databricks工作区

Databricks建议您查看S3的安全性最佳实践有关保护存储桶中的数据免受不必要访问的指导。

步骤1:创建S3桶

  1. 以具有管理员权限的用户身份登录到您的AWS控制台,然后转到S3服务。

  2. 创建S3桶。看到创建桶请参阅AWS文档。

    重要的

    • S3桶必须与Databricks部署在同一个AWS区域。

    • Databricks建议您使用专用于Databricks的S3桶作为最佳实践,不与其他资源或服务共享。

    • 不要重用遗留工作区中的存储桶。例如,如果要迁移到E2,请为E2设置创建一个新的AWS存储桶。

步骤2:应用桶策略(仅创建工作区)

请注意

只有在为使用Account API创建的新工作空间设置根存储时,才需要此步骤。如果您正在为日志传递设置存储,请跳过此步骤。

  1. 在AWS控制台中,进入S3服务。

  2. 单击桶名。

  3. 单击权限选项卡。

  4. 单击桶的政策按钮。

    桶策略按钮
  5. 复制并修改此桶策略。取代< s3-bucket-name >S3桶名:

    请注意

    方法创建存储配置账户控制台,也可以直接从添加存储配置对话框。看到使用帐户控制台管理存储配置

    “版本”“2012-10-17”“声明”“席德”“授权Databricks访问”“效应”“允许”“校长”“AWS”“攻击:aws:我::414351767826:根”},“行动”“s3: GetObject”“s3: GetObjectVersion”“s3: propertynames”“s3: DeleteObject”“s3: ListBucket”“s3: GetBucketLocation”],“资源”“攻击:aws: s3::: < s3-bucket-name > / *”“攻击:aws: s3::: < s3-bucket-name >”],“条件”“StringEquals”“aws: PrincipalTag / DatabricksAccountId”“YOUR_DATABRICKS_ACCOUNT_ID”
  6. 创建中描述的生命周期策略高级配置

步骤3:设置S3对象所有权(仅限日志交付)

请注意

只有在为日志传递设置存储时,才需要此步骤。如果要为新工作空间设置根存储,请跳过此步骤。

对日志的访问取决于您如何设置S3存储桶。Databricks通过AWS的内置功能将日志发送到S3存储桶BucketOwnerFullControl ACL罐头以便账户所有者和指定人可以直接下载日志。

要支持新创建对象的存储桶所有权,必须设置存储桶的所有权S3对象所有权设置为值首选桶所有者

重要的

相反,如果你设定你的桶S3对象所有权设置为对象的作家,新对象(如日志)仍然由上传帐户拥有,该帐户默认是Databricks用于访问桶的IAM角色。这可能会使访问日志变得困难,因为您无法从作为存储桶所有者进行身份验证的AWS控制台或自动化工具访问它们。

解决验证失败

桶策略权限可能需要几分钟才能传播。如果验证因权限而失败,请重试此过程。

验证正确的权限

为桶创建存储配置, Databricks检查您的存储桶是否已经设置了正确的权限。其中一个检查会在bucket中写入文件并立即删除它。但是,如果删除操作失败,则临时对象将保留在bucket的根位置。对象名称将以databricks-verification——< uuid >

如果看到这个对象,很可能是因为桶策略配置错误。Databricks具有PUT权限,但没有DELETE权限。检查桶策略,确保权限配置正确。