「upload .zip」を使用してAWS(Python)でラムダ関数を作成しました。これらのファイルを失い、変更を加える必要があります。その.zipをダウンロードする方法はありますか?
「upload .zip」を使用してAWS(Python)でラムダ関数を作成しました。これらのファイルを失い、変更を加える必要があります。その.zipをダウンロードする方法はありますか?
回答:
はい!
ラムダ関数の設定に移動すると、右上に「Actions
」というボタンがあります。ドロップダウンメニューで[]を選択export
し、ポップアップで[Download Deployment Package]をクリックすると、関数が.zip
ファイルにダウンロードされます。
code
そこに表示されるはずlocation
です。これは、関数のダウンロードに使用できる署名済みURLです。URLは10分間有効です。
.zip
拡張子がなかったので、Windowsでは単なるファイルでした。解決策は、ダウンロード後にファイル名に手動で拡張子を追加することです。
更新:sambhaji-sawantによるスクリプトへのリンクが追加されました。タイプミスを修正し、コメントに基づいて回答とスクリプトを改善しました!
aws-cliを使用して、任意のラムダのzipをダウンロードできます。
最初にラムダzipへのURLを取得する必要があります
$ aws lambda get-function --function-name $functionName --query 'Code.Location'
次に、wget / curlを使用して、URLからzipをダウンロードする必要があります。
$ wget -O myfunction.zip URL_from_step_1
さらに、次を使用してAWSアカウントのすべての関数を一覧表示できます
$ aws lambda list-functions
AWSアカウントからすべてのラムダ関数を並列ダウンロードする簡単なbashスクリプトを作成しました。あなたはここでそれを見ることができ ます :)
注:上記のコマンド(またはaws-cliコマンド)を使用する前に、aws-cliをセットアップする必要があります。 aws configure
特定の地域のすべての機能をダウンロードしたい場合は、こちらが私の回避策です。関数をダウンロードする簡単なノードスクリプトを作成しました。スクリプトを実行する前に、必要なすべてのnpmパッケージをインストールし、AWS CLIを必要なリージョンに設定します。
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());
。この行に