使用Boto从Private S3获取文件列表:403禁止

时间:2018-08-08 17:28:08

标签: amazon-s3 boto

我想获取私有S3中存在的文件列表。通常,我会执行以下操作:

from boto.s3.connection import S3Connection
from boto.s3.key import Key

aws_access_key_id = "XXX"
aws_secret_access_key = "YYY"

conn = S3Connection(aws_access_key_id, aws_secret_access_key)
bucket = conn.get_bucket('bucket-name')

these_files = ["s3://bucket-name/" + 
           f.name for f in list(bucket.list("", ""))]

但是,如果我要以大熊猫格式读取文件,则会得到403 Forbidden Error。我找到了here解决方案来获取文件,例如:

bucket = conn.get_bucket('bucket', validate=False)
k = bucket.get_key('file.csv')

df = pd.read_csv(k)

此解决方案的问题在于,它要求用户事先知道文件名。我可以通过创建自定义函数来避免这种情况:

def readS3_files(f):
    filename = f.split("/")[-1]
    k = bucket.get_key(filename)
    df = pd.read_csv(k)
    return df

Boto中是否有东西可以让我从私有S3存储桶中获取文件名,因此我可以简单地在熊猫中读取文件名而无需创建此自定义函数?

0 个答案:

没有答案