AWS Boto3 EC2 客户端 send_command 进程关闭

问题描述 投票:0回答:1

我正在使用 send_command() 函数在大约 100 个 ec2 实例上长时间(天)运行本地 python 脚本。

ssm_client = boto3.client('ssm', region_name = 'eu-west-1')

commands_to_execute = """cd /home/ubuntu
set -x
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>logv5.out 2>&1
python3 myscript.py"""
    
command_lines_to_execute = commands_to_execute.split('\n')

ssm_client.send_command(InstanceIds=[instance_id], DocumentName="AWS-RunShellScript", Parameters={'commands': commands_to_execute})

我还通过以下部分记录控制台输出:

set -x
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>logv5.out 2>&1

记录部分按预期工作。

然而,大约一个小时后,每个 EC2 实例中的 Python 进程就死掉了,没有任何输出。 我想也许某种虚拟 bash 会话终止,导致它启动的 python 进程终止。因此,我尝试在执行其他命令之前先启动屏幕,但这也没有帮助。 我在这里缺少什么?为什么我的 Python 进程没有任何输出就死掉了?

python amazon-web-services bash amazon-ec2 boto3
1个回答
0
投票

这是由于SSM文档上默认的命令执行超时导致的:

命令在被视为失败之前完成的时间(以秒为单位)。默认值为 3600(1 小时)。最大值为 172800(48 小时)。

发送

executionTimeout
以及您的参数。示例此处

© www.soinside.com 2019 - 2024. All rights reserved.