我试图上传一个网页到S3桶使用亚马逊的Boto3 SDK为Python。
设置内容类型时遇到问题。AWS不断为
内容类型
创建一个新的元数据键,除了我使用此代码指定的元数据键之外:
# Upload a new file
data = open('index.html', 'rb')
x = s3.Bucket('website.com').put_object(Key='index.html', Body=data)
x.put(Metadata={'Content-Type': 'text/html'})
对于如何将
内容类型
设置为文本/html
的任何指导,我们将不胜感激。
这里,data
是一个打开的文件,而不是它的内容:
# Upload a new file
data = open('index.html', 'rb')
要读取(二进制)文件,请执行以下操作:
import io
with io.open("index.html", mode="rb") as fd:
data = fd.read()
那样会更好。
您还可以使用upload_file()
方法和ExtraArgs
关键字(并将权限设置为World read):
import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file('source_file_name.html', 'my.bucket.com', 'aws_file_name.html', ExtraArgs={'ContentType': "application/json", 'ACL': "public-read"} )
Content-Type
不是自定义元数据,这是用于Metadata
的。它有自己的属性,可以这样设置:
bucket.put_object(Key='index.html', Body=data, ContentType='text/html')
注意:。put_object()
可以设置的不仅仅是内容类型
。其余部分请查看Boto3文档。
问题内容: 我正在尝试使用Amazon的Boto3 SDK for Python将网页上传到S3存储桶。 我无法设定。除了我使用此代码指定的密钥外,AWS还在继续为它创建新的元数据密钥: 任何有关如何设置为的指导将不胜感激。 问题答案: 不是 自定义 元数据,而是用于此的。它具有自己的属性,可以这样设置: 注意:可以设定更多。查看其余的Boto3文档。
boto3文档建议从命令行配置密钥。如果有的话,我可以把AWS键放入python源代码中吗?下面是供参考的代码。
我通过执行以下操作读取S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于打开(filename).readlines()。最好的方法是什么?
问题内容: 我这样做是读取了S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于。什么是最好的方法? 问题答案: boto3提供了一种资源模型,该资源模型使诸如迭代对象之类的任务变得更加容易。不幸的是,StreamingBody不提供或。
问题内容: 因此,我在Struts2中使用freemarker模板来制定我的响应。但是,由于我也尝试使用taconite,因此需要使用“ text / xml”的内容类型发送响应。我似乎找不到使用freemarker指令设置内容类型的方法,而且我对Struts并不精通,无法知道是否有办法通过它来完成。 那么,我应该怎么做呢? 问题答案: 或者您可以在struts.xml中进行设置
实例类型:(T2.Micro,T2.Small,C4.Large...)下面列出的内容:http://docs.aws.amazon.com/awsec2/latest/userguide/instance-types.html 我已经浏览了客户和服务的文档,但我找不到任何接近的东西。我甚至还没有找到一个列出其他碰巧表示所有实例类型的方法。 有人对Boto3有更多的经验吗?