ฉันสร้างฟังก์ชั่นแลมบ์ดาใน AWS (Python) โดยใช้ "upload .zip" ฉันทำไฟล์เหล่านั้นหายไปและจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างมีวิธีใดในการดาวน์โหลดไฟล์. zip
ฉันสร้างฟังก์ชั่นแลมบ์ดาใน AWS (Python) โดยใช้ "upload .zip" ฉันทำไฟล์เหล่านั้นหายไปและจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างมีวิธีใดในการดาวน์โหลดไฟล์. zip
คำตอบ:
ใช่
นำทางไปยังการตั้งค่าฟังก์ชั่นแลมบ์ดาและที่ด้านบนขวาคุณจะมีปุ่มชื่อ " Actions
" ในเมนูแบบเลื่อนลงเลือก " export
" และในป๊อปอัพคลิก "ดาวน์โหลดแพ็คเกจการปรับใช้" และฟังก์ชั่นจะดาวน์โหลดใน.zip
ไฟล์
code
location
นี่คือ URL ที่กำหนดไว้ล่วงหน้าซึ่งคุณสามารถใช้เพื่อดาวน์โหลดฟังก์ชัน URL จะถูกต้องเป็นเวลา 10 นาที
.zip
ส่วนขยายดังนั้นจึงเป็นไฟล์ธรรมดาใน Windows วิธีแก้ไขคือเพิ่มนามสกุลด้วยตนเองหลังจากดาวน์โหลดไฟล์
ปรับปรุง: เพิ่มการเชื่อมโยงไปยังสคริปต์โดย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
คุณสามารถใช้เชลล์สคริปต์ได้ที่นี่
หากคุณต้องการดาวน์โหลดฟังก์ชั่นทั้งหมดในพื้นที่ที่กำหนดนี่คือวิธีแก้ปัญหาของฉัน ฉันสร้างสคริปต์โหนดแบบง่ายเพื่อดาวน์โหลดฟังก์ชัน ติดตั้งแพ็กเกจ 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());
ในสายนี้