即使我将内容类型设置为text/html,它最终也会成为S3上的application/octet-stream.
ByteArrayInputStream contentsAsStream = new ByteArrayInputStream(contentAsBytes);
ObjectMetadata md = new ObjectMetadata();
md.setContentLength(contentAsBytes.length);
md.setContentType("text/html");
s3.putObject(new PutObjectRequest(ARTIST_BUCKET_NAME, artistId, contentsAsStream, md));
Run Code Online (Sandbox Code Playgroud)
但是,如果我将文件命名为最终使用.html
s3.putObject(new PutObjectRequest(ARTIST_BUCKET_NAME, artistId + ".html", contentsAsStream, md));
Run Code Online (Sandbox Code Playgroud)
然后它工作.
我的md对象被忽略了吗?我如何以编程方式绕过这个,因为随着时间的推移,我需要上传数千个文件,因此不能只进入S3 UI并手动修复contentType.
在迁移到AWS EC2时,我想有充分理由限制我的实例的用户权限.实例需要做的一件事是访问S3上的文件并在那里写文件.但是,如果不向该用户授予所有权限,我找不到任何方法来实现此目的.
s3cmd允许我在s3桶上调用"ls"和"du"我给了策略权限,但在尝试与其中一个文件夹进行PUT /同步时总是失败并出现403错误.如果我使用我的root凭据,则传输将直接进行.
所以,我不明白为什么如果我将所有权限授予用户所说的桶,它不能PUT,但如果我给它arn:aws:s3 :::*(所有桶)那么它可以.对我毫无意义.
有没有其他人曾经处理过此事?
我在亚马逊S3上有一个后缀为".bin.gz"的文件.我希望Web浏览器将其视为gzip压缩文件.因此,我可以进入Amazon S3 Web控制台(https://console.aws.amazon.com/s3/home)并导航到该文件并选择它.在属性下,我可以转到元数据选项卡并添加以下指令:
Content-Type: text/html
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)
这按预期工作.这很容易.
现在,我想在S3上进行PUT时对数百个(或可能是数百万个)文件做同样的事情.
我尝试使用带有该--add-header选项的s3cmd ,但是当我尝试设置Content-Type时,这会给我一个签名错误.此外,我很确定这样做只会影响PUT操作时发送的标头,而不会影响与文档一起存储的元数据.
所以,我正在寻找一种方法来做到这一点,理想情况下使用s3cmd.如果这是不可能的,我将不胜感激,如果有人可以建议一个能够将元数据应用于s3上的文件的python库.
必须有一种方法可以执行此操作,而无需在控制台中手动设置它.
我有一个S3存储桶,其中存储了几个日志文件,格式为index.log.yyyy-mm-dd-01 index.log.yyyy-mm-dd-02...
yyyy for year,mm for month和dd for date.
现在我只想下载其中的一些.我看到下载整个S3存储桶?.如果我想下载整个存储桶,这篇文章的接受答案是绝对正常的,但如果我想做一些模式匹配,我该怎么办?我尝试了以下命令,但它们没有奏效:
aws s3 sync s3://mybucket/index.log.2014-08-01-* .
aws s3 sync 's3://mybucket/index.log.2014-08-01-*' .
Run Code Online (Sandbox Code Playgroud)
我还尝试使用http://fosshelp.blogspot.in/2013/06文章的POINT 7和http://s3tools.org/s3cmd-sync使用s3cmd进行下载.以下是我运行的命令:
s3cmd -c myconf.txt get --exclude '*.log.*' --include '*.2014-08-01-*' s3://mybucket/ .
s3cmd -c myconf.txt get --exclude '*.log.*' --include '*.2014-08-01-*' s3://mybucket/ .
Run Code Online (Sandbox Code Playgroud)
还有一些这样的排列.
任何人都可以告诉我为什么不发生模式匹配?或者,如果我需要使用任何其他工具.
谢谢 !!
如何为文件的Authenticated Users组授予读取权限?我正在使用s3cmd并希望在上传时这样做但我只是直接关注更改acl.我应该为http://acs.amazonaws.com/groups/global/AuthenticatedUsers投入什么?我已经尝试过AuthenticatedUsers的每一种组合.
./s3cmd setacl --acl-grant = read:http://acs.amazonaws.com/groups/global/AuthenticatedUsers s3:// BUCKET/FILE
./s3cmd setacl --acl-grant = read:AuthenticatedUsers s3:// BUCKET/FILE
我在服务器上有一大堆文件,我想将它们上传到S3.这些文件以.data扩展名存储,但实际上它们只是一堆jpeg,png,zip或pdf.
我已经编写了一个简短的脚本,它找到了mime类型并将它们上传到S3上,但是它运行起来很慢.有没有办法使用gnu parallel进行下面的运行?
#!/bin/bash
for n in $(find -name "*.data")
do
data=".data"
extension=`file $n | cut -d ' ' -f2 | awk '{print tolower($0)}'`
mimetype=`file --mime-type $n | cut -d ' ' -f2`
fullpath=`readlink -f $n`
changed="${fullpath/.data/.$extension}"
filePathWithExtensionChanged=${changed#*internal_data}
s3upload="s3cmd put -m $mimetype --acl-public $fullpath s3://tff-xenforo-data"$filePathWithExtensionChanged
response=`$s3upload`
echo $response
done
Run Code Online (Sandbox Code Playgroud)
此外,我确信这个代码一般可以大大改进:)反馈提示将不胜感激.
我想尝试在亚马逊S3上同步几个大桶.
当我运行我的S3cmd sync --recursive命令时,我得到一个回复说"已杀死".
有谁知道这可能是指什么?可以在S3中同步的文件数量是否有限制?
谢谢你的帮助
我将以下内容作为shell脚本的一部分,将站点文件复制到S3 CDN:
for i in "${S3_ASSET_FOLDERS[@]}"; do
s3cmd sync -c /path/to/.s3cfg --recursive --acl-public --no-check-md5 --guess-mime-type --verbose --exclude-from=sync_ignore.txt /path/to/local/${i} s3://my.cdn/path/to/remote/${i}
done
Run Code Online (Sandbox Code Playgroud)
说S3_ASSET_FOLDERS是:
("一二/")
并说这两个文件夹都包含一个名为..."script.js"的文件
并说我已经对两个/ script.js进行了更改- 但没有触及一个/ script.js
运行上面的命令将首先将文件从/ one /复制到正确的位置,虽然我不知道为什么它认为它需要:
信息:发送文件'/path/to/local/one/script.js',请稍候...文件'/path/to/local/one/script.js'存储为's3://my.cdn/ path/to/remote/one/script.js'(在0.1秒内为13551字节,168.22 kB/s)[1 of 0]
...然后是第二个文件夹的远程复制操作:
remote copy:two/script.js - > script.js
它在做什么?为什么??那些文件甚至都不相似.不同的修改时间,不同的校验和.没关系.
我最终得到一个带有两个不正确文件的s3存储桶./ two /中应该更新的文件没有.并且/ one /中不应该更改的文件现在被/two/script.js的内容覆盖
很明显,我做了一些奇怪的事,因为我没有看到其他人有同样的问题.但我不知道是什么?
有没有办法以编程方式在Amazon S3中找到零字节文件?
桶的总大小超过100G,
我不太可能同步回服务器,然后做一个
find . -size 0 -type f
Run Code Online (Sandbox Code Playgroud) 如果我在S3上有一个包含约5000个小文件的目录,有没有办法轻松压缩整个目录并将生成的zip文件留在S3上?我需要这样做,而不必亲自手动访问每个文件.
谢谢!