将pandas dataframe写入S3桶时如何指定对应的AWS organization配置
pandas调用to_parquet写入S3时指定AWS配置文件的方法
首先确保你已经安装了pandas操作S3的底层依赖库s3fs:
pip install s3fs
方法1:通过storage_options参数直接指定配置文件
这是最简便的方法,无需额外初始化对象,直接在写入时传入配置文件名称即可:
df.to_parquet( s3_bucket_url, storage_options={"profile": "你要使用的AWS配置文件名称"} )
方法2:先初始化S3FileSystem实例再传入
如果你需要复用同一个S3连接配置做多次操作,可以先构造文件系统实例再传入:
import s3fs # 初始化时指定配置文件 s3_fs = s3fs.S3FileSystem(profile_name="你要使用的AWS配置文件名称") # 写入时传入文件系统实例 df.to_parquet(s3_bucket_url, filesystem=s3_fs)
方法3:通过环境变量指定默认配置文件
如果你不想修改写入逻辑,也可以在代码运行前或代码开头设置环境变量:
import os # 全局指定当前脚本使用的AWS配置文件 os.environ["AWS_PROFILE"] = "你要使用的AWS配置文件名称" # 后续所有S3操作默认使用该配置 df.to_parquet(s3_bucket_url)
额外说明
- 以上方法均依赖你本地
~/.aws/credentials(或Windows系统C:\Users\<用户名>\.aws\credentials)文件中已正确配置对应名称的profile信息。 - 如果你不想使用本地配置文件,也可以直接在
storage_options中传入明文凭证:
df.to_parquet( s3_bucket_url, storage_options={ "aws_access_key_id": "你的AccessKey", "aws_secret_access_key": "你的SecretKey", "aws_session_token": "你的临时会话Token(可选)" } )
内容的提问来源于stack exchange,提问作者Bertrand
相关产品推荐
相关产品推荐

