AWS CDK 补丁基线 - TypeScript

AWS CDK PatchBaseline - TypeScript

我正在使用 AWS CDK,库 @aws-cdk/aws-ssm and TypeScript to create PatchBaseline. I can create Patch baseline but I am not able to define any approvalRules. I have found similar thread where Alex Nelson creates approvalRules as an object using RuleProperty, he does it in Python but I am not able to replicate this procedure in TypeScript. For some reason I cannot use RuleProperty in TypeScript like Alex did in Python, more in this post

这行代码给我一个错误,即 属性 'RuleProperty' 在类型 'typeof CfnPatchBaseline' 上不存在。

const patch_baseline_rule = new ssm.CfnPatchBaseline.RuleProperty();

我花了几个小时浏览 CDK 文档,但没有发现任何与我的问题相关的有用信息。在 RuleGroupProperty 的情况下,文档根本不提供任何示例。

我的问题是,如何在 TypeScript 中键入以下代码 (Python)?

patch_baseline_rule = ssm.CfnPatchBaseline.RuleProperty(approve_after_days=0,
                                                        compliance_level='CRITICAL',
                                                        enable_non_security=True,
                                                        patch_filter_group=patch_baseline_patch_filter_group
                                                        )

patch_baseline_rule_group = ssm.CfnPatchBaseline.RuleGroupProperty(patch_rules=[patch_baseline_rule])

patch_baseline = ssm.CfnPatchBaseline(self, 'rPatchBaseline',
                                      name=f'TestPatchBaseline_Linux',
                                      description='TestPatchBaseline for Linux updates, Amazon_Linux_2 distr.',
                                      operating_system='AMAZON_LINUX_2',
                                      approved_patches_enable_non_security=True,
                                      patch_groups=['AWS-Linux-2-Test'],
                                      approval_rules=patch_baseline_rule_group,
                                      )

RulePropertyRuleGroupProperty 之类的东西在 Python 中是 类,但在 TypeScript 中,它们只是接口,因此您不会直接创建它们。相反,您创建普通的 JavaScript 对象,如果您创建的对象不正确,您的编辑器或 CDK 本身会告诉您。

如果您不知道,在 JavaScript 中使用 camelCase 名称也是常见的做法,而不是像在 Python 中那样使用 snake_case .因此,您还需要将 属性 名称指定为 camelCase

注意:this 关键字在 JavaScript/TypeScript 中使用,而在 Python 中使用 self

这是您的 Python 代码的 TypeScript 等价物:

import ssm from "@aws-cdk/aws-ssm";

const patchBaselineRule = {
  approveAfterDays: 0,
  complianceLevel: "CRITICAL",
  enableNonSecurity: true,
  patchFilterGroup: patch_baseline_patch_filter_group,
};

const patchBaselineRuleGroup = {
  patchRules: [patchBaselineRule],
};

const patchBaseline = new ssm.CfnPatchBaseline(this, "rPatchBaseline", {
  name: "TestPatchBaseline_Linux",
  description: "TestPatchBaseline for Linux updates, Amazon_Linux_2 distr.",
  operatingSystem: "AMAZON_LINUX_2",
  approvedPatchesEnableNonSecurity: true,
  patchGroups: ["AWS-Linux-2-Test"],
  approvalRules: patchBaselineRuleGroup,
});