Saya membuat fungsi lambda di AWS (Python) menggunakan "upload .zip" Saya kehilangan file-file itu dan saya perlu membuat beberapa perubahan, apakah ada cara untuk mengunduh itu .zip?
Saya membuat fungsi lambda di AWS (Python) menggunakan "upload .zip" Saya kehilangan file-file itu dan saya perlu membuat beberapa perubahan, apakah ada cara untuk mengunduh itu .zip?
Jawaban:
Iya!
Arahkan ke pengaturan fungsi lambda Anda dan di kanan atas Anda akan memiliki tombol yang disebut " Actions
". Di menu tarik-turun pilih " export
" dan di jendela sembulan, klik "Unduh paket penerapan" dan fungsinya akan diunduh dalam sebuah .zip
file.
code
di sana Anda harus menemukan location
. Ini adalah URL yang ditentukan yang dapat Anda gunakan untuk mengunduh fungsi. URL akan valid selama 10 menit.
.zip
ekstensi jadi hanya file biasa di Windows. Solusinya adalah dengan menambahkan ekstensi secara manual ke nama file setelah mengunduh.
Pembaruan: Menambahkan tautan ke skrip oleh sambhaji-sawant . Memperbaiki kesalahan ketik, meningkatkan jawaban dan skrip berdasarkan komentar!
Anda dapat menggunakan aws-cli untuk mengunduh zip dari lambda apa saja.
Pertama, Anda perlu mendapatkan URL ke pos lambda
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Maka Anda perlu menggunakan wget / curl untuk mengunduh zip dari URL.
$ wget -O myfunction.zip URL_from_step_1
Selain itu Anda dapat membuat daftar semua fungsi di akun AWS Anda menggunakan
$ aws lambda list-functions
Saya membuat skrip bash sederhana untuk mengunduh semua fungsi lambda secara paralel dari akun AWS Anda. Anda bisa melihatnya di sini :)
Catatan: Anda perlu mengatur aws-cli sebelum menggunakan perintah di atas (atau perintah aws-cli) menggunakan aws configure
Anda dapat menggunakan skrip shell yang tersedia di sini
Jika Anda ingin mengunduh semua fungsi di wilayah yang diberikan di sini adalah solusi saya. Saya telah membuat skrip simpul sederhana untuk mengunduh fungsi. Instal semua paket npm yang diperlukan dan setel AWS CLI Anda ke wilayah yang Anda inginkan sebelum menjalankan skrip.
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());
dalam baris ini