दिलचस्प पोस्ट
मार्कर इनफ़ोउडो प्रतिनिधि प्रतिनिधि विधि द्वारा वापस देखने के लिए बटन जोड़ें LINQ तरीकों की रन-टाइम जटिलता (बिग-ओ) पर क्या गारंटी है? आभासी असाइनमेंट ऑपरेटर C ++ JavaFx लेबल में बदलते मूल्य प्रदर्शित करना पायथन इंटरैक्टिव सत्र को कैसे सहेजना है? ओएस एक्स 10.11 पर पीडीएफक सर्वर प्लॉट के साथ प्लॉट चिकनी रेखा क्लास फील्ड क्यों नहीं हो सकते? जावास्क्रिप्ट नोडलिस्ट एंड्रॉइड सॉफ्ट कीबोर्ड को बंद / छुपाएं MongoDB में डेटा संस्करण को लागू करने के तरीके एंड्रॉइड स्टूडियो: डेमन प्रक्रिया शुरू करने में असमर्थ एएसपी.Net एमवीसी नियंत्रक कन्स्ट्रक्टर में सत्र शून्य PHP x86 बाहरी प्रोग्राम के बिना> 2 जीबी फ़ाइल का फाईलिस कैसे प्राप्त करें? पांडा मर्ज का प्रयोग करते समय सूचक को कैसे रखा जाए

आपके द्वारा प्रदान की गई प्राधिकरण तंत्र समर्थित नहीं है। कृपया एडब्ल्यूएस 4-एचएमएसी-एसएचए 256 का उपयोग करें

मुझे एक त्रुटि मिलती है AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. जब मैं नई फ्रैंकफर्ट क्षेत्र में एस 3 बाल्टी अपलोड फ़ाइल का प्रयास करता हूं। सभी US Standard क्षेत्र के साथ ठीक से काम करता है

स्क्रिप्ट:

 backup_file = '/media/db-backup_for_dev/2014-10-23_02-00-07/slave_dump.sql.gz' s3 = AWS::S3.new( access_key_id: AMAZONS3['access_key_id'], secret_access_key: AMAZONS3['secret_access_key'] ) s3_bucket = s3.buckets['test-frankfurt'] # Folder and file name s3_name = "database-backups-last20days/#{File.basename(File.dirname(backup_file))}_#{File.basename(backup_file)}" file_obj = s3_bucket.objects[s3_name] file_obj.write(file: backup_file) 

ए वीएस-एसडीके (1.56.0)

इसे कैसे जोड़ेंगे?

धन्यवाद।

वेब के समाधान से एकत्रित समाधान "आपके द्वारा प्रदान की गई प्राधिकरण तंत्र समर्थित नहीं है। कृपया एडब्ल्यूएस 4-एचएमएसी-एसएचए 256 का उपयोग करें"

एडब्ल्यूएस 4-एचएमएसी-एसएचए 256, जिसे हस्ताक्षर संस्करण 4 के रूप में भी जाना जाता है, ("वी 4") एस 3 द्वारा समर्थित दो प्रमाणन योजनाओं में से एक है।

सभी क्षेत्रों V4 समर्थन करते हैं, लेकिन यूएस-मानक, और कई – लेकिन सभी नहीं – अन्य क्षेत्रों, अन्य, पुरानी योजना, हस्ताक्षर संस्करण 2 ("V2") का भी समर्थन करते हैं।

http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html के अनुसार … जनवरी, 2014 के बाद तैनात नए एस 3 क्षेत्रों में केवल V4 का समर्थन होगा

चूंकि फ्रैंकफर्ट को 2014 में देर से पेश किया गया था, यह वी 2 का समर्थन नहीं करता है, जो कि यह त्रुटि बताती है कि आप उपयोग कर रहे हैं।

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html बताता है कि कैसे विभिन्न एसडीके में वी 4 को सक्षम किया जा सकता है, यह मानते हुए कि आप उस एसडीके का प्रयोग कर रहे हैं जिसमें क्षमता है।

मुझे लगता है कि एसडीके के कुछ पुराने संस्करण इस विकल्प का समर्थन नहीं कर सकते हैं, इसलिए यदि उपरोक्त मदद नहीं करता है, तो आपको उस एसडीके के नए रिहाई की आवश्यकता हो सकती है जो आप उपयोग कर रहे हैं।


¹ US Standard एस us-east-1 क्षेत्रीय तैनाती के लिए पूर्व नाम है जो कि us-east-1 क्षेत्र में आधारित है जब से यह उत्तर मूल रूप से लिखा गया था, तब से "अमेज़ॅन एस 3 ने यूएस के पूर्व क्षेत्र (एन वर्जीनिया) क्षेत्र में अमेरिकी मानक क्षेत्र का नाम बदलकर एडब्ल्यूएस क्षेत्रीय नामकरण सम्मेलनों के अनुरूप किया।" सभी व्यावहारिक उद्देश्यों के लिए, यह केवल नामकरण में एक परिवर्तन है।

नोड के साथ, कोशिश करें

 var s3 = new AWS.S3( { endpoint: 's3-eu-central-1.amazonaws.com', signatureVersion: 'v4', region: 'eu-central-1' } ); 

आपको signatureVersion: 'v4' सेट करना चाहिए signatureVersion: 'v4' config में नए साइन संस्करण का उपयोग करने के लिए:

 AWS.config.update({ signatureVersion: 'v4' }); 

JS एसडीके के लिए काम करता है

boto3 ( Python SDK ) का उपयोग करने वाले लोगों के लिए नीचे कोड का उपयोग करें

 from botocore.client import Config s3 = boto3.resource( 's3', aws_access_key_id='xxxxxx', aws_secret_access_key='xxxxxx', config=Config(signature_version='s3v4') ) 

PHP एसडीके के साथ समान समस्या, यह काम करता है:

$s3Client = S3Client::factory(array('key'=>YOUR_AWS_KEY, 'secret'=>YOUR_AWS_SECRET, 'signature' => 'v4', 'region'=>'eu-central-1'));

महत्वपूर्ण बिट signature और region

जावा में मुझे एक संपत्ति सेट करना था

 System.setProperty(SDKGlobalConfiguration.ENFORCE_S3_SIGV4_SYSTEM_PROPERTY, "true") 

और इस क्षेत्र को s3Client उदाहरण में जोड़ें

 s3Client.setRegion(Region.getRegion(Regions.EU_CENTRAL_1)) 

थम्बोर- एएएस के लिए, जो बिटो कॉन्फिग का उपयोग करती थी, मुझे इसे $AWS_CONFIG_FILE

 [default] aws_access_key_id = (your ID) aws_secret_access_key = (your secret key) s3 = signature_version = s3 

तो जो कुछ भी बिना परिवर्तन के सीधे बोटो का इस्तेमाल करता है, यह उपयोगी हो सकता है

एंड्रॉइड एसडीके के लिए, सेट एन्डपॉइंट समस्या हल करती है, हालांकि इसे हटा दिया गया है।

 CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( context, "identityPoolId", Regions.US_EAST_1); AmazonS3 s3 = new AmazonS3Client(credentialsProvider); s3.setEndpoint("s3.us-east-2.amazonaws.com"); 

Boto3 के साथ, यह कोड है:

 s3_client = boto3.resource('s3', region_name='eu-central-1') 

तथा

 s3_client = boto3.client('s3', region_name='eu-central-1')