多别名场景下,如何导出AWS Lambda的特定旧版本?
如何导出AWS Lambda的旧版本(非$LATEST)
AWS控制台目前确实不支持直接导出已发布的Lambda版本,仅能导出$LATEST版本。要导出版本#1或#2这类已发布的旧版本,你可以通过AWS CLI或AWS SDK实现,以下是具体方法:
方法1:使用AWS CLI(推荐)
通过CLI可以直接获取对应版本的部署包下载链接,步骤如下:
确保已安装并配置好AWS CLI(已配置对应权限)。
执行以下命令获取目标版本的预签名下载URL:
- 通过版本号导出:
aws lambda get-function --function-name <你的Lambda函数名> --qualifier 1 --query 'Code.Location' --output text - 通过别名导出(比如PRD指向版本#1):
aws lambda get-function --function-name <你的Lambda函数名>:PRD --query 'Code.Location' --output text
替换
<你的Lambda函数名>为实际函数名称,--qualifier参数可以填版本号(如1、2)或别名(如PRD、SBX)。- 通过版本号导出:
命令执行后会返回一个有效期为10分钟的预签名URL,直接复制到浏览器或用
curl命令即可下载对应的部署包(.zip格式)。
方法2:使用AWS .NET SDK(适合C#开发场景)
如果你习惯用代码实现,可以借助AWS Lambda的.NET SDK获取下载链接:
首先安装Amazon.Lambda NuGet包,然后使用以下代码示例:
using Amazon.Lambda; using Amazon.Lambda.Model; using System.Net.Http; var lambdaClient = new AmazonLambdaClient(); var request = new GetFunctionRequest { FunctionName = "<你的Lambda函数名>", Qualifier = "1" // 可替换为版本号或别名,如"PRD" }; var response = await lambdaClient.GetFunctionAsync(request); var downloadUrl = response.Code.Location; // 下载部署包 using var httpClient = new HttpClient(); var zipContent = await httpClient.GetByteArrayAsync(downloadUrl); // 将zipContent写入本地文件 await File.WriteAllBytesAsync("lambda-version-1.zip", zipContent);
说明
下载得到的是Lambda的部署包(.zip文件),对于C#构建的Lambda,解压后可以看到编译后的程序集(.dll文件)及相关依赖,符合你无法通过控制台查看代码的场景。
内容的提问来源于stack exchange,提问作者infernal_lad
相关产品推荐
相关产品推荐

