Creé una función lambda en AWS (Python) usando "upload .zip" Perdí esos archivos y necesito hacer algunos cambios, ¿hay alguna forma de descargar ese .zip?
Creé una función lambda en AWS (Python) usando "upload .zip" Perdí esos archivos y necesito hacer algunos cambios, ¿hay alguna forma de descargar ese .zip?
Respuestas:
¡Si!
Navegue hasta la configuración de la función lambda y en la parte superior derecha tendrá un botón llamado " Actions
". En el menú desplegable, seleccione " export
" y en la ventana emergente haga clic en "Descargar paquete de implementación" y la función se descargará en un .zip
archivo.
code
allí debería encontrar location
. Esta es una URL predeterminada que puede usar para descargar la función. La URL será válida por 10 minutos.
.zip
extensión, por lo que solo era un archivo simple en Windows. La solución es agregar manualmente la extensión al nombre del archivo después de la descarga.
Actualización: Enlace agregado al script por sambhaji-sawant . Errores tipográficos, respuesta mejorada y script basado en comentarios!
Puede usar aws-cli para descargar el zip de cualquier lambda.
Primero debes obtener la URL del zip lambda
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Luego debe usar wget / curl para descargar el zip desde la URL.
$ wget -O myfunction.zip URL_from_step_1
Además, puede enumerar todas las funciones en su cuenta de AWS utilizando
$ aws lambda list-functions
Hice un script bash simple para descargar en paralelo todas las funciones lambda de su cuenta de AWS. Puedes verlo aquí :)
Nota: Deberá configurar aws-cli antes de usar los comandos anteriores (o cualquier comando aws-cli) usando aws configure
Puede usar el script de shell disponible aquí
Si desea descargar todas las funciones en la región dada aquí está mi solución. He creado un script de nodo simple para descargar la función. Instale todos los paquetes npm necesarios y configure su AWS CLI en la región que desee antes de ejecutar el 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());
esta línea