मैं AWS के लिए नए boto3 क्लाइंट के साथ "हैलो वर्ल्ड" करने की कोशिश कर रहा हूं ।
मेरे पास उपयोग-मामला काफी सरल है: S3 से ऑब्जेक्ट प्राप्त करें और इसे फ़ाइल में सहेजें।
बोटो में 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)
और यह ठीक काम करता है। मैं सोच रहा था कि कोई "देशी" boto3 फ़ंक्शन है जो समान कार्य करेगा?