Tôi đã tạo một hàm lambda trong AWS (Python) bằng cách sử dụng "upload .zip" Tôi bị mất các tệp đó và tôi cần thực hiện một số thay đổi, có cách nào để tải xuống .zip đó không?
Tôi đã tạo một hàm lambda trong AWS (Python) bằng cách sử dụng "upload .zip" Tôi bị mất các tệp đó và tôi cần thực hiện một số thay đổi, có cách nào để tải xuống .zip đó không?
Câu trả lời:
Đúng!
Điều hướng đến các cài đặt chức năng lambda của bạn và ở phía trên bên phải, bạn sẽ có một nút gọi là " Actions
". Trong menu thả xuống, chọn " export
" và trong cửa sổ bật lên, nhấp vào "Tải xuống gói triển khai" và chức năng sẽ tải xuống trong một .zip
tệp.
code
trong đó bạn sẽ tìm thấy location
. Đây là một URL được chỉ định mà bạn có thể sử dụng để tải xuống chức năng. URL sẽ có hiệu lực trong 10 phút.
.zip
phần mở rộng nên chỉ là một tệp đơn giản trong Windows. Giải pháp là tự thêm phần mở rộng vào tên tệp sau khi tải xuống.
Cập nhật: Đã thêm liên kết đến tập lệnh bởi sambhaji-sawant . Đã sửa lỗi Typose, cải thiện câu trả lời và kịch bản dựa trên ý kiến!
Bạn có thể sử dụng aws-cli để tải xuống zip của bất kỳ lambda nào.
Trước tiên, bạn cần lấy URL tới zip lambda
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Sau đó, bạn cần sử dụng wget / curl để tải xuống zip từ URL.
$ wget -O myfunction.zip URL_from_step_1
Ngoài ra, bạn có thể liệt kê tất cả các chức năng trên tài khoản AWS của mình bằng cách sử dụng
$ aws lambda list-functions
Tôi đã tạo một tập lệnh bash đơn giản để tải xuống song song tất cả các hàm lambda từ tài khoản AWS của bạn. Bạn có thể thấy nó ở đây :)
Lưu ý: Bạn sẽ cần thiết lập aws-cli trước khi sử dụng các lệnh trên (hoặc bất kỳ lệnh aws-cli nào) bằng cách sử dụng aws configure
Bạn có thể sử dụng shell script có sẵn ở đây
Nếu bạn muốn tải xuống tất cả các chức năng trong khu vực nhất định ở đây là cách giải quyết của tôi. Tôi đã tạo một tập lệnh nút đơn giản để tải về chức năng. Cài đặt tất cả các gói npm cần thiết và đặt AWS CLI của bạn đến khu vực bạn muốn trước khi chạy tập lệnh.
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());
trong dòng này