Быстрый способ перечислить все файлы в корзине Amazon S3? - PullRequest
125 голосов
/ 26 июля 2010

У меня есть амазонка s3, в которой хранятся десятки тысяч имен файлов. Какой самый простой способ получить текстовый файл, в котором перечислены все имена файлов в корзине?

Ответы [ 25 ]

2 голосов
/ 16 июля 2014

Код на python, используя потрясающую "boto" lib . Код возвращает список файлов в сегменте, а также обрабатывает исключения для отсутствующих сегментов.

import boto

conn = boto.connect_s3( <ACCESS_KEY>, <SECRET_KEY> )
try:
    bucket = conn.get_bucket( <BUCKET_NAME>, validate = True )
except boto.exception.S3ResponseError, e:
    do_something() # The bucket does not exist, choose how to deal with it or raise the exception

return [ key.name.encode( "utf-8" ) for key in bucket.list() ]

Не забудьте заменить вашими значениями.

2 голосов
/ 16 сентября 2018

Для boto3 Python после использования aws configure:

import boto3
s3 = boto3.resource('s3')

bucket = s3.Bucket('name')
for obj in bucket.objects.all():
    print(obj.key)
2 голосов
/ 22 мая 2018

Следующая команда получит все имена файлов из вашей корзины AWS S3 и запишет в текстовый файл в вашем текущем каталоге:

aws s3 ls s3://Bucketdirectory/Subdirectory/ | cat >> FileNames.txt
2 голосов
/ 18 февраля 2016

В Java вы можете получить ключи, используя ListObjects (см. Документация AWS )

FileWriter fileWriter;
BufferedWriter bufferedWriter;
// [...]

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());        

ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucketName)
.withPrefix("myprefix");
ObjectListing objectListing;

do {
    objectListing = s3client.listObjects(listObjectsRequest);
    for (S3ObjectSummary objectSummary : 
        objectListing.getObjectSummaries()) {
        // write to file with e.g. a bufferedWriter
        bufferedWriter.write(objectSummary.getKey());
    }
    listObjectsRequest.setMarker(objectListing.getNextMarker());
} while (objectListing.isTruncated());
1 голос
/ 18 сентября 2017

Вы можете перечислить все файлы в корзине aws s3 с помощью команды

aws s3 ls path/to/file

и чтобы сохранить его в файле, используйте

aws s3 ls path/to/file >> save_result.txt

, если вы хотите добавить свой результат в файл, в противном случае:

aws s3 ls path/to/file > save_result.txt

если вы хотите очистить написанное ранее.

Он будет работать как в Windows, так и в Linux.

1 голос
/ 10 июля 2012
function showUploads(){
    if (!class_exists('S3')) require_once 'S3.php';
    // AWS access info
    if (!defined('awsAccessKey')) define('awsAccessKey', '234567665464tg');
    if (!defined('awsSecretKey')) define('awsSecretKey', 'dfshgfhfghdgfhrt463457');
    $bucketName = 'my_bucket1234';
    $s3 = new S3(awsAccessKey, awsSecretKey);
    $contents = $s3->getBucket($bucketName);
    echo "<hr/>List of Files in bucket : {$bucketName} <hr/>";
    $n = 1;
    foreach ($contents as $p => $v):
        echo $p."<br/>";
        $n++;
    endforeach;
}
1 голос
/ 21 сентября 2016

Вы можете использовать стандартный API S3 -

aws s3 ls s3://root/folder1/folder2/
0 голосов
/ 13 мая 2016

В качестве альтернативы вы можете использовать Minio Client aka mc.Его открытый исходный код и совместим с AWS S3.Он доступен для Linux, Windows, Mac, FreeBSD.

Все, что вам нужно сделать - это запустить команду mc ls для просмотра содержимого.

$ 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

Примечание:

  • s3: псевдоним для Amazon S3
  • kline: имя корзины AWS S3

Установка Minio Client Linux Скачать mc для:

$ chmod 755 mc
$ ./mc --help

Настройка учетных данных AWS с помощью клиента Minio

$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12

Примечание. Пожалуйста, замените mys3 на желаемый псевдонимдля этого аккаунта и BKIKJAA5BMMU2RHO6IBB, V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 с вашим ключом доступа AWS и ключом SECRET-KEY

надеюсь, что это помогает.

10 * * 10 * 10 * 10 * 10 * 10 * 10: 10 * 10 * 10: 1045
0 голосов
/ 02 октября 2018

Используйте plumbum, чтобы обернуть cli, и у вас будет четкий синтаксис:

import plumbum as pb
folders = pb.local['aws']('s3', 'ls')
0 голосов
/ 03 августа 2018

В JavaScript вы можете использовать

s3.listObjects (params, function (err, result) {});

чтобы получить все объекты внутри ведра. Вы должны передать имя корзины внутри параметров (Bucket: name) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...