如何通过Lambda Layer使用AWS参数与密钥扩展按路径批量获取SSM参数
用AWS参数和密钥Lambda Extension单次获取指定路径下所有SSM参数
要实现和aws ssm get-parameters-by-path --path "/service1/prod" --recursive等效的功能,你需要调用Lambda Extension的**/systemsmanager/parameters/get-by-path端点**,而非单个参数的get端点。以下是优化后的C#/.NET 6代码:
步骤1:定义响应模型类
先匹配扩展返回的响应结构,新增对应模型:
public class ParametersByPathResponse { public List<Parameter> Parameters { get; set; } = new(); } public class Parameter { public string Name { get; set; } = string.Empty; public string Value { get; set; } = string.Empty; }
步骤2:单次请求获取所有参数
替换原循环逻辑,发起一次请求即可:
var stage = "prod"; var awsSessionToken = Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN"); var request = new RestRequest( "http://localhost:2773/systemsmanager/parameters/get-by-path", Method.Get ) .AddHeader("X-Aws-Parameters-Secrets-Token", awsSessionToken) .AddQueryParameter("path", $"/service1/{stage}") .AddQueryParameter("recursive", true) .AddQueryParameter("withDecryption", true); Log.Information("{@Request}", request); var response = await restClient.ExecuteGetAsync<ParametersByPathResponse>(request); // 将返回的参数批量添加到集合 Parameters.AddRange(response.Data.Parameters);
关键说明
- 端点差异:
get-by-path是专门用于按路径批量获取参数的接口,支持递归遍历子路径,完全对应CLI的get-parameters-by-path命令 - 请求参数对应:
path:指定SSM参数的根查询路径,对应CLI的--pathrecursive:设为true时递归获取所有子路径下的参数,对应CLI的--recursivewithDecryption:设为true自动解密SecureString类型参数,和原代码逻辑保持一致
- 响应处理:返回的
Parameters字段直接包含所有匹配的参数名值对,无需逐个发起请求
内容的提问来源于stack exchange,提问作者Nae
相关产品推荐
相关产品推荐

