我目前正在使用AWS Lambda来启动维护窗口,但是我发现执行超时默认设置为3600 (1小时),而在更大的范围内使用时,1小时往往会拖长一些。我试图将超时时间降低到900 (15分钟),但尽管在运行lambda时接受executionTimeout:"900“,但将创建维护窗口,并得到执行任务中的错误:”指定的参数不完整或无效。“
下面是我正在尝试的代码片段:
reg_taskmw_res = ssm_client.register_task_with_maintenance_window(
WindowId=window_id,
Targets=[
{
'Key': 'WindowTargetIds',
'Values': [
reg_targetmw_res['WindowTargetId']
]
},
],
TaskArn='AWS-RunPatchBaseline',
TaskType='RUN_COMMAND',
TaskInvocationParameters={
'RunCommand': {
'DocumentHash': DocHash,
'DocumentHashType': 'Sha256',
'Parameters': {
'Operation': ['Scan'],
'executionTimeout': ['900']
},
'TimeoutSeconds': 60
},
},
Priority=123,
MaxConcurrency='3',
MaxErrors='3'
)
如果我不使用executionTimeout,那么维护窗口就可以工作,但是有3600个超时。我已经尝试了多种方法来做这件事,并且找了很久也没有用。谢谢你的帮助!
发布于 2019-12-03 17:47:14
事实证明,内置的文档不允许您在此时配置自定义的执行超时(令人惊讶)。它允许您配置的超时是传递超时,但执行超时是硬编码的,您不能更改它。因此,要使用不同的执行超时,您必须创建您自己的自定义文档,允许您设置它。我向AWS支持部门提出了同样的问题,并得到了以下答案:
--AWS提供的文档没有将executionTimeout内置作为可配置参数,并在7200分钟内完成了硬编码:
action ##第34-37行“##”:“##:runPowerShellScript”,"name":"PatchWindows","inputs":{ "timeoutSeconds":7200,
您可以在这里创建自己的自定义文档并自己添加参数,这将允许您在交付超时之外配置执行超时,而交付超时正是控制台条目的用途。为此,您可以根据现有的1创建一个新的自定义文档,然后添加以下修改:
在第5行插入:
"executionTimeout":{“executionTimeout”:“executionTimeout”:“executionTimeout”,“默认”:" 900 ",“描述”:“(可选)命令在被认为失败之前完成的时间(秒)。默认值为900 (15分钟)。最大值为172800 (48小时)。”,"allowedPattern":allowedPattern },
替换timeoutSeconds输入:
现有:
“操作”:"aws:runPowerShellScript“、”名称“:"PatchWindows”、“输入”:{ "timeoutSeconds":7200,
新的
“操作”:"aws:runPowerShellScript“、”名称“:"PatchWindows”、“输入”:{ "timeoutSeconds":“{{executionTimeout}”,
我对此进行了测试,它接受executionTimeout参数。我希望这能帮到你!
参考资料:1份文件副本- https://docs.aws.amazon.com/systems-manager/latest/userguide/copy-document.html
https://stackoverflow.com/questions/59160213
复制相似问题