이미 업로드 된 Lambda 함수 다운로드


156

"upload .zip"을 사용하여 AWS (Python)에서 람다 함수를 만들었습니다. 파일을 잃어 버렸고 몇 가지 변경이 필요합니다. 해당 .zip을 다운로드 할 수있는 방법이 있습니까?

답변:


291

예!

람다 기능 설정으로 이동하면 오른쪽 상단에 " Actions" 버튼이 있습니다 . 드롭 다운 메뉴에서 " export"를 선택 하고 팝업에서 "배포 패키지 다운로드"를 클릭하면 기능이 .zip파일로 다운로드 됩니다.


2
기능을 클릭하십시오. 기능 관리 페이지에있을 때 조치를 클릭하십시오.
Bubble Hacker

1
@ 키트 예! 명령의 출력 code에서 찾을 수 location있습니다. 기능을 다운로드하는 데 사용할 수있는 사전 서명 된 URL입니다. URL은 10 분 동안 유효합니다.
Bubble Hacker

@kit CLI를 사용하여 zip을 다운로드하는 방법을 찾았습니까? I은 wget 또는 컬 운이 없다
바이 니스

2
@ Vineeth- 예 : AWS_ACCESS_KEY_ID = XXX AWS_SECRET_ACCESS_KEY = XXX aws s3 cp s3 : // my-images / dev와 같은 명령을 사용할 수 있습니다.
키트

1
나를 위해 일했다. 다운로드 한 파일의 .zip확장자가 없으므로 Windows의 일반 파일 일뿐입니다. 해결책은 다운로드 후 파일 이름에 확장자를 수동으로 추가하는 것입니다.
알 수없는 개발자

27

업데이트 : sambhaji-sawant의 스크립트 링크가 추가되었습니다 . 댓글을 기반으로 오타 수정, 답변 및 스크립트 수정!

aws-cli 를 사용 하여 람다의 우편 번호를 다운로드 할 수 있습니다 .

먼저 URL을 lambda zip으로 가져와야합니다. $ aws lambda get-function --function-name $functionName --query 'Code.Location'

그런 다음 wget / curl을 사용하여 URL에서 zip을 다운로드해야합니다. $ wget -O myfunction.zip URL_from_step_1

또한 다음을 사용하여 AWS 계정의 모든 기능을 나열 할 수 있습니다

$ aws lambda list-functions

AWS 계정에서 모든 람다 함수를 병렬로 다운로드하는 간단한 bash 스크립트를 만들었습니다. 여기서 볼 수 있습니다 :)

참고 : 위 명령 (또는 aws-cli 명령)을 사용하기 전에 aws-cli를 설정해야합니다. aws configure

전체 가이드는 여기


aws lambda get-function은 함수의 JSON 설명을 반환합니다. 실제 우편 번호를 얻으려면 curl 또는 다른 HTTP 클라이언트와 함께 Code.Location 속성을 사용해야합니다.
jonseymour 2016 년


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());
KTM

새로운 변수 getAllFunctionListResult를 생성하고 JSON.parse의 Functions 속성을 할당하는 객체를 파괴합니다
Mayur Shingare
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.