当我登录到S3控制台时,我无法下载多个所选文件(WebUI仅在选择一个文件时才允许下载):
https://console.aws.amazon.com/s3
这是可以在用户策略中更改的内容,还是Amazon的限制?
当我登录到S3控制台时,我无法下载多个所选文件(WebUI仅在选择一个文件时才允许下载):
https://console.aws.amazon.com/s3
这是可以在用户策略中更改的内容,还是Amazon的限制?
Answers:
无法通过AWS Console Web用户界面进行操作。但是,如果您安装AWS CLI,这是一个非常简单的任务。您可以在AWS Command Line Interface中检查安装中的安装和配置步骤。
之后,转到命令行:
aws s3 cp --recursive s3://<bucket>/<folder> <local_folder>
这会将所有文件从给定的S3路径复制到给定的本地路径。
如果使用AWS CLI,则可以将exclude
,--include
和--recursive
标志一起使用来完成此操作
aws s3 cp s3://path/to/bucket/ . --recursive --exclude "*" --include "things_you_want"
例如。
--exclude "*" --include "*.txt"
将下载所有扩展名为.txt的文件。更多详细信息-https://docs.aws.amazon.com/cli/latest/reference/s3/
S3服务对同时下载没有有意义的限制(一次可以轻松下载几百次),也没有与此相关的策略设置...但是S3控制台仅允许您一次选择一个文件进行下载。
下载开始后,您可以启动另一个浏览器,只要浏览器允许您同时尝试即可。
我认为这是AWS控制台Web界面的局限性,我自己尝试过(但失败了)。
或者,也许使用第三方的S3浏览器客户端,例如http://s3browser.com/
通过使用aws cli创建shell脚本,我已经完成了(即:example.sh)
#!/bin/bash
aws s3 cp s3://s3-bucket-path/example1.pdf LocalPath/Download/example1.pdf
aws s3 cp s3://s3-bucket-path/example2.pdf LocalPath/Download/example2.pdf
赋予example.sh可执行权限(即sudo chmod 777 example.sh)
然后运行您的shell脚本./example.sh
您也可以--include "filename"
在单个命令中多次使用,每次都在双引号中包含不同的文件名,例如
aws s3 mycommand --include "file1" --include "file2"
这将节省您的时间,而不是重复执行一次一次下载一个文件的命令。
在我的情况下,Aur无法正常工作,如果您正在寻找一种快速解决方案,仅使用浏览器下载文件夹中的所有文件,则可以尝试在开发控制台中输入以下代码段:
(function() {
const rows = Array.from(document.querySelectorAll('.fix-width-table tbody tr'));
const downloadButton = document.querySelector('[data-e2e-id="button-download"]');
const timeBetweenClicks = 500;
function downloadFiles(remaining) {
if (!remaining.length) {
return
}
const row = remaining[0];
row.click();
downloadButton.click();
setTimeout(() => {
downloadFiles(remaining.slice(1));
}, timeBetweenClicks)
}
downloadFiles(rows)
}())
我编写了一个简单的shell脚本,以从AWS s3存储桶下的特定文件夹下载“不仅仅是”所有文件,还下载了每个文件的所有版本。在这里,您可能会发现它很有用
# Script generates the version info file for all the
# content under a particular bucket and then parses
# the file to grab the versionId for each of the versions
# and finally generates a fully qualified http url for
# the different versioned files and use that to download
# the content.
s3region="s3.ap-south-1.amazonaws.com"
bucket="your_bucket_name"
# note the location has no forward slash at beginning or at end
location="data/that/you/want/to/download"
# file names were like ABB-quarterly-results.csv, AVANTIFEED--quarterly-results.csv
fileNamePattern="-quarterly-results.csv"
# AWS CLI command to get version info
content="$(aws s3api list-object-versions --bucket $bucket --prefix "$location/")"
#save the file locally, if you want
echo "$content" >> version-info.json
versions=$(echo "$content" | grep -ir VersionId | awk -F ":" '{gsub(/"/, "", $3);gsub(/,/, "", $3);gsub(/ /, "", $3);print $3 }')
for version in $versions
do
echo ############### $fileId ###################
#echo $version
url="https://$s3region/$bucket/$location/$fileId$fileNamePattern?versionId=$version"
echo $url
content="$(curl -s "$url")"
echo "$content" >> $fileId$fileNamePattern-$version.csv
echo ############### $i ###################
done
我通常要做的是将s3存储桶(与s3fs一起)安装在linux机器上,并将需要的文件压缩为一个文件,然后从任何PC /浏览器中下载该文件。
# mount bucket in file system
/usr/bin/s3fs s3-bucket -o use_cache=/tmp -o allow_other -o uid=1000 -o mp_umask=002 -o multireq_max=5 /mnt/local-s3-bucket-mount
# zip files into one
cd /mnt/local-s3-bucket-mount
zip all-processed-files.zip *.jpg
导入os导入boto3导入json
s3 = boto3.resource('s3',aws_access_key_id =“ AKIAxxxxxxxxxxxxJWB”,aws_secret_access_key =“ LV0 + vsaxxxxxxxxxxxxxxxxxxryry0 / LjxZkN”)my_bucket = s3.Bucket('s3testing')
对于my_bucket.objects.all()中的s3_object:#需要将s3_object.key拆分为路径和文件名,否则将提供未找到的错误文件。路径,文件名= os.path.split(s3_object.key)my_bucket.download_file(s3_object.key,文件名)