in src/rules/dynamodb/DynamoDBAutoScalingEnabled.ts [87:123]
function isMatchingScalableTarget(
node: CfnScalableTarget,
dimension: string,
tableLogicalId: string,
tableName: string | undefined,
indexNames: string[]
): number {
if (node.serviceNamespace === 'dynamodb') {
let scalableDimension = '';
const resourceId = JSON.stringify(Stack.of(node).resolve(node.resourceId));
for (let i = 0; i < indexNames.length; i++) {
const regexes = Array<string>();
const indexName = indexNames[i];
if (indexName === '') {
regexes.push(`${tableLogicalId}.*`);
if (tableName !== undefined) {
regexes.push(`${tableName}.*`);
}
scalableDimension = `dynamodb:table:${dimension}`;
} else {
regexes.push(`${tableLogicalId}.*index\/${indexName}(?![\\w\\-_\\.])`);
if (tableName !== undefined) {
regexes.push(`${tableName}.*index\/${indexName}(?![\\w\\-_\\.])`);
}
scalableDimension = `dynamodb:index:${dimension}`;
}
const regex = new RegExp(regexes.join('|'), 'gm');
if (
node.scalableDimension === scalableDimension &&
regex.test(resourceId)
) {
return i;
}
}
}
return -1;
}