当我在存储在s3存储桶中的json文件的对象URL中遇到两种不同的行为时,我的问题就出现了。
考虑一个json文件:mydata.json
如果我从AWS网站使用s3仪表板上传此文件,则可以在浏览器中查看数据://s3-us-west-2.amazonaws.com/bucket/folder/mydata.json。如果我在s3存储桶中创建特定的配置,我也可以从其他应用程序读取此数据。
另一方面,如果我将boto3
库用于python并在同一存储桶中上传相同的文件(在此过程中将文件公开),则当我单击对象URL时,它将下载文件,但不会在浏览器中打开数据。
这是我使用的代码:
# upload json file
bucket.upload_file(path, jsonkey)
object_acl = s3.ObjectAcl('bucket_name', jsonkey)
bucket_response = object_acl.put(ACL='public-read')
我探索了文件属性,例如元数据。通过仪表板上传文件时,分配的元数据为Content-Type: application/json
,通过boto3
为Content-Type: binary/octet-stream
。我真的不知道元数据是否会影响对象的URL行为。
在这种情况下,如何正确配置json格式的文件以进行下载或读取?我的意思是,影响对象URL行为的主要配置是什么?
除了Content-Type
元数据外,我在属性或权限上都找不到这两种方法(仪表板和boto3)之间的显着差异。但是,当我尝试更改时Content-Type
,行为是相同的。
我可以提供任何其他信息来澄清这个问题,请随意提问。提前致谢。
S3存储桶资源的upload_file()方法的文档并不理想,因为它只是向您介绍了等效的S3Transfer文档,以了解如何使用额外的参数。
请尝试以下操作:
bucket.upload_file(path, jsonkey, ExtraArgs={'ContentType': "application/json"})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句