Criei uma função lambda na AWS (Python) usando "upload .zip". Perdi esses arquivos e preciso fazer algumas alterações. Existe alguma maneira de fazer o download desse .zip?
Criei uma função lambda na AWS (Python) usando "upload .zip". Perdi esses arquivos e preciso fazer algumas alterações. Existe alguma maneira de fazer o download desse .zip?
Respostas:
Sim!
Navegue até as configurações da função lambda e, no canto superior direito, você terá um botão chamado " Actions
". No menu suspenso, selecione " export
" e, no pop-up, clique em "Baixar pacote de implantação" e a função será baixada em um .zip
arquivo.
code
lá, você deve encontrar location
. Este é um URL predefinido que você pode usar para baixar a função. O URL será válido por 10 minutos.
.zip
extensão, portanto era apenas um arquivo simples no Windows. A solução é adicionar manualmente a extensão ao nome do arquivo após o download.
Atualização: link adicionado ao script por sambhaji-sawant . Erros de digitação corrigidos, resposta e script aprimorados com base em comentários!
Você pode usar o aws-cli para baixar o zip de qualquer lambda.
Primeiro, você precisa obter o URL para o zip lambda
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Então você precisa usar o wget / curl para baixar o zip do URL.
$ wget -O myfunction.zip URL_from_step_1
Além disso, você pode listar todas as funções em sua conta da AWS usando
$ aws lambda list-functions
Criei um script bash simples para fazer o download paralelo de todas as funções lambda da sua conta da AWS. Você pode vê-lo aqui :)
Nota: Você precisará configurar o aws-cli antes de usar os comandos acima (ou qualquer comando aws-cli) usando aws configure
Você pode usar o shell script disponível aqui
Se você deseja fazer o download de todas as funções na região especificada, aqui está minha solução alternativa. Eu criei um script de nó simples para baixar a função. Instale todos os pacotes npm necessários e defina sua CLI da AWS para a região desejada antes de executar o 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());
nesta linha