python 虚拟环境拒绝 AWS S3 访问

AWS S3 Access Denied on python virtual environment

我想将 csv 文件写入 s3 存储桶

import pandas as pd

df = pd.DataFrame({'test':[1,2,3,4]})
# write to s3
df.to_csv('s3://<my-bucket>/test.csv', index=False)
# read from s3
df_read = pd.read_csv('s3://<my-bucket>/test.csv')

我已经安装了 s3fs 并配置了 awscli

此代码在 awscli 之前安装的虚拟环境中运行良好 但是新的虚拟环境有只读权限

任何人都可以帮助我了解如何解决这个问题吗?

AWS CLI 凭证和配置设置优先于实例配置文件凭证,因此您需要配置 cli 以承担具有写入权限的 IAM 角色或授予当前 AWS cli 用户凭证写入权限。

首先必须设置aws cli然后然后aws config - 之后你可以轻松使用它在你的代码中。

基本上,如果这是一个独立的脚本,您 运行 可以通过以下几种方式加入其中:

  1. 将凭据作为环境变量传递,例如

如果您正在使用 windows

    set AWS_ACCESS_KEY_ID="your_key_id"
    set AWS_SECRET_ACCESS_KEY="your_secret_key"
    set AWS_REGION=<REGION_NAME>

Mac OSX/Linux

    $ export AWS_ACCESS_KEY_ID="your_key_id"
    $ export AWS_SECRET_ACCESS_KEY="your_secret_key"
    $ export AWS_REGION=<REGION_NAME>
  1. 在 运行 运行脚本时传递配置文件名称

    AWS_PROFILE=foo script.py
    
  2. 通过指定配置文件创建客户端

    dev = boto3.session.Session(profile_name=<MY_PROFILE_NAME>)