पहले से अपलोड किए गए लंबोदा फ़ंक्शन को डाउनलोड करें


156

मैंने "अपलोड .zip" का उपयोग करके एडब्ल्यूएस (पायथन) में एक लैम्ब्डा फ़ंक्शन बनाया है। मैंने उन फ़ाइलों को खो दिया है और मुझे कुछ बदलाव करने की आवश्यकता है, क्या उस .zip को डाउनलोड करने का कोई तरीका है?

जवाबों:


291

हाँ!

अपने लंबो फंक्शन सेटिंग्स पर नेविगेट करें और ऊपर दाईं ओर आपको " Actions" नामक एक बटन होगा । ड्रॉप डाउन मेनू में " export" चुनें और पॉपअप में "डाउनलोड तैनाती पैकेज" पर क्लिक करें और फ़ंक्शन एक .zipफ़ाइल में डाउनलोड होगा ।


2
फ़ंक्शन पर क्लिक करें। जब आप फ़ंक्शंस प्रबंधन पृष्ठ में होते हैं, तो कार्रवाई पर क्लिक करें।
बबल हैकर

1
@ अंकित हां! कमांड के आउटपुट में आपको codeवहां देखना चाहिए जो आपको मिलना चाहिए location। यह एक निर्धारित URL है जिसका उपयोग आप फ़ंक्शन को डाउनलोड करने के लिए कर सकते हैं। URL 10 मिनट के लिए मान्य होगा।
बबल हैकर

@kit क्या आपने CLI का उपयोग करके ज़िप डाउनलोड करने का कोई तरीका खोजा? मेरे पास कोई किस्मत नहीं है और यहां तक ​​कि कर्ल
विनेथ

2
@ विनीत- हां आप कमांड का उपयोग कर सकते हैं जैसे: AWS_ACCESS_KEY_ID = XXX AWS_SECRET_ACCESS_KEY = XXX aws s3 cp s3: // मेरी-छवियां / देव।
किट

1
मेरे लिए काम किया। बस ध्यान दें कि मैंने जो फ़ाइल डाउनलोड की है, उसमें कोई .zipएक्सटेंशन नहीं था इसलिए विंडोज में सिर्फ एक सादे फ़ाइल थी। समाधान मैन्युअल रूप से फ़ाइल नाम में एक्सटेंशन को डाउनलोड करने के बाद जोड़ना है।
अज्ञात देव

27

अपडेट: संभाजी-संत द्वारा स्क्रिप्ट में लिंक जोड़ा गया । फिक्स्ड टाइपोस, बेहतर उत्तर और स्क्रिप्ट टिप्पणियों के आधार पर!

आप किसी भी मेमने का ज़िप डाउनलोड करने के लिए aws-cli का उपयोग कर सकते हैं ।

सबसे पहले आपको लैम्बडा ज़िप के लिए URL प्राप्त करना होगा $ aws lambda get-function --function-name $functionName --query 'Code.Location'

फिर आपको URL से ज़िप डाउनलोड करने के लिए wget / curl का उपयोग करना होगा। $ wget -O myfunction.zip URL_from_step_1

इसके अतिरिक्त आप अपने AWS खाते के उपयोग से सभी कार्यों को सूचीबद्ध कर सकते हैं

$ aws lambda list-functions

मैंने आपके एडब्ल्यूएस खाते से सभी लंबो कार्यों को समानांतर डाउनलोड करने के लिए एक सरल बैश स्क्रिप्ट बनाई। आप इसे यहाँ देख सकते हैं :)

नोट: उपरोक्त कमांड (या किसी भी aws-cli कमांड) का उपयोग करने से पहले आपको aws-cli सेटअप करना होगा aws configure

पूर्ण गाइड यहाँ


aws lambda get-function फ़ंक्शन का JSON विवरण देता है। वास्तविक ज़िप प्राप्त करने के लिए, आपको कर्ल या किसी अन्य HTTP क्लाइंट के साथ Code.Location विशेषता का उपयोग करने की आवश्यकता है।
जॉनीसमर


2

यदि आप यहां दिए गए क्षेत्र में सभी कार्यों को डाउनलोड करना चाहते हैं तो मेरा काम है। मैंने फंक्शन डाउनलोड करने के लिए एक सरल नोड स्क्रिप्ट बनाई है। सभी आवश्यक npm संकुल स्थापित करें और स्क्रिप्ट चलाने से पहले अपने AWS CLI को उस क्षेत्र में सेट करें जिसे आप चाहते हैं।

let download = require('download-file');
let extract = require('extract-zip');
let cmd = require('node-cmd');

let downloadFile = async function (dir, filename, url) {
    let options = {
        directory: dir,
        filename: filename
    }
    return new Promise((success, failure) => {
        download(url, options, function (err) {
            if (err) {
                failure(err)
            } else {
                success('done');
            }
        })
    })
}

let extractZip = async function (source, target) {
    return new Promise((success, failure) => {
        extract(source, { dir: target }, function (err) {
            if (err) {
                failure(err)
            } else {
                success('done');
            }
        })
    })
}

let getAllFunctionList = async function () {
    return new Promise((success, failure) => {
        cmd.get(
            'aws lambda list-functions',
            function (err, data, stderr) {
                if (err || stderr) {
                    failure(err || stderr)
                } else {
                    success(data)
                }
            }
        );
    })
}

let getFunctionDescription = async function (name) {
    return new Promise((success, failure) => {
        cmd.get(
            `aws lambda get-function --function-name ${name}`,
            function (err, data, stderr) {
                if (err || stderr) {
                    failure(err || stderr)
                } else {
                    success(data)
                }
            }
        );
    })
}

let init = async function () {
    try {
        let { Functions: getAllFunctionListResult } = JSON.parse(await getAllFunctionList());
        let getFunctionDescriptionResult, downloadFileResult, extractZipResult;
        getAllFunctionListResult.map(async (f) => {
            var { Code: { Location: getFunctionDescriptionResult } } = JSON.parse(await getFunctionDescription(f.FunctionName));
            downloadFileResult = await downloadFile('./functions', `${f.FunctionName}.zip`, getFunctionDescriptionResult)
            extractZipResult = await extractZip(`./functions/${f.FunctionName}.zip`, `/Users/malhar/Desktop/get-lambda-functions/final/${f.FunctionName}`)
            console.log('done', f.FunctionName);
        })
    } catch (e) {
        console.log('error', e);
    }
}


init()

इस पंक्ति में कार्य क्या करते हैंlet { Functions: getAllFunctionListResult } = JSON.parse(await getAllFunctionList());
केटीएम

यह नया वैरिएबल getAllFunctionListResult बनाने वाली विनाशकारी वस्तु है और JSON.parse की फ़ंक्शंस प्रॉपर्टी असाइन करना
Mayur
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.