আমি এডাব্লুএসের জন্য নতুন বোটো 3 ক্লায়েন্টের সাথে একটি "হ্যালো ওয়ার্ল্ড" করার চেষ্টা করছি ।
আমার কাছে থাকা ইউস-কেসটি মোটামুটি সহজ: এস 3 থেকে অবজেক্ট পান এবং এটি ফাইলটিতে সংরক্ষণ করুন।
বোটো 2.XI এ এটি করবে:
import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')
বোটো 3 এ। আমি একই জিনিসটি করার কোনও পরিষ্কার উপায় খুঁজে পাচ্ছি না, তাই আমি নিজে "স্ট্রিমিং" অবজেক্টটি নিয়ে পুনরুক্তি করছি:
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
chunk = key['Body'].read(1024*8)
while chunk:
f.write(chunk)
chunk = key['Body'].read(1024*8)
অথবা
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
for chunk in iter(lambda: key['Body'].read(4096), b''):
f.write(chunk)
এবং এটি সূক্ষ্ম কাজ করে। আমি ভাবছিলাম যে কোনও "নেটিভ" বোটো 3 ফাংশন আছে যা একই কাজটি করবে?