in lambda-layers/lib/get-regions.ts [44:84]
export async function getRegions(): Promise<Array<string>> {
const ssm = new SSMClient({
region: 'us-west-2',
});
let moreData = true;
let data = await ssm.send(new GetParametersByPathCommand({
Path: '/aws/service/global-infrastructure/services/lambda/regions',
}));
const regions: Array<string> = []
while(moreData) {
if (!data.Parameters) {
throw new Error('Failed to get regions from SSM');
}
const parameters = data.Parameters;
for (const parameter of parameters) {
if (!parameter.Value) {
console.error(`No value found for ${parameter}`);
continue;
}
if (isValidRegion(parameter.Value)) {
regions.push(parameter.Value);
} else {
console.log(`Skipping ${parameter.Value}`)
}
}
if (data.NextToken) {
data = await ssm.send(new GetParametersByPathCommand({
Path: '/aws/service/global-infrastructure/services/lambda/regions',
NextToken: data.NextToken,
}));
} else {
moreData = false;
}
}
return regions;
}