Python (执行超时)Boto3使用维护窗口注册任务

Python (执行超时)Boto3使用维护窗口注册任务,python,amazon-web-services,aws-lambda,runcommand,Python,Amazon Web Services,Aws Lambda,Runcommand,我目前正在使用AWS Lambda启动维护窗口,但发现执行超时默认设置为3600(1小时),当在更大范围内使用时,1小时会有点拖。 我试图将超时降低到900(15分钟),但尽管运行lambda时接受executionTimeout:[“900”], 维护窗口被创建,我在执行任务中得到错误: 失败:“指定的参数不完整或无效。” 以下是我正在尝试的代码片段: reg_taskmw_res = ssm_client.register_task_with_maintenance_wind

我目前正在使用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。 我尝试过多种方法,但都没有用。
谢谢你的帮助

事实证明,内置的AWS RunPatchBaseline文档此时不允许您配置自定义执行超时(令人惊讶)。它允许您配置的超时是传递超时,但执行超时是硬编码的,您不能更改它。因此,要使用不同的执行超时,您必须创建自己的自定义文档,该文档允许您进行设置。我向AWS支持人员提出了相同的问题,得到了以下答案:

AWS提供的AWS RunPatchBaseline文档没有 executionTimeout作为可配置参数内置,并且 硬编码7200分钟:

[美国焊接学会基线第34-37行] “操作”:“aws:runPowerShellScript”, “名称”:“修补程序窗口”, “投入”:{ “timeoutSeconds”:7200

您可以在这里创建自己的自定义文档并添加 参数本身,这将允许您配置执行 除了传递超时之外,还有超时,这是控制台所需要的 条目用于。为此,您可以创建新的自定义文档 在现有[1]的基础上,添加以下修改:

在第5行插入: 替换timeoutSeconds输入: 现有的: 新的 我测试了这个,它接受了 executionTimeout参数。希望这有帮助

参考文献:[1]复制文档-


我认为可能是这样的,并且已经这样做了。但我不确定这在以后的文档更新中会如何。如果AWS更改原始AWS RunPatchBaseline,我想届时我希望他们能够添加一个参数来更改执行时间。感谢您的帮助Shawn,为我节省了重新定位wher的时间e我需要把所有东西都放好!(并确认我做的是对的!)祝你好运,Gary。以防万一其他人遇到这个问题:-有两个部分,一个用于windows,一个用于linux。-如果你愿意,可以保留默认值为7200,正如Shawn给出的方法,允许你将参数添加到lambda以更改你想要的。(这必须在TaskInvocationParameters->RunCommand->Parameters下,与操作位置相同:[‘安装’])-最后,对于那些希望增加时间的人,这也可能达到172800(我相信)我希望这能像我一样帮助人们!再次感谢@Shawn
  "executionTimeout": {
  "type": "String",
  "default": "900",
  "description": "(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 900 (15 mins). Maximum is 172800 (48 hours).",
  "allowedPattern": "([1-9][0-9]{0,4})|(1[0-6][0-9]{4})|(17[0-1][0-9]{3})|(172[0-7][0-9]{2})|(172800)"
},
  "action": "aws:runPowerShellScript",
  "name": "PatchWindows",
  "inputs": {
    "timeoutSeconds": 7200,
  "action": "aws:runPowerShellScript",
  "name": "PatchWindows",
  "inputs": {
    "timeoutSeconds": "{{executionTimeout}}",