我有 AWS 的访问密钥和安全密钥,但我想将文件写入 S3 存储桶中,而不用在 python 代码中暴露我的访问密钥和安全密钥。
在 Databricks 中,您可以定义 外部位置 | AWS 上的 Databricks:
外部位置是一个安全对象,它将存储路径与授权访问该路径的存储凭证相结合。
基本上,您提供到 Databricks 的 S3 路径并为其指定 IAM 角色。然后,只需通过引用即可通过 SQL/Spark 访问 S3 存储桶,无需提供凭据,也无需使用 boto3。
例如:
select * from read_files('s3://bucket-name/folder/')
您还可以创建卷 | AWS 上的 Databricks:
卷是 Unity Catalog 对象,表示云对象存储位置中的逻辑存储卷。卷提供访问、存储、管理和组织文件的功能。
这为 S3 存储桶提供了类似磁盘的接口,同样使用存储的凭据。然后您的代码可以像这样访问该卷:
SELECT * FROM csv.`/Volumes/mycatalog/myschema/myexternalvolume/sample.csv`
如果您从 Python 读取/写入文件,则卷可以让您直接访问 S3 存储桶,而无需使用 boto3。您只需引用卷路径(如上所示),就像它是本地磁盘一样。