2013-05-05 8 views
6

मेरे पास कुछ कोड है जो aws-sdk मणि का उपयोग करके अमेज़ॅन एस 3 पर एक फ़ाइल अपलोड करता है। स्पष्ट रूप से यह फ़ाइल अपलोड करने के लिए एक HTTP डाल दिया है।aws-sdk मणि कैसे नकल करने के लिए?

क्या aws-sdk मणि की इस कार्यक्षमता का नकल करने का कोई अच्छा तरीका है?

मैंने वेबमैक का उपयोग करने की कोशिश की, लेकिन aws-sdk मणि get latest/meta-data/iam/security-credentials/ पहले ऐसा लगता है। ऐसा लगता है कि वेबमैक का उपयोग इस कार्यक्षमता को नकल करने का सबसे अच्छा तरीका नहीं हो सकता है।

आरएसपीसी में काम करना।

उत्तर

11

AWS SDK for Ruby में अनुरोधों का नकल करने के कई तरीके हैं। ट्रेवर रो ने हाल ही में object stubbing के लिए एसडीके के मूल समर्थन का उपयोग करने पर एक लेख पोस्ट किया, जिसके लिए वेबमॉक जैसी बाहरी निर्भरताओं की आवश्यकता नहीं है। आप कैशबल एकीकरण परीक्षण बनाने के लिए VCR (लिंक आपको किसी अन्य ब्लॉग पोस्ट पर भेज देंगे) जैसे टूल का भी उपयोग कर सकते हैं; इस तरह आप लाइव सेवा के खिलाफ परीक्षण कर सकते हैं जब आप सटीकता चाहते हैं और जब आप गति चाहते हैं तो नेटवर्क को मारने से बचें।

latest/meta-data/iam/security-credentials/ पर अनुरोध प्राप्त करने के संबंध में, ऐसा इसलिए होता है क्योंकि एसडीके क्रेडेंशियल देखने की कोशिश कर रहा है, और यदि कोई प्रदान नहीं किया जाता है, तो यह जांच करेगा कि क्या आप एक अंतिम उपाय के रूप में ईसी 2 इंस्टेंस पर चल रहे हैं, जिससे एसडीके एक अतिरिक्त HTTP अनुरोध करें। आप केवल फर्जी स्टेटिक क्रेडेंशियल्स प्रदान करके इस चेक से बच सकते हैं, हालांकि यदि आप वीसीआर जैसे कुछ का उपयोग कर रहे हैं, तो आप पहले रन के लिए मान्य प्रमाण-पत्र प्रदान करना चाहेंगे। आप स्थिर प्रमाण-पत्र in another blog post that Trevor wrote on credential management (यह डेवलपर मार्गदर्शिका और एसडीके दस्तावेज़ में भी होना चाहिए) के बारे में पढ़ सकते हैं। अपने RSpec.configure ब्लॉक (आमतौर पर आपके rails_helper.rb फ़ाइल में पाए)


को

Aws.config.update(stub_responses: true) 

:

+0

यह बहुत उपयोगी है। वीसीआर एक अच्छी पसंद की तरह दिखता है क्योंकि यह दोनों दुनिया के सर्वश्रेष्ठ प्रदान करता है: तेज़ परीक्षण *** और *** एकीकरण। –

+0

क्या इसका मतलब यह नहीं होगा कि मेरे वैध प्रमाण-पत्रों की एक प्रति वीसीआर फाइलों में कहीं भी संग्रहीत की जाएगी जो अंततः सीवीएस में प्रतिबद्ध हो सकती है? –

+1

@FabrizioRegini आप वीसीआर कैसेट से संवेदनशील डेटा फ़िल्टर कर सकते हैं: https://relishapp.com/vcr/vcr/v/2-9-2/docs/configuration/filter-sensitive-data – David

14

आप एडब्ल्यूएस-sdk मणि का संस्करण 2 उपयोग कर रहे हैं जोड़ने की कोशिश उपर्युक्त कार्यों के दौरान, यदि आप प्रतिक्रिया सामग्री निर्दिष्ट नहीं करते हैं तो यह खाली प्रतिक्रिया वापस कर देगा - आवश्यक रूप से मान्य नहीं है, लेकिन स्टब किया गया है।

आप पैदा करते हैं और एक नामित आपरेशन से टोंटदार प्रतिक्रिया डेटा लौट सकते हैं: डिफ़ॉल्ट स्टब्स पैदा करने के लिए, आप प्रतिक्रिया ठूंठ को लागू करने के लिए डेटा प्रदान कर सकते हैं करने के लिए

s3 = Aws::S3::Client.new 
s3.stub_data(:list_buckets) 
#=> #<struct Aws::S3::Types::ListBucketsOutput buckets=[], owner=#<struct Aws::S3::Types::Owner display_name="DisplayName", id="ID">> 

इसके अलावा।

s3.stub_data(:list_buckets, buckets:[{name:'aws-sdk'}]) 
#=> #<struct Aws::S3::Types::ListBucketsOutput buckets=[#<struct Aws::S3::Types::Bucket name="aws-sdk", creation_date=nil>], owner=#<struct Aws::S3::Types::Owner display_name="DisplayName", id="ID">> 

अधिक जानकारी के लिए उल्लेख करने के लिए: http://docs.aws.amazon.com/sdkforruby/api/Aws/ClientStubs.html

संबंधित मुद्दे