Amazon s3 列出AmazonS3存储桶中所有文件的快速方法?

Amazon s3 列出AmazonS3存储桶中所有文件的快速方法?,amazon-s3,Amazon S3,我有一个AmazonS3存储桶,里面有成千上万个文件名。获取列出bucket中所有文件名的文本文件的最简单方法是什么?我建议使用。然后是一个快速: 从boto.s3.connection导入S3Connection conn=S3Connection('access-key','secret-access-key')) bucket=conn.get\u bucket(‘bucket’) 对于bucket.list()中的键: 打印键.名称.编码('utf-8') 将其另存为list.py,打

我有一个AmazonS3存储桶,里面有成千上万个文件名。获取列出bucket中所有文件名的文本文件的最简单方法是什么?

我建议使用。然后是一个快速:

从boto.s3.connection导入S3Connection
conn=S3Connection('access-key','secret-access-key'))
bucket=conn.get\u bucket(‘bucket’)
对于bucket.list()中的键:
打印键.名称.编码('utf-8')
将其另存为list.py,打开终端,然后运行:

$ python list.py > results.txt

在zach之后,我也会推荐,但我需要对他的代码稍加修改:

conn = boto.connect_s3('access-key', 'secret'key')
bucket = conn.lookup('bucket-name')
for key in bucket:
    print key.name
publicstaticdictionary列表bucketsbycreationdate(stringaccesskey,stringsecretkey)
{  
返回AWSClientFactory.CreateAmazonS3Client(AccessKey,
SecretKey).ListBucket().Bucket.ToDictionary(s3Bucket=>s3Bucket.BucketName,
s3Bucket=>DateTime.Parse(s3Bucket.CreationDate));
}
对于这种事情来说是无价的


$s3cmd ls-r s3://yourbucket/|awk'{print$4}'>bucket中的对象

请小心,amazon列表只返回1000个文件。如果要迭代所有文件,必须使用标记对结果进行分页:

在ruby中使用

bucket\u name='yourBucket'
marker=“”
AWS::S3::Base.build\u连接!(
:access\u key\u id=>your\u access\u key\u id',
:secret\u access\u key=>“您的\u secret\u access\u key”
)
环道
objects=Bucket.objects(Bucket\u name,:marker=>marker,:max\u keys=>1000)
如果objects.size==0,则中断
marker=objects.last.key
对象。每个do | obj|
放置“#{obj.key}”
结束
结束
结束

希望这有帮助,vincent

函数showUploads(){
如果(!class_存在('S3'))需要_一次'S3.php';
//AWS访问信息
如果(!defined('awsAccessKey'))定义('awsAccessKey','234567665464tg');
如果(!defined('awsSecretKey'))定义('awsSecretKey','dfshgffghdgfhrt463457');
$bucketName='my_bucket1234';
$s3=新的s3(awsAccessKey、awsSecretKey);
$contents=$s3->getBucket($bucketName);
echo“
存储桶中的文件列表:{$bucketName}
”; $n=1; foreach($p=>v的内容): echo$p.“
”; $n++; endforeach; }
AWS CLI 文件

AWS最近发布了他们的命令行工具。这与boto非常相似,可以使用
sudo easy\u install awscli
sudo pip install awscli

一旦安装完毕,就可以简单地运行

aws s3 ls
这将显示所有可用的桶

CreationTime Bucket
       ------------ ------
2013-07-11 17:08:50 mybucket
2013-07-24 14:55:44 mybucket2
然后,您可以查询文件的特定存储桶

命令

aws s3 ls s3://mybucket
Bucket: mybucket
Prefix:

      LastWriteTime     Length Name
      -------------     ------ ----
                           PRE somePrefix/
2013-07-25 17:06:27         88 test.txt
输出

aws s3 ls s3://mybucket
Bucket: mybucket
Prefix:

      LastWriteTime     Length Name
      -------------     ------ ----
                           PRE somePrefix/
2013-07-25 17:06:27         88 test.txt

这将显示您的所有文件

对于Scala开发人员,这里是一个递归函数,用于执行完全扫描,并使用官方

import com.amazonaws.services.s3.AmazonS3Client
导入com.amazonaws.services.s3.model.{S3ObjectSummary,ObjectListing,GetObjectRequest}
导入scala.collection.JavaConversions.{collectionAsScalaIterable=>asScala}
defmap[T](s3:AmazonS3Client,bucket:String,prefix:String)(f:(S3ObjectSummary)=>T){
def扫描(acc:List[T],listing:ObjectListing):List[T]={
val summaries=asScala[S3ObjectSummary](listing.getObjectSummaries())
val mapped=(对于(摘要(s.getKey,s.getOwner))
将返回该bucket/前缀中的
(key,owner)
元组的完整列表

map(s3,“bucket”,“prefix”)(s=>println(s))

正如您通常通过使用awesome在python中编写代码来实现的那样。 该代码返回bucket中的文件列表,并处理缺少bucket的异常

导入boto
连接=双向连接
尝试:
bucket=conn.get\u bucket(,validate=True)
除boto.exception.s3响应错误外,e:
do_something()#存储桶不存在,请选择如何处理它或引发异常
为bucket.list()中的键返回[key.name.encode(“utf-8”)]

不要忘记用您的值替换

在PHP中,您可以使用以下调用获得特定bucket中AWS-S3对象的完整列表

$S3=\Aws\S3\S3Client::factory(数组('region'=>$region,);
$iterator=$S3->getIterator('ListObjects',array('Bucket'=>$Bucket));
foreach($iterator作为$obj){
echo$obj['Key'];
}

您可以将上述代码的输出重定向到一个文件中,以获取密钥列表。

在Java中,您可以使用ListObjects获取密钥(请参阅)

FileWriter文件编写器;
缓冲写入程序缓冲写入程序;
// [...]
AmazonS3 s3client=新的AmazonS3客户端(新的ProfileCredentialsProvider());
ListObjectsRequest ListObjectsRequest=新建ListObjectsRequest()
.带bucketName(bucketName)
.带前缀(“myprefix”);
对象列表对象列表;
做{
objectListing=s3client.listObjects(listObjectsRequest);
对于(S3ObjectSummary对象摘要:
objectListing.getObjectSummaries()){
//使用缓冲写入器等写入文件
write(objectSummary.getKey());
}
listObjectsRequest.setMarker(objectListing.getNextMarker());
}while(objectListing.isTruncated());

有关更多详细信息,请参见此处-

或者,您可以使用Minio客户端aka mc。它是开源的,与AWS S3兼容。它可用于

您所要做的就是运行mcls命令来列出内容

$ mc ls s3/kline/ [2016-04-30 13:20:47 IST] 1.1MiB 1.jpg [2016-04-30 16:03:55 IST] 7.5KiB docker.png [2016-04-30 15:16:17 IST] 50KiB pi.png [2016-05-10 14:34:39 IST] 365KiB upton.pdf $mc ls s3/克/ [2016-04-30 13:20:47 IST]1.1MiB 1.jpg [2016-04-30 16:03:55 IST]7.5KB docker.png [2016-04-30 15:16:17 IST]50KiB pi.png [2016-05-1014:34:39 IST]365KB upton.pdf 注:

  • s3:AmazonS3的别名
  • kline:AWS S3存储桶名称
安装Minio客户端Linux 下载mc以获取:

  • 来自的64位英特尔
  • 32位英特尔
  • 32位ARM从
$chmod 755 mc $./mc--帮助 建立AWS cre $ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
aws s3 ls s3://root/folder1/folder2/
aws s3 ls path/to/file
aws s3 ls path/to/file >> save_result.txt
aws s3 ls path/to/file > save_result.txt
# find like file listing for s3 files
aws s3api --profile <<profile-name>> \
--endpoint-url=<<end-point-url>> list-objects \
--bucket <<bucket-name>> --query 'Contents[].{Key: Key}'
-Browse to Folder
-Select All
-Generate Urls
aws s3 ls s3://{bucketname}
example : aws s3 ls s3://testbucket133
aws s3 ls s3://Bucketdirectory/Subdirectory/ | cat >> FileNames.txt
import boto3
s3 = boto3.resource('s3')

bucket = s3.Bucket('name')
for obj in bucket.objects.all():
    print(obj.key)
import plumbum as pb
folders = pb.local['aws']('s3', 'ls')
bucket=<bucket_name>
region=<region_name>
awsAccess=<access_key>
awsSecret=<secret_key>
awsRegion="${region}"
baseUrl="s3.${awsRegion}.amazonaws.com"

m_sed() {
  if which gsed > /dev/null 2>&1; then
    gsed "$@"
  else
    sed "$@"
  fi
}

awsStringSign4() {
  kSecret="AWS4$1"
  kDate=$(printf         '%s' "$2" | openssl dgst -sha256 -hex -mac HMAC -macopt "key:${kSecret}"     2>/dev/null | m_sed 's/^.* //')
  kRegion=$(printf       '%s' "$3" | openssl dgst -sha256 -hex -mac HMAC -macopt "hexkey:${kDate}"    2>/dev/null | m_sed 's/^.* //')
  kService=$(printf      '%s' "$4" | openssl dgst -sha256 -hex -mac HMAC -macopt "hexkey:${kRegion}"  2>/dev/null | m_sed 's/^.* //')
  kSigning=$(printf 'aws4_request' | openssl dgst -sha256 -hex -mac HMAC -macopt "hexkey:${kService}" 2>/dev/null | m_sed 's/^.* //')
  signedString=$(printf  '%s' "$5" | openssl dgst -sha256 -hex -mac HMAC -macopt "hexkey:${kSigning}" 2>/dev/null | m_sed 's/^.* //')
  printf '%s' "${signedString}"
}

if [ -z "${region}" ]; then
  region="${awsRegion}"
fi


# Initialize helper variables

authType='AWS4-HMAC-SHA256'
service="s3"
dateValueS=$(date -u +'%Y%m%d')
dateValueL=$(date -u +'%Y%m%dT%H%M%SZ')

# 0. Hash the file to be uploaded

# 1. Create canonical request

# NOTE: order significant in ${signedHeaders} and ${canonicalRequest}

signedHeaders='host;x-amz-content-sha256;x-amz-date'

canonicalRequest="\
GET
/

host:${bucket}.s3.amazonaws.com
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
x-amz-date:${dateValueL}

${signedHeaders}
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

# Hash it

canonicalRequestHash=$(printf '%s' "${canonicalRequest}" | openssl dgst -sha256 -hex 2>/dev/null | m_sed 's/^.* //')

# 2. Create string to sign

stringToSign="\
${authType}
${dateValueL}
${dateValueS}/${region}/${service}/aws4_request
${canonicalRequestHash}"

# 3. Sign the string

signature=$(awsStringSign4 "${awsSecret}" "${dateValueS}" "${region}" "${service}" "${stringToSign}")

# Upload

curl -g -k "https://${baseUrl}/${bucket}" \
  -H "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" \
  -H "x-amz-Date: ${dateValueL}" \
  -H "Authorization: ${authType} Credential=${awsAccess}/${dateValueS}/${region}/${service}/aws4_request,SignedHeaders=${signedHeaders},Signature=${signature}"
pip3 install awscli
aws configure
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json (or just press enter)
aws s3 ls
aws s3 ls > output.txt
aws s3 ls bucket-name --recursive
aws s3 ls bucket-name --recursive > file_Structure.txt
import os
import boto3
from botocore.exceptions import ClientError    

client = boto3.client('s3')

bucket = client.list_objects(Bucket=BUCKET_NAME)
for content in bucket["Contents"]:
    key = content["Key"]