typescript AWS CDKAssert-查看堆栈中的单个资源

iqxoj9l9  于 2023-01-27  发布在  TypeScript
关注(0)|答案(1)|浏览(245)

当前情况:

1.我有一个包含11个不同NodejsFunction的文件。我希望使用CDK Template编写Assert。
1.我有代码检查整个堆栈,并说“有Lambda处理程序吗?":template.hasResourceProperties("AWS::Lambda::Function", { Handler: "index.handler" }))

要求:

如何确保每个NodejsFunction函数都有Handler: "index.handler"?我可以从堆栈中缩小到特定的public readonly lambdaExample: NodejsFunction,还是Map堆栈中的服务?

当前测试:

import { Template } from "aws-cdk-lib/assertions";
import { createStacks } from "../../bin/template";

    describe.only("lambdaStack", () => {
      let allStacks, template: Template;
      beforeAll(async () => {
        allStacks= await createStacks(true);
        template = Template.fromStack(allStacks.lambdaStack);
      });
    
      it("should have Handler = 'handler'", () => template.hasResourceProperties("AWS::Lambda::Function", { Handler: "index.handler" }));
    });
mm5n2pyu

mm5n2pyu1#

要Assert每个资源都具有所需的属性,请使用allResourceProperties:

template.allResourcesProperties("AWS::Lambda::Function", {
  Handler: "index.handler",
});

要Assert给定资源(按逻辑ID)具有所需属性,请筛选并Assert:

expect(
  Object.entries(template.findResources("AWS::Lambda::Function")).filter(
    ([k, v]) =>
      k.match(/^LambdaExample[A-F0-9]{8}$/) &&
      v["Properties"]?.["Handler"] === "index.handler"
  )
).toHaveLength(1);

相关问题