配置AWS存储
本文描述了如何为两种不同的用例配置Amazon Web Services S3 bucket:
工作区的根存储:用于工作空间对象(如集群日志、笔记本修订和作业结果库)的根存储。方法创建新的工作空间账户控制台或者用账户API,必须首先设置一个S3存储桶,将其用作工作区的根存储。
日志交付(所有部署类型):用于交付日志的存储,例如可计费的使用情况或审计日志。
提示
您可以使用以下工具自动化AWS存储部署Databricks Terraform提供商.看到使用Terraform创建Databricks工作区.
Databricks建议您查看S3的安全性最佳实践有关保护存储桶中的数据免受不必要访问的指导。
预览
步骤1:创建S3桶
以具有管理员权限的用户身份登录到您的AWS控制台,然后转到S3服务。
创建S3桶。看到创建桶请参阅AWS文档。
重要的
S3桶必须与Databricks部署在同一个AWS区域。
Databricks建议您使用专用于Databricks的S3桶作为最佳实践,不与其他资源或服务共享。
不要重用遗留工作区中的存储桶。例如,如果要迁移到E2,请为E2设置创建一个新的AWS存储桶。
步骤2:应用桶策略(仅创建工作区)
请注意
只有在为使用Account API创建的新工作空间设置根存储时,才需要此步骤。如果您正在为日志传递设置存储,请跳过此步骤。
在AWS控制台中,进入S3服务。
单击桶名。
单击权限选项卡。
单击桶的政策按钮。
复制并修改此桶策略。取代
< 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”]}}}]}
创建中描述的生命周期策略高级配置.
步骤3:设置S3对象所有权(仅限日志交付)
请注意
只有在为日志传递设置存储时,才需要此步骤。如果要为新工作空间设置根存储,请跳过此步骤。
对日志的访问取决于您如何设置S3存储桶。Databricks通过AWS的内置功能将日志发送到S3存储桶BucketOwnerFullControl ACL罐头以便账户所有者和指定人可以直接下载日志。
要支持新创建对象的存储桶所有权,必须设置存储桶的所有权S3对象所有权设置为值首选桶所有者.
重要的
相反,如果你设定你的桶S3对象所有权设置为对象的作家,新对象(如日志)仍然由上传帐户拥有,该帐户默认是Databricks用于访问桶的IAM角色。这可能会使访问日志变得困难,因为您无法从作为存储桶所有者进行身份验证的AWS控制台或自动化工具访问它们。
步骤4:启用S3对象级日志记录(推荐)
Databricks强烈建议您为根存储桶启用S3对象级日志记录。这样可以更快地调查可能出现的任何问题。请注意,S3对象级日志记录可能会增加AWS使用成本。
有关说明,请参阅关于S3桶和对象的CloudTrail事件日志的AWS文档.
验证正确的权限
当为桶创建存储配置, Databricks检查您的存储桶是否已经设置了正确的权限。其中一个检查会在bucket中写入文件并立即删除它。但是,如果删除操作失败,则临时对象将保留在bucket的根位置。对象名称将以databricks-verification——< uuid >
.
如果看到这个对象,很可能是因为桶策略配置错误。Databricks具有PUT权限,但没有DELETE权限。检查桶策略,确保权限配置正确。