Ram*_*nta 2 amazon-s3 amazon-web-services aws-cli boto3
当我在 s3 存储桶中存储的 json 文件的对象 URL中遇到两种不同的行为时,我的问题就出现了。
考虑一个 json 文件:mydata.json
如果我使用 AWS 网站上的 s3 仪表板上传此文件,我可以在浏览器中查看数据://s3-us-west-2.amazonaws.com/bucket/folder/mydata.json。如果我在 s3 存储桶中创建特定配置,我还可以从不同的应用程序读取此数据。
另一方面,如果我使用boto3python 库并在同一个存储桶中上传相同的文件(在此过程中使文件公开),当我单击对象 URL时,它会下载该文件,但不会在浏览器中打开数据。
这是我使用的代码:
# upload json file
bucket.upload_file(path, jsonkey)
object_acl = s3.ObjectAcl('bucket_name', jsonkey)
bucket_response = object_acl.put(ACL='public-read')
Run Code Online (Sandbox Code Playgroud)
我探索了文件属性,例如元数据。当我通过仪表板上传文件时,分配的元数据是Content-Type: application/json,通过boto3是Content-Type: binary/octet-stream。我真的不知道元数据是否会影响对象 URL行为。
在这种情况下,如何正确配置要下载或读取的 json 格式文件?我的意思是,影响对象 URL行为的主要配置是什么?
除了元数据之外,我在属性或权限方面找不到这两种方法(dashboard 和 boto3)之间的显着差异Content-Type。然而,当我试图改变时Content-Type,行为却是一样的。
我可以提供任何其他信息来澄清这个问题,请随时询问。提前致谢。
S3 存储桶资源的upload_file()方法的文档并不理想,因为它只是让您参考等效的S3Transfer 文档以了解如何使用额外参数。
请尝试以下操作:
bucket.upload_file(path, jsonkey, ExtraArgs={'ContentType': "application/json"})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4378 次 |
| 最近记录: |