ดาวน์โหลดฟังก์ชั่น Lambda ที่อัปโหลดแล้ว


156

ฉันสร้างฟังก์ชั่นแลมบ์ดาใน AWS (Python) โดยใช้ "upload .zip" ฉันทำไฟล์เหล่านั้นหายไปและจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างมีวิธีใดในการดาวน์โหลดไฟล์. zip

คำตอบ:


291

ใช่

นำทางไปยังการตั้งค่าฟังก์ชั่นแลมบ์ดาและที่ด้านบนขวาคุณจะมีปุ่มชื่อ " Actions" ในเมนูแบบเลื่อนลงเลือก " export" และในป๊อปอัพคลิก "ดาวน์โหลดแพ็คเกจการปรับใช้" และฟังก์ชั่นจะดาวน์โหลดใน.zipไฟล์


2
คลิกที่ฟังก์ชั่น เมื่อคุณอยู่ในหน้าการจัดการฟังก์ชั่นให้คลิกการกระทำ
Bubble Hacker

1
@kit ใช่! ในการแสดงผลของคำสั่งที่คุณควรจะเห็นในนั้นคุณควรจะหาcode locationนี่คือ URL ที่กำหนดไว้ล่วงหน้าซึ่งคุณสามารถใช้เพื่อดาวน์โหลดฟังก์ชัน URL จะถูกต้องเป็นเวลา 10 นาที
Bubble Hacker

@kit คุณพบวิธีดาวน์โหลด zip โดยใช้ CLI หรือไม่ ฉันไม่มีโชคกับ wget หรือขด
Vineeth

2
@ Vineeth- ใช่คุณสามารถใช้ประโยชน์จากคำสั่งเช่น: AWS_ACCESS_KEY_ID = XXX AWS_SECRET_ACCESS_KEY = XXX aws s3 cp s3: // my-images / dev --recursive
ชุด

1
ทำงานให้ฉัน เพียงแค่ทราบว่าไฟล์ที่ฉันดาวน์โหลดไม่มี.zipส่วนขยายดังนั้นจึงเป็นไฟล์ธรรมดาใน Windows วิธีแก้ไขคือเพิ่มนามสกุลด้วยตนเองหลังจากดาวน์โหลดไฟล์
Dev ที่ไม่รู้จัก

27

ปรับปรุง: เพิ่มการเชื่อมโยงไปยังสคริปต์โดยSambhaji-Sawant แก้ไข Typos คำตอบที่ปรับปรุงแล้วและสคริปต์ตามความคิดเห็น!

คุณสามารถใช้aws-cliเพื่อดาวน์โหลด zip ของแลมบ์ดาใด ๆ

ก่อนอื่นคุณต้องเอา URL ไปที่ lambda zip $ aws lambda get-function --function-name $functionName --query 'Code.Location'

จากนั้นคุณต้องใช้ wget / curl เพื่อดาวน์โหลด zip จาก URL $ wget -O myfunction.zip URL_from_step_1

นอกจากนี้คุณสามารถแสดงรายการฟังก์ชั่นทั้งหมดในบัญชี AWS ของคุณโดยใช้

$ aws lambda list-functions

ฉันสร้างสคริปต์ทุบตีง่ายๆเพื่อดาวน์โหลดฟังก์ชั่นแลมบ์ดาทั้งหมดจากบัญชี AWS ของคุณแบบขนาน คุณสามารถดูได้ ที่นี่ :)

หมายเหตุ: คุณจะต้องตั้งค่า aws-cli ก่อนใช้คำสั่งข้างต้น (หรือคำสั่ง aws-cli) โดยใช้ aws configure

คู่มือฉบับสมบูรณ์ที่นี่


aws lambda get-function ส่งคืนคำอธิบาย JSON ของฟังก์ชัน ในการรับรหัสไปรษณีย์จริงคุณต้องใช้แอตทริบิวต์ Code.Location กับ curl หรือไคลเอนต์ HTTP อื่น ๆ
jonseymour


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 และกำหนดคุณสมบัติ Function ของ JSON.parse ให้กับมัน
Mayur Shingare
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.