Download an already uploaded Lambda function

前端 未结 4 1433
北恋
北恋 2020-12-01 08:57

I created a lambda function in AWS (Python) using \"upload .zip\" I lost those files and I need to make some changes, is there is any way to download that .zip?

相关标签:
4条回答
  • 2020-12-01 09:17

    You can use shell script available here

    0 讨论(0)
  • 2020-12-01 09:19

    Yes!

    Navigate over to your lambda function settings and on the top right you will have a button called "Actions". In the drop down menu select "export" and in the popup click "Download deployment package" and the function will download in a .zip file.

    0 讨论(0)
  • 2020-12-01 09:31

    Update: Added link to script by sambhaji-sawant. Fixed Typos, improved answer and script based on comments!

    You can use aws-cli to download the zip of any lambda.

    First you need to get the URL to the lambda zip $ aws lambda get-function --function-name $functionName --query 'Code.Location'

    Then you need to use wget/curl to download the zip from the URL. $ wget -O myfunction.zip URL_from_step_1

    Additionally you can list all functions on your AWS account using

    $ aws lambda list-functions

    I made a simple bash script to parallel download all the lambda functions from your AWS account. You can see it here :)

    Note: You will need to setup aws-cli before using the above commands (or any aws-cli command) using aws configure

    Full guide here

    0 讨论(0)
  • 2020-12-01 09:34

    If you want to download all the functions in the given region here is my workaround. I have created a simple node script to download function. Install all the required npm packages and set your AWS CLI to the region you want before running the script.

    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()
    
    0 讨论(0)
提交回复
热议问题