AWS'de (Python) "upload .zip" dosyasını kullanarak bir lambda işlevi oluşturdum. Bu dosyaları kaybettim ve bazı değişiklikler yapmam gerekiyor, bu .zip'i indirmenin herhangi bir yolu var mı?
AWS'de (Python) "upload .zip" dosyasını kullanarak bir lambda işlevi oluşturdum. Bu dosyaları kaybettim ve bazı değişiklikler yapmam gerekiyor, bu .zip'i indirmenin herhangi bir yolu var mı?
Yanıtlar:
Evet!
Lambda işlevi ayarlarınıza gidin ve sağ üst köşede " Actions
" adında bir düğme bulunur . Açılır menüden " export
" öğesini seçin ve açılır pencerede "Dağıtım paketini indir" i tıklayın, işlev bir .zip
dosyaya yüklenecektir .
code
orada görmelisiniz location
. Bu, işlevi indirmek için kullanabileceğiniz önceden belirlenmiş bir URL'dir. URL 10 dakika boyunca geçerli olacak.
.zip
uzantısı olmadığını, bu nedenle Windows'ta sadece düz bir dosya olduğunu unutmayın. Çözüm, indirdikten sonra uzantıyı manuel olarak dosya adına eklemektir.
Güncelleme: sambhaji-sawant tarafından script'e bağlantı eklendi . Düzeltmeler yazım hataları, yorumlara dayalı geliştirilmiş cevap ve komut dosyası!
Herhangi bir lambda'nın zip dosyasını indirmek için aws-cli kullanabilirsiniz .
Öncelikle lambda zip'in URL'sini almanız gerekiyor
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Ardından, zip'i URL'den indirmek için wget / curl kullanmanız gerekir.
$ wget -O myfunction.zip URL_from_step_1
Ayrıca, AWS hesabınızdaki tüm işlevleri aşağıdakileri kullanarak listeleyebilirsiniz:
$ aws lambda list-functions
AWS hesabınızdan tüm lambda işlevlerini paralel olarak indirmek için basit bir bash betiği yaptım. Burada görebilirsiniz :)
Not: Yukarıdaki komutları (veya herhangi bir aws-cli komutunu) kullanmadan önce aws-cli ayarlamanız gerekir. aws configure
Burada bulunan kabuk komut dosyasını kullanabilirsiniz
Eğer verilen bölgedeki tüm fonksiyonları indirmek istiyorsanız benim geçici çözümüm. Ben fonksiyonu indirmek için basit bir düğüm komut dosyası oluşturduk. Gerekli tüm npm paketlerini kurun ve komut dosyasını çalıştırmadan önce AWS CLI'nızı istediğiniz bölgeye ayarlayın.
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());
bu satırda