我遇到你请求帮助列出我的CloudCube bucket中的对象。我正在开发一个托管在Heroku上的Django应用程序。我正在使用CloudCube附加组件进行持久存储。CloudCube运行在AWS S3 Bucket上,CloudCube提供私钥/命名空间来访问我的文件。我使用boto3库来访问bucket,当我想要上传/下载文件;然而,我在尝试列出带有CloudCube前缀键的特定bucket中的对象时遇到了困难。2在任何请求中,我都会收到AccessDennied异常。
要访问bucket,我使用以下实现:
s3_client = boto3.client('s3', aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
endpoint_url=settings.AWS_S3_ENDPOINT_URL, region_name='eu-west-1')
s3_result = s3_client.list_objects(Bucket=settings.AWS_STORAGE_BUCKET_NAME, Prefix=settings.CLOUD_CUBE_KEY)
if 'Contents' not in s3_result:
return []
file_list = []
for key in s3_result['Contents']:
if f"{username}/{mode.value}" in key['Key']:
file_list.append(key['Key'])
作为存储桶名称,我在URI中使用前缀,根据AWS的文档,该前缀指向AWS上的CloudCube存储桶:https://BUCKETNAME.s3.amazonaws.com/CUBENAME.CUBENAME则用作前缀密钥。
有人知道我错过了什么吗?
先谢谢你!
1条答案
按热度按时间zsohkypk1#
根据CloudCube的文档,您需要在前缀上加上一个尾部斜杠来列出目录。
所以你应该像这样更新你的代码来使它工作: