我正在使用 AWS CDK、库 @aws-cdk/aws-ssm 和 TypeScript 来创建 CfnMaintenanceWindowTask。我正在使用来自AWS 文档的 cfn示例代码,例如“使用维护窗口目标 ID 创建以实例为目标的运行命令任务”。我尝试转换为 CDK 的 JSON cfn 代码示例。
"TaskInvocationParameters": {
"MaintenanceWindowRunCommandParameters": {
"Parameters": {
"Operation": [
"Install"
],
"RebootOption": [
"NoReboot"
]
}
}
在 CfnMaintenanceWindowTask 对象中,我想使用下面的 TypeScript 代码 定义属性taskInvocationParameters 。问题是我不允许这样做,因为属性 taskInvocationParameters 出现以下错误:
" TS2322: 类型 '{ maintenanceWindowRunCommandParameters: { 参数: { 操作: string[]; BaselineTags: { key: string; values: string[]; }[]; RebootOption: string[]; }[]; }[]; } ' 不可分配给类型 'IResolvable | TaskInvocationParametersProperty | undefined'。 ”
我的实现可能是错误的,但我无法看到问题可能出在哪里。
const maintenanceWindowRunCommandParametersWindowsParametersBaselineTags = {
key: 'PatchBaseline',
values: [
'Windows-Server-CritImp-7app-CDK'
]
};
const maintenanceWindowRunCommandParametersWindowsParameters = {
Operation: [
'Install'
],
BaselineTags:[
maintenanceWindowRunCommandParametersWindowsParametersBaselineTags
],
RebootOption: [
'NoReboot'
]
};
const maintenanceWindowRunCommandParametersWindows = {
Parameters: [
maintenanceWindowRunCommandParametersWindowsParameters
],
};
const taskInvocationParametersRunPatchBaselineAssociationWindows = {
maintenanceWindowRunCommandParameters: [
maintenanceWindowRunCommandParametersWindows
]
};
const maintenanceWindowTaskWindowsServer = new ssm.CfnMaintenanceWindowTask(this, 'Maintenance-task-Windows-CDK',{
name: 'Maintenance-task-Windows-CDK',
priority: 0,
maxConcurrency: '2',
maxErrors: '2',
taskType: 'RUN_COMMAND',
taskArn: 'AWS-RunPatchBaselineAssociation',
taskInvocationParameters: taskInvocationParametersRunPatchBaselineAssociationWindows,
windowId: maintenanceWindowEveryDayScanOnly.ref,
targets: [
maintenanceWindowTaskWindowsServersTargets
]
});
更新
我已经实现了来自@Hcaertnit 的代码。部署后,我收到以下错误。
失败的资源:10:42:06 | CREATE_FAILED | AWS::SSM::MaintenanceWindowTask | Maintenance-task-Windows-CDK (MaintenancetaskWindowsCDK) 无法
java.lang.String
在 [Source: UNKNOWN; 处反序列化超出 START_OBJECT 令牌的实例;行:-1,列:-1](通过引用链:com.amazonaws.services.ssm.model.RegisterTaskWithMaintenanceWindowRequest["TaskInvocationParameters"]->com.amazonaws.services.ssm.model.MaintenanceWindowTaskInvoc ationParameters["MaintenanceWindowRunCommandParameters"] ->com.amazonaws.services.ssm.model.MaintenanceWindowRunCommandParameters["Parameters"]->java.util.LinkedHashMap["BaselineTags"]->java.util.ArrayList[0])