[英]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"],
},
},
};
maintenanceWindowRunCommandParameters
接受一個對象; 你傳遞給它一個數組,在那個數組中傳遞對象。parameters
(實際上不是Parameters
)屬性,它是一個對象; 您再次將數組傳遞給該屬性,其中包含正確的對象。我像上面一樣將變量合並為一個,因為所有的長變量名都變得非常難以管理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.