python - B33 का उपयोग करके किसी S3 ऑब्जेक्ट में फ़ाइल या डेटा कैसे लिखें




amazon-web-services amazon-s3 (4)

बोटो 2 में, आप इन विधियों का उपयोग करके S3 ऑब्जेक्ट को लिख सकते हैं:

वहाँ एक बोटो 3 बराबर है? S3 पर संग्रहीत किसी वस्तु को डेटा बचाने के लिए boto3 विधि क्या है?



आपको अब S3 में फ़ाइल में लिखने से पहले सामग्री को बाइनरी में बदलना नहीं है। निम्नलिखित उदाहरण स्ट्रिंग सामग्री के साथ S3 बाल्टी में एक नई टेक्स्ट फ़ाइल (जिसे newfile.txt कहा जाता है) बनाता है:

import boto3

s3 = boto3.resource(
    's3',
    region_name='us-east-1',
    aws_access_key_id=KEY_ID,
    aws_secret_access_key=ACCESS_KEY
)
content="String content to write to a new S3 file"
s3.Object('my-bucket-name', 'newfile.txt').put(Body=content)

बोटो 3 में, 'Key.set_contents_from_' विधियों को बदल दिया गया था

उदाहरण के लिए:

import boto3

some_binary_data = b'Here we have some data'
more_binary_data = b'Here we have some more data'

# Method 1: Object.put()
s3 = boto3.resource('s3')
object = s3.Object('my_bucket_name', 'my/key/including/filename.txt')
object.put(Body=some_binary_data)

# Method 2: Client.put_object()
client = boto3.client('s3')
client.put_object(Body=more_binary_data, Bucket='my_bucket_name', Key='my/key/including/anotherfilename.txt')

वैकल्पिक रूप से, द्विआधारी डेटा एक फ़ाइल को पढ़ने से आ सकता है, जैसा कि आधिकारिक डॉक्स में बोटो 2 और बोटो 3 की तुलना में वर्णित है:

आकड़ो का भंडारण किया जा रहा हैं

फ़ाइल, स्ट्रीम, या स्ट्रिंग से डेटा संग्रहीत करना आसान है:

# Boto 2.x
from boto.s3.key import Key
key = Key('hello.txt')
key.set_contents_from_file('/tmp/hello.txt')

# Boto 3
s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))

यहाँ s3 से JSON पढ़ने के लिए एक अच्छी चाल है:

import json, boto3
s3 = boto3.resource("s3").Bucket("bucket")
json.load_s3 = lambda f: json.load(s3.Object(key=f).get()["Body"])
json.dump_s3 = lambda obj, f: s3.Object(key=f).put(Body=json.dumps(obj))

अब आप json.load_s3 और json.dump_s3 को load और dump के समान API के साथ उपयोग कर सकते हैं

data = {"test":0}
json.dump_s3(data, "key") # saves json to s3://bucket/key
data = json.load_s3("key") # read json from s3://bucket/key




boto3