aws s3

2017-05-28 22 views
5

में फ़ाइल के लिए प्रोग्रामेटिक रूप से एन्क्रिप्शन को अनसेट करें, मैं aws code build के माध्यम से एंड्रॉइड बिल्ड कर रहा हूं। apk उत्पन्न फ़ाइलों मैं मैन्युअल रूप ASW-किलोमीटर  aws s3

जो निम्नलिखित पॉपअप

यहाँ None विकल्प का चयन देता है अचयनित करके S3 बाल्टी से नीचे दिखाया गया है पर क्लिक करके एन्क्रिप्शन अनसेट कर सकते हैं डिफ़ॉल्ट server side encryption (aws-kms) के साथ लागू होते हैं मैन्युअल रूप से लिंक डाउनलोड करने योग्य बना देगा। मैं इस प्रोग्रामेटिक रूप से प्राप्त करना चाहता हूं।

मैंने पहले से ही here के रूप में अनुमतियों को जोड़ने का प्रयास किया है। पाइथन boto3 के साथ एक निष्पक्ष बिट भी प्रयोग किया। हालांकि अब तक किसी भी सफलता से पूरा नहीं हुआ। अग्रिम धन्यवाद!

+1

सर्वर साइड एन्क्रिप्शन सेटिंग में फ़ाइल डाउनलोड करने की क्षमता को प्रभावित नहीं shoild: तो लिंक केवल 7 निम्नलिखित days.The के लिए अधिकतम पर काम करता है उसी के लिए कदम है किसी भी तरह से। आप जिस वास्तविक समस्या को हल करने की कोशिश कर रहे हैं वह क्या है? –

+0

उत्तर के लिए धन्यवाद। मैं मूल रूप से aws उपकरण का उपयोग कर एक निर्माण स्वचालन करने की कोशिश कर रहा हूँ। मैं aws के लिए बहुत नया हूँ। मुझे वेबहूक का उपयोग करके जिथूब से जेनकिंस आधारित निर्माण स्वचालन का उपयोग करने का अनुभव है। अब, मैं aws का उपयोग करके इसे प्राप्त करना चाहता हूं। इसलिए मैंने कोड पाइपलाइन से जुड़े कोड निर्माण को बनाया है, मैं या तो एक aws lambda फ़ंक्शन या boto3 क्लाइंट (यह मैंने पहले से ही) का उपयोग कर पाइपलाइन को ट्रिगर कर सकता है। विचार कोड निर्माण चरण के बाद एक और लैम्ब्डा फ़ंक्शन कनेक्ट करना है जो उत्पन्न प्रक्रिया के परिणाम के साथ एक मेल भेज देगा जिसमें एपीके जेनरेट किए गए डाउनलोड करने योग्य लिंक के साथ होगा। (cont'd) – ranjjose

+1

वर्तमान मुद्दा यह है कि aws कोड कोड निर्माण से s3 में अपलोड किया गया आर्टिफैक्ट डिफ़ॉल्ट रूप से aws-kms के माध्यम से एन्क्रिप्ट किया जाता है और जब s3 बाल्टी से उस लिंक पर क्लिक होता है, तो यह संदेश के साथ त्रुटि देता है, 'अनुरोध AWS KMS प्रबंधित कुंजी के साथ सर्वर साइड एन्क्रिप्शन निर्दिष्ट करने के लिए AWS हस्ताक्षर संस्करण की आवश्यकता होती है 4. ' – ranjjose

उत्तर

1

ठीक है, मुझे इसके लिए वर्कअराउंड मिला है। Encypted (सर्वर पक्ष aws-kms) के बाद artifact बनाया गया है और s3 (aws कोड निर्माण के हिस्से के रूप में) पर अपलोड किया गया है, फ़ाइल की प्रतिलिपि 'ACL':'public-read' के साथ बनाएं। निम्नलिखित कदम हैं:

s3 = boto3.resource('s3',aws_access_key_id='<YOUR ACCESS KEY>', aws_secret_access_key='<YOUR SECRET ACCESS KEY>', region_name = 'ap-southeast-1', config=Config(signature_version='s3v4')) 

config=Config(signature_version='s3v4') हिस्सा चाल एन्क्रिप्टेड फ़ाइल तक पहुँच प्राप्त करने के लिए है।

copy_source = {'Bucket': 'SOURCE BUCKET','Key':'test/app-debug.apk'} 
s3.meta.client.copy(copy_source, 'DESTINATION BUCKET', 'app-debug.apk', {'ACL':'public-read'}) 

S3 से, आप एक डाउनलोड यूआरएल मिलेगा।

वैकल्पिक रूप से, आप सीधे एन्क्रिप्टेड एस 3 आइटम से डाउनलोड करने योग्य लिंक को किसी अन्य बाल्टी में कॉपी किए बिना डाउनलोड कर सकते हैं। हालांकि, मुद्दा यह है कि s3v4 एन्क्रिप्शन अधिकतम 7 दिनों की समाप्ति के साथ आता है।

  1. s3_client = boto3.client('s3',aws_access_key_id='<YOUR ACCESS KEY>', aws_secret_access_key='<YOUR SECRET KEY>', region_name='ap-southeast-1', config=Config(signature_version='s3v4'))
  2. url = s3_client.generate_presigned_url(ClientMethod='get_object', Params={'Bucket':'SOURCE BUCKET', 'Key':'test/app-debug.apk'})