簡體   English   中英

AWS CDK CfnMaintenanceWindowTask/taskInvocationParameters - TypeScript

[英]AWS CDK CfnMaintenanceWindowTask/taskInvocationParameters - TypeScript

我正在使用 AWS CDK、庫 @aws-cdk/aws-ssm 和 TypeScript 來創建 CfnMaintenanceWindowTask。 我將AWS docs 中的示例代碼用作 cfn ,例如“使用維護時段目標 ID 創建針對實例的運行命令任務”。 我試圖轉換為 CDK 的 JSON cfn 代碼示例。

"TaskInvocationParameters": {
                "MaintenanceWindowRunCommandParameters": {
                    "Parameters": {
                        "Operation": [
                            "Install"
                        ],
                        "RebootOption": [
                            "NoReboot"
                        ]
                    }
                }

在 CfnMaintenanceWindowTask 對象中,我想使用下面的 TypeScript 代碼定義屬性taskInvocationParameters 問題是我不允許這樣做,因為屬性 taskInvocationParameters 出現以下錯誤:

" TS2322: Type '{ maintenanceWindowRunCommandParameters: { 參數: { Operation: 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 | 維護任務-Windows的CDK(MaintenancetaskWindowsCDK)不能的反序列化實例java.lang.String START_OBJECT出令牌在[來源:不詳; 行:-1,列:-1](通過參考鏈:com.amazonaws.services.ssm.model.RegisterTaskWithMaintenanceWindowRequest["TaskInvocationParameters"]->com.amazonaws.services.ssm.model.MaintenanceWindowTaskInvocationParameters["MaintenanceWindowRunCommandParameters"] ->com.amazonaws.services.ssm.model.MaintenanceWindowRunCommandParameters["Parameters"]->java.util.LinkedHashMap["BaselineTags"]->java.util.ArrayList[0])

將您的前 4 個變量合並為一個,如下所示:

const taskInvocationParametersRunPatchBaselineAssociationWindows = {
    maintenanceWindowRunCommandParameters: {
        parameters: {
            Operation: ["Install"],
            BaselineTags: [
                {
                    key: "PatchBaseline",
                    values: ["Windows-Server-CritImp-7app-CDK"],
                }
            ],
            RebootOption: ["NoReboot"],
        },
    },
};
  1. maintenanceWindowRunCommandParameters接受一個對象 你傳遞給它一個數組,在那個數組中傳遞對象。
  2. 該對象有一個parameters (實際上不是Parameters )屬性,它是一個對象; 您再次將數組傳遞給該屬性,其中包含正確的對象。

我像上面一樣將變量合並為一個,因為所有的長變量名都變得非常難以管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM