Я новичок в CDK и столкнулся с проблемой при создании коллекции ресурсов внутри стека CDK.
Я заметил, что внутри for l oop createRule () даже не похоже, запускается, потому что я ранее сделал ошибку в CDK внутри createRule (использовал токен в идентификаторе), который даже не был обнаружен, пока я не вызвал createRule () из l oop.
Должен ли этот l oop работать? Могу ли я получить какой-нибудь совет о том, как устранить неполадки, почему он не работает или не создает ресурсы, даже если на карте есть содержимое?
Вот упрощенная версия того, что происходит:
export class Stack extends Cdk.Stack {
construct(scope: ... , id: string, props?: Cdk.StackProps) {
const somePrefix: string = new Cdk.CfnParameter(this, 'SomePrefix', {...}).valueAsString;
... // some other resources ... /
let someMap = new Map<string, string[]>();
someMap.set("ABC", ["AB", "CD", "EF", "GH", "IJ"]);
someMap.set("XYZ", ["BLAH"]);
// this runs and creates the resource as expected
this.createRule(this, somePrefix, "ARGH", "MI");
for (let x in someMap.keys()) {
for (let y in someMap.get(x)) {
// this seems like it doesn't create anything
this.createRule(this, somePrefix, x, y);
}
}
}
createRule(scope: Cdk.Construct, somePrefix: string, x: string, y: string): Rule {
const someLambda: string = Cdk.Fn.importValue(
`${somePrefix}someLambda`
);
const someLambdaHandler = Lambda.Function.fromFunctionArn(scope, "SomeLambdaHandler", someLambda);
const someEvent = {
queryStringParameters: {
...
}
};
const someTarget = new Targets.LambdaFunction(someLambdaHandler, {
event: RuleTargetInput.fromObject(someEvent)
});
return new Rule(scope, `lambdarule-${x}-${y}`, {
enabled: true,
schedule: Schedule.cron({minute: "30"}),
targets: [realmCountryFunctionTarget],
ruleName: `SomeRule-${somePrefix}${x}-${y}`
})
}