Ho creato una funzione lambda in AWS (Python) usando "upload .zip" Ho perso quei file e ho bisogno di apportare alcune modifiche, c'è un modo per scaricare quel .zip?
Ho creato una funzione lambda in AWS (Python) usando "upload .zip" Ho perso quei file e ho bisogno di apportare alcune modifiche, c'è un modo per scaricare quel .zip?
Risposte:
Sì!
Passa alle impostazioni della tua funzione lambda e in alto a destra avrai un pulsante chiamato " Actions
". Nel menu a discesa selezionare " export
" e nel popup fare clic su "Scarica pacchetto di distribuzione" e la funzione verrà scaricata in un .zip
file.
code
lì che dovresti trovare location
. Questo è un URL assegnato che è possibile utilizzare per scaricare la funzione. L'URL sarà valido per 10 minuti.
.zip
un'estensione, quindi era solo un semplice file in Windows. La soluzione è aggiungere manualmente l'estensione al nome del file dopo il download.
Aggiornamento: aggiunto il collegamento allo script di sambhaji-sawant . Risolto il problema con Typos, risposta migliorata e script basati sui commenti!
Puoi usare aws-cli per scaricare lo zip di qualsiasi lambda.
Per prima cosa devi ottenere l'URL della zip lambda
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Quindi è necessario utilizzare wget / curl per scaricare lo zip dall'URL.
$ wget -O myfunction.zip URL_from_step_1
Inoltre, puoi elencare tutte le funzioni sul tuo account AWS utilizzando
$ aws lambda list-functions
Ho creato un semplice script bash per scaricare in parallelo tutte le funzioni lambda dal tuo account AWS. Puoi vederlo qui :)
Nota: sarà necessario impostare aws-cli prima di usare i comandi sopra (o qualsiasi comando aws-cli) usando aws configure
Puoi usare lo script di shell disponibile qui
Se vuoi scaricare tutte le funzioni in una determinata regione, ecco la mia soluzione alternativa. Ho creato un semplice script del nodo per scaricare la funzione. Installa tutti i pacchetti npm richiesti e imposta la CLI AWS sulla regione desiderata prima di eseguire lo script.
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());
in questa linea