Ich habe eine Lambda-Funktion in AWS (Python) mit ".zip hochladen" erstellt. Ich habe diese Dateien verloren und muss einige Änderungen vornehmen. Gibt es eine Möglichkeit, diese .zip-Datei herunterzuladen?
Ich habe eine Lambda-Funktion in AWS (Python) mit ".zip hochladen" erstellt. Ich habe diese Dateien verloren und muss einige Änderungen vornehmen. Gibt es eine Möglichkeit, diese .zip-Datei herunterzuladen?
Antworten:
Ja!
Navigieren Sie zu Ihren Lambda-Funktionseinstellungen und oben rechts befindet sich eine Schaltfläche mit dem Namen " Actions
". export
Wählen Sie im Dropdown-Menü " " und klicken Sie im Popup auf "Bereitstellungspaket herunterladen". Die Funktion wird in einer .zip
Datei heruntergeladen .
code
dort sehen, was Sie finden sollten location
. Dies ist eine vorgegebene URL, über die Sie die Funktion herunterladen können. Die URL ist 10 Minuten gültig.
.zip
Erweiterung hatte, also nur eine einfache Datei in Windows. Die Lösung besteht darin, die Erweiterung nach dem Herunterladen manuell zum Dateinamen hinzuzufügen.
Update: Link zum Skript von Sambhaji-Sawant hinzugefügt . Tippfehler behoben, Antwort und Skript basierend auf Kommentaren verbessert!
Sie können aws-cli verwenden , um die Zip -Datei eines beliebigen Lambda herunterzuladen.
Zuerst müssen Sie die URL zur Lambda-Postleitzahl erhalten
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
Dann müssen Sie wget / curl verwenden, um die Zip von der URL herunterzuladen.
$ wget -O myfunction.zip URL_from_step_1
Zusätzlich können Sie mit alle Funktionen in Ihrem AWS-Konto auflisten
$ aws lambda list-functions
Ich habe ein einfaches Bash-Skript erstellt, um alle Lambda-Funktionen parallel von Ihrem AWS-Konto herunterzuladen. Sie können es hier sehen :)
Hinweis: Sie müssen aws-cli einrichten, bevor Sie die obigen Befehle (oder einen beliebigen aws-cli-Befehl) verwenden können aws configure
Sie können das hier verfügbare Shell-Skript verwenden
Wenn Sie alle Funktionen in der angegebenen Region herunterladen möchten, ist dies meine Problemumgehung. Ich habe ein einfaches Knotenskript zum Herunterladen der Funktion erstellt. Installieren Sie alle erforderlichen npm-Pakete und stellen Sie Ihre AWS-CLI auf die gewünschte Region ein, bevor Sie das Skript ausführen.
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());
dieser Linie