How to get all parameter name value pairs with a single call to AWS-Parameters-and-Secrets-Lambda-Extension (arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension:4)
i.e. Equivalent call to this AWS CLI to non Lambda Layer SSM Parameter Store:
aws ssm get-parameters-by-path --path "/service1/prod" --recursive
Instead of this piece of code (c# / .net6) where for each key a request/response is being made:
var stage = "prod";
var awsSessionToken = Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN");
var request = new RestRequest(
"http://localhost:2773/systemsmanager/parameters/get",
Method.Get
)
.AddHeader("X-Aws-Parameters-Secrets-Token", awsSessionToken)
.AddQueryParameter("withDecryption", true);
Log.Information("{@Request}", request);
var keys = new string[] {
$"/service1/{stage}/key1",
$"/service1/{stage}/key2",
$"/service1/{stage}/key3",
$"/service1/{stage}/key4",
$"/service1/{stage}/key5",
$"/service1/{stage}/key6",
$"/service1/{stage}/key7",
$"/service1/{stage}/key8",
$"/service1/{stage}/key9",
$"/service1/{stage}/key10",
$"/service1/{stage}/key11",
};
foreach (var key in keys)
{
var _request = request
.AddOrUpdateParameter("name", key, ParameterType.QueryString);
var _response =
await restClient.ExecuteGetAsync<ParameterResponse>(_request);
Parameters.Add(new Parameter(_response.Data.Parameter.Name,
_response.Data.Parameter.Value
)
);
}
Please note that I can implement the flow in C#, I just can't find the specifics of the API more detailed than in here.