অ্যামাজন এস 3 বালতিতে সমস্ত ফাইল তালিকাভুক্ত করার দ্রুত উপায়?


151

আমার কাছে একটি অ্যামাজন এস 3 বালতি রয়েছে যার এতে কয়েক হাজার ফাইল নাম রয়েছে। একটি টেক্সট ফাইল পাওয়ার সবচেয়ে সহজ উপায় কীটি বালতিতে সমস্ত ফাইলের নাম তালিকাভুক্ত করে?


Vdaubry দ্বারা প্রদত্ত উত্তর সম্পর্কে jldupont এর মন্তব্য দ্বারা ইঙ্গিত হিসাবে boto.s3.bucketlistresultset.BucketListResultSet, প্রশ্নের মধ্যে উল্লিখিত "দশ হাজার ফাইলের নাম" শর্ত সম্বোধন করে।
সিবিবি

1
সচেতন থাকুন যে খুব বড় সংখ্যক অবজেক্টের বালতিগুলির জন্য, কয়েক মিলিয়ন বা বিলিয়ন বলুন, নীচে কোডিং / স্ক্রিপ্টিং পদ্ধতিগুলি ভাল কাজ করবে না। পরিবর্তে আপনার এস 3 ইনভেন্টরি সক্ষম করতে হবে এবং একটি প্রতিবেদন প্রতিবেদনটি পুনরুদ্ধার করা উচিত।
জারমড

উত্তর:


120

আমি বোটো ব্যবহারের পরামর্শ দিই । তারপরে এটি অজগরের এক দ্রুত দু'লাইন :

from boto.s3.connection import S3Connection

conn = S3Connection('access-key','secret-access-key')
bucket = conn.get_bucket('bucket')
for key in bucket.list():
    print key.name.encode('utf-8')

এটিকে list.py হিসাবে সংরক্ষণ করুন, একটি টার্মিনাল খুলুন এবং তারপরে চালান:

$ python list.py > results.txt

3
যদি আপনি পান: boto.exception.S3ResponseError: S3ResponseError: 403 নিষিদ্ধ অ্যাক্সেস / সিক্রেট কীটির ব্যবহারকারীর নীতিটি S3- এ অ্যাক্সেস পেয়েছে তা নিশ্চিত করুন।
topherjaynes

1
আমি 403 ত্রুটিটি পেয়েছিলেন, এবং আমি ঠিকঠাক কাজ করার জন্য এটি করা করার জন্য এই নির্দেশাবলী অনুসরণ করুন ছিল: stackoverflow.com/a/22462419/1143558
Ljubisa Livac

আপনি কিভাবে এটি লুপ করবেন?
সুপারউবারডুপার

4
নতুন বোটো 3 প্যাকেজটি ব্যবহার করে আপনি কি এতে কোনও বৈকল্পিক যুক্ত করতে পারেন?
yeliabsalohcin

@ ইলিয়াবসালোহসিন আমার উত্তর দেখুন
কেসি

62

এডাব্লুএস সি এল আই

Aws s3 ls এর জন্য ডকুমেন্টেশন

এডাব্লুএস সম্প্রতি তাদের কমান্ড লাইন সরঞ্জাম প্রকাশ করেছে। এটি অনেকটা বোটোর মতো কাজ করে এবং sudo easy_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

এটি আপনাকে আপনার সমস্ত ফাইল প্রদর্শন করবে।


14
--recursiveনির্দিষ্ট ডিরেক্টরিতে সমস্ত অবজেক্ট দেখতে পতাকা যুক্ত করুন
ক্রিস ব্লুম

2
নামগুলি পার্স করার কোনও উপায় আছে কি? আমি গণনার জন্য একটি এস 3 বালতিতে ফাইলগুলির একটি তালিকা তৈরি করতে চাইছি।
কেসি

এছাড়াও, এস 3 ইউআরএল হিসাবে ব্যবহৃত ফাইলের নামগুলি এনকোড করে, এগুলি কেবল কাঁচা ফাইলের নাম ..
কেসির

42

এই ধরণের জিনিসটির জন্য s3cmd অমূল্য

$ s3cmd ls -r s3://yourbucket/ | awk '{print $4}' > objects_in_bucket


1
s3cmdতারিখ অনুসারে বাছাই করা ফাইলের নামগুলি প্রদান করে। এরপরে যুক্ত হওয়া কেবলমাত্র সেই ফাইলগুলিই কি আমি এটি ফিরিয়ে বলতে পারি 2015-10-23 20:46?
সেক্সিবিস্ট

দ্রষ্টব্য যে যদি ফাইলনামগুলির স্পেস থাকে তবে এটিতে একটি ছোট ত্রুটি রয়েছে তবে এটি ঠিক করার মতো আমার কাছে অ্যাড-ফু নেই
কলিন ডি

36

যত্নবান হন, অ্যামাজন তালিকায় কেবল 1000 টি ফাইল আসে। আপনি যদি সমস্ত ফাইলগুলিতে পুনরাবৃত্তি করতে চান তবে আপনাকে চিহ্নিতকারীগুলি ব্যবহার করে ফলাফলগুলি প্যাগিনেট করতে হবে:

রুবিতে আউস-এস 3 ব্যবহার করে

bucket_name = 'yourBucket'
marker = ""

AWS::S3::Base.establish_connection!(
  :access_key_id => 'your_access_key_id',
  :secret_access_key => 'your_secret_access_key'
)

loop do
  objects = Bucket.objects(bucket_name, :marker=>marker, :max_keys=>1000)
  break if objects.size == 0
  marker = objects.last.key

  objects.each do |obj|
      puts "#{obj.key}"
  end
end

শেষ

আশা করি এই সাহায্য করবে, ভিনসেন্ট



এর জন্য ধন্যবাদ, চিহ্নিতকারীটি কীভাবে সেট করবেন তা খুঁজে পেতে আমার বেশ কষ্ট হয়েছিল: 1:
অ্যাড্রিয়ান ম্যাগডাস

20

15-02-2019 আপডেট করুন:

এই কমান্ডটি আপনাকে এডাব্লুএস এস 3 এর সমস্ত বালতির একটি তালিকা দেবে:

aws s3 ls

এই কমান্ডটি আপনাকে এডাব্লুএস এস 3 বাল্টির অভ্যন্তরে সমস্ত শীর্ষ-স্তরের অবজেক্টের একটি তালিকা দেবে:

aws s3 ls bucket-name

এই কমান্ডটি আপনাকে AWS S3 বালতির ভিতরে সমস্ত বস্তুর একটি তালিকা দেবে:

aws s3 ls bucket-name --recursive

এই কমান্ডটি আপনার বর্তমান ডিরেক্টরিতে একটি টেক্সট ফাইলের ভিতরে একটি ডাব্লুএসএস 3 বালতির ভিতরে সমস্তগুলির একটি তালিকা স্থাপন করবে:

aws s3 ls bucket-name --recursive | cat >> file-name.txt


এটি কাজ করে তবে আমার যা প্রয়োজন তা সত্য নয়। এটি কেবলমাত্র "শীর্ষ-স্তরের" সমস্ত উপসর্গের তালিকাবদ্ধ করে। বালতি, উপসর্গ এবং সবগুলিতে সমস্ত বস্তু পাওয়ার কোনও উপায় আছে কি?
রিনোগো

আপডেট: @ সিসুজারের উত্তরটি আমার প্রয়োজন।
রিনোগো

@ রিনোগো এটি আপনার প্রয়োজনগুলির সাথে খাপ খায় না ... তবে এটি কাজ করে এবং এখানে এটি গণনা করা হয়। এটি সঠিক উত্তর হিসাবে অন্যান্য পিপিএল এর প্রয়োজনীয়তার সাথে খাপ খায়।
খলিল ঘরবাউই

আমি যেমন বলেছি, এটি কাজ করে - আপনাকে ধন্যবাদ! তবে এটি ওপির প্রশ্নের উত্তর দেয় না। ওকে বালতিতে থাকা সমস্ত ফাইলের নাম "[তালিকা]" দেওয়ার জন্য জিজ্ঞাসা করলেন। এটি কেবলমাত্র সমস্ত স্তরের নয়, শীর্ষ-স্তরের অবজেক্টগুলি তালিকাভুক্ত করে।
রিনোগো

2
আহা তবে তা করা শক্ত নয়। কমান্ডটিতে কেবল '--recursive' যুক্ত করুন। আমি আমার উত্তরে এটি যুক্ত করে ধন্যবাদ জানিয়েছি
খলিল ঘারবাউই

12

স্কালার বিকাশকারীদের জন্য, এখানে জাভাটির জন্য অফিসিয়াল এডাব্লুএস এসডিকে ব্যবহার করে একটি সম্পূর্ণ স্ক্যান কার্যকর করতে এবং একটি অ্যামাজনএস 3 বালতির সামগ্রীগুলি ম্যাপ করা পুনরাবৃত্ত ফাংশন is

import com.amazonaws.services.s3.AmazonS3Client
import com.amazonaws.services.s3.model.{S3ObjectSummary, ObjectListing, GetObjectRequest}
import scala.collection.JavaConversions.{collectionAsScalaIterable => asScala}

def map[T](s3: AmazonS3Client, bucket: String, prefix: String)(f: (S3ObjectSummary) => T) = {

  def scan(acc:List[T], listing:ObjectListing): List[T] = {
    val summaries = asScala[S3ObjectSummary](listing.getObjectSummaries())
    val mapped = (for (summary <- summaries) yield f(summary)).toList

    if (!listing.isTruncated) mapped.toList
    else scan(acc ::: mapped, s3.listNextBatchOfObjects(listing))
  }

  scan(List(), s3.listObjects(bucket, prefix))
}

উপরের কারিড map()ফাংশনটি শুরু করার জন্য , প্রথম প্যারামিটার তালিকায় বাল্টের নাম এবং উপসর্গের নামটি ইতিমধ্যে নির্মিত (এবং সঠিকভাবে শুরু করা) অ্যামাজনএস 3 ক্লায়েন্ট অবজেক্ট ( জাভা এপিআই রেফারেন্সের জন্য অফিসিয়াল এডাব্লুএস এসডিকে দেখুন), পাসওয়ার্ড করুন । f()দ্বিতীয় প্যারামিটার তালিকার প্রতিটি বস্তুর সারাংশ ম্যাপ করতে আপনি যে ফাংশনটি প্রয়োগ করতে চান তাও পাশ করুন ।

উদাহরণ স্বরূপ

val keyOwnerTuples = map(s3, bucket, prefix)(s => (s.getKey, s.getOwner))

(key, owner)সেই বালতি / উপসর্গের টিপলগুলির সম্পূর্ণ তালিকা প্রদান করবে

অথবা

map(s3, "bucket", "prefix")(s => println(s))

যেহেতু আপনি সাধারণত ফাংশনাল প্রোগ্রামিংয়ে মনাদদের কাছে যান


এই কোড সহ একটি বাগ আছে। প্রাথমিক স্ক্যানটি যদি কেটে ফেলা হয় তবে চূড়ান্ত রিটার্ন কেবল mapped.toListপূর্বের কোনও ছাড়াই ফিরে আসবেacc
মার্ক ওয়াং

ধন্যবাদ - দ্রষ্টব্য যে AmazonS3Client এখন কেবল AmazonS3 হওয়া উচিত।
অ্যান্টনি হল্যান্ড

11

এটি সম্পর্কে কয়েকটি উপায় যেতে পারেন ways পাইথন ব্যবহার করা

import boto3

sesssion = boto3.Session(aws_access_key_id, aws_secret_access_key)

s3 = sesssion.resource('s3')

bucketName = 'testbucket133'
bucket = s3.Bucket(bucketName)

for obj in bucket.objects.all():
    print(obj.key)

আর একটি উপায় এর জন্য এডাব্লুএস ক্লায়েন্ট ব্যবহার করা হচ্ছে

aws s3 ls s3://{bucketname}
example : aws s3 ls s3://testbucket133

যদি আউস ইতিমধ্যে কনফিগার করা থাকে তবে কেউ 2 এবং 3 লাইনগুলি 16: s3 = boto3.resource('s3')
59

আপনার যদি পরিবেশের ভেরিয়েবলগুলি রাখা থাকে তবে আপনাকে sessionপদ্ধতিতে ভেরিয়েবলগুলি ব্যবহার করার দরকার নেই । AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID'] AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
ফ্লাভিও

7

জ্যাচের পরে আমি বটোও সুপারিশ করব , তবে তার কোডে আমার কিছুটা পার্থক্য করা দরকার:

conn = boto.connect_s3('access-key', 'secret'key')
bucket = conn.lookup('bucket-name')
for key in bucket:
    print key.name

3
পরিবর্তনটি প্রয়োজনীয় ছিল কারণ মূল কোডটি একবারে কাজ করে না।
ডেটাজেক

1
conn.lookupত্রুটি Noneছুঁড়ে ফেলার পরিবর্তে ফিরে আসেS3ResponseError(NoSuchBucket)
এহতেশ চৌধুরী


5

পাইথনের বোটো 3 ব্যবহারের পরে aws configure:

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

bucket = s3.Bucket('name')
for obj in bucket.objects.all():
    print(obj.key)

5

প্রথম নিশ্চিত করুন যে আপনি একটি অন হয় instance terminalএবং আপনি all accessএর S3মধ্যে IAMআপনি ব্যবহার করছেন। উদাহরণস্বরূপ আমি একটি ইসি 2 উদাহরণ ব্যবহার করেছি।

pip3 install awscli

তারপরে aws কনফিগার করুন

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

আশাকরি এটা সাহায্য করবে.


কাজ করে ... তবে পুরো বালতিটি পেতে-ই-ভের লাগে
gvsquez

4

এডাব্লুএস সিএলআই আপনাকে একটি এস 3 বালতির সমস্ত ফাইল দ্রুত দেখতে এবং অন্যান্য ক্রিয়াকলাপ সম্পাদনে সহায়তা করতে পারে।

AWS CLI ব্যবহার করতে নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. AWS CLI ইনস্টল করুন
  2. সজ্জিত করাডিফল্ট সুরক্ষা শংসাপত্র এবং ডিফল্ট AWS অঞ্চল ব্যবহার করার জন্য AWS CLI C
  3. এস 3 বালতি ব্যবহারের কমান্ডের সমস্ত ফাইল দেখতে

    এইউএস এস 3 এলএস এস 3: // আপনার_বকেট_নাম - রেকর্ডিভ

বিভিন্ন এডাব্লুএস পরিষেবাগুলির জন্য এডাব্লুএস ক্লায়েন্ট ব্যবহারের রেফারেন্স: https://docs.aws.amazon.com/cli/latest/references/


3

জাভাতে আপনি তালিকার তালিকা ব্যবহার করে কীগুলি পেতে পারেন (এডাব্লুএস ডকুমেন্টেশন দেখুন )

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());

আরও একটি সহজ এপিআই পাওয়া যায় যা বালতির নাম নেয় এবং এতে উপস্থিত বস্তুগুলির তালিকা করে lists অবজেক্টলিস্টিং অবজেক্টস = s3client.listObjects (bucketName) জাভাদোক লিঙ্কটি নীচে দেওয়া হয়েছে, ডকস.আও.এস.জাজন
রাজেশ

2

অজস্র "বোটো" লাইব ব্যবহার করে পাইথনের কোড । কোডটি বালতিতে ফাইলগুলির একটি তালিকা দেয় এবং অনুপস্থিত বালতিগুলির ব্যতিক্রমগুলিও পরিচালনা করে।

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() ]

আপনার মানগুলির সাথে <PLACE_HOLDERS> প্রতিস্থাপন করতে ভুলবেন না।


2

নীচের কমান্ডটি আপনার AWS S3 বালতি থেকে সমস্ত ফাইলের নাম পাবে এবং আপনার বর্তমান ডিরেক্টরিতে টেক্সট ফাইলে লিখবে:

aws s3 ls s3://Bucketdirectory/Subdirectory/ | cat >> FileNames.txt

1

বিকল্পভাবে আপনি মিনিও ক্লায়েন্ট ওরফে এমসি ব্যবহার করতে পারেন। এটির ওপেন সোর্স এবং এডাব্লুএস এস 3 এর সাথে সামঞ্জস্যপূর্ণ। এটি লিনাক্স, উইন্ডোজ, ম্যাক, ফ্রিবিএসডি-র জন্য উপলব্ধ

আপনার যা করতে হবে তা হল বিষয়বস্তু তালিকাভুক্ত করার জন্য এমসি এলএস কমান্ড চালানো ।

c এমসি এলএস এস 3 / কেলাইন /
[2016-04-30 13:20:47 IST] 1.1MiB 1.jpg
[2016-04-30 16:03:55 IST] 7.5KiB ডকার.png
[2016-04-30 15:16:17 IST] 50KiB pi.png
[2016-05-10 14:34:39 IST] 365KiB upton.pdf

বিঃদ্রঃ:

  • এস 3: অ্যামাজন এস 3-এর উপাধি
  • kline: AWS S3 বালতির নাম uc

মিনিও ক্লায়েন্ট লিনাক্স এমসি ইনস্টল করার জন্য এমসি ডাউনলোড করুন:

$ chmod 755 এমসি
$ ./mc - সাহায্য

মিনিও ক্লায়েন্টের সাথে AWS শংসাপত্রগুলি সেট আপ করা হচ্ছে

c এমসি কনফিগার হোস্ট যুক্ত mys3 https://s3.amazonaws.com বিকেআইকেজেএএ 5 বিএমইউ 2 আরএইচবি 6 ভি 1 ফ 1 সিডিউকিউএকিউ 80ueIJEjc5gVQUSSx5ohQ9GSrr12

দ্রষ্টব্য: দয়া করে এই অ্যাকাউন্টের জন্য আপনার পছন্দসই উপন্যাসের সাথে মাই 3 যুক্ত করুন এবং, বিকেআইকেজেএএ 5 বিএমএমইউ 2 আরএইচবি 6 আইবিবি, ভি 7 এফ 1 সিভিকিউএকএকউ 80ইআইজিইজসি 5 জিভিকিউএসএক্স 5 এ কিউ 9 জিএসআর 12 আপনার এডাব্লু এসিসেস-কে এবং সিক্রেট-কে

আশা করি এটা সাহায্য করবে.

দাবি অস্বীকার : আমি মিনির পক্ষে কাজ করি


আইএএম গোপন কীটি কোথাও ভাগ করে নেবেন দয়া করে।
অ্যালেক্সি ওয়াজনভ

1

আপনি স্ট্যান্ডার্ড এস 3 এপিআই ব্যবহার করতে পারেন -

aws s3 ls s3://root/folder1/folder2/

1

কমান্ডটি ব্যবহার করে আউস এস 3 বালতিতে আপনি সমস্ত ফাইল তালিকাভুক্ত করতে পারেন

aws s3 ls path/to/file

এবং এটি একটি ফাইলে সংরক্ষণ করতে, ব্যবহার করুন

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

যদি আপনি অন্যথায় কোনও ফাইলে আপনার ফলাফল যুক্ত করতে চান:

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

আপনি যদি পূর্বে লিখিত ছিল তা পরিষ্কার করতে চান।

এটি উইন্ডোজ এবং লিনাক্স উভয় ক্ষেত্রেই কাজ করবে।


1

জাভাস্ক্রিপ্ট আপনি ব্যবহার করতে পারেন

s3.listObjects (প্যারামস, ফাংশন (ত্রুটি, ফলাফল) {});

বালতির ভিতরে সমস্ত বস্তু পেতে। আপনাকে বালির নামটি পেরামের ভিতরে দিতে হবে (বালতি: নাম)


1
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
আপনি কোন এস 3 ক্লাস ব্যবহার করছেন? কোথায় আমি এটা পেতে পারেন?
iDev247

0
# 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}'

3
এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত, তাত্ক্ষণিক সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান তা দেখিয়ে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে এবং ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
টবি স্পিড 15

0

পাওলো দ্বারা স্কালা উত্তরের সরলীকৃত এবং আপডেট সংস্করণ:

import scala.collection.JavaConversions.{collectionAsScalaIterable => asScala}
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.model.{ListObjectsRequest, ObjectListing, S3ObjectSummary}

def buildListing(s3: AmazonS3, request: ListObjectsRequest): List[S3ObjectSummary] = {
  def buildList(listIn: List[S3ObjectSummary], bucketList:ObjectListing): List[S3ObjectSummary] = {
    val latestList: List[S3ObjectSummary] = bucketList.getObjectSummaries.toList

    if (!bucketList.isTruncated) listIn ::: latestList
    else buildList(listIn ::: latestList, s3.listNextBatchOfObjects(bucketList))
  }

  buildList(List(), s3.listObjects(request))
}

জেনেরিকগুলি ছড়িয়ে দেওয়া এবং এসডিকে বিল্ডারদের দ্বারা উত্পাদিত লিস্টোবজেক্টআরকোয়েস্ট ব্যবহার করা।


0
public static Dictionary<string, DateTime> ListBucketsByCreationDate(string AccessKey, string SecretKey)  
{  

    return AWSClientFactory.CreateAmazonS3Client(AccessKey,
        SecretKey).ListBuckets().Buckets.ToDictionary(s3Bucket => s3Bucket.BucketName,
        s3Bucket => DateTime.Parse(s3Bucket.CreationDate));

}

2
আমার ধারণা এটি জাভা প্রোটোটাইপ বা অন্য কিছু তবে দয়া করে এটি ব্যাখ্যা করুন।
ডনচো গুনচেভ

0

পিএইচপি-তে আপনি নিম্নলিখিত কলটি ব্যবহার করে নির্দিষ্ট বালতির অভ্যন্তরে AWS-S3 অবজেক্টের সম্পূর্ণ তালিকা পেতে পারেন

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

আপনি কীগুলির তালিকা পেতে উপরের কোডটির আউটপুট একটি ফাইলে পুনর্নির্দেশ করতে পারেন।


0

ক্লাইপটি মোড়ানোর জন্য প্লাম্বাম ব্যবহার করুন এবং আপনার কাছে একটি পরিষ্কার বাক্য গঠন হবে:

import plumbum as pb
folders = pb.local['aws']('s3', 'ls')

0

দয়া করে এই বাশ স্ক্রিপ্ট চেষ্টা করুন। এটি কোনও বাহ্যিক নির্ভরতার প্রয়োজন ছাড়াই কার্ল কমান্ড ব্যবহার করে

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}"

-2

খুব ব্যবহারযোগ্য টেক্সট ফাইল পাওয়ার সবচেয়ে সহজ উপায় হ'ল এস 3 ব্রাউজারটি ডাউনলোড করুন http://s3browser.com/ এবং সম্পূর্ণ লিঙ্ক পাথের একটি তালিকা তৈরি করতে ওয়েব ইউআরএল জেনারেটর ব্যবহার করুন। এটি খুব সহজ এবং প্রায় 3 টি ক্লিক জড়িত।

-Browse to Folder
-Select All
-Generate Urls

আপনি ভাগ্য ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.