繁体   English   中英

我们可以通过 AWS SSM 作为后台进程运行命令吗?

[英]Can we run command as background process through AWS SSM?

我正在尝试同步一个 S3 存储桶,这需要将近 3 个小时才能完全同步。

同步bucket.sh:

nohup aws s3 sync "$source_bucket/$folder/" "s3://$destination_bucket/" \
        --profile abc --acl bucket-owner-full-control --sse "aws:kms" \
        --sse-kms-key-id "$KEY_ARN" > /var/log/$folder.log 2>&1 &

echo "Successfully triggered the sync job"

我希望使用 AWS SSM 发送命令触发同步作业,如下所示:

触发器.sh:

COMMAND=$(aws ssm send-command --document-name "AWS-RunShellScript" \
            --targets "Key=instanceids,Values=${RECOVERY}"  \
            --parameters '{"executionTimeout":["10800"],"commands":["/opt/scripts/sync-bucket.sh"]}' \
            --output-s3-bucket-name "some-bucket" \
            --timeout-seconds 10800 \
            | jq -r '.Command.CommandId')

我的观察是 SSM 在将执行标记为“成功”之前等待此后台作业完成。 有没有办法我们可以只触发后台作业并使 SSM 完成执行而不必等待后台作业完成?

或者有没有更好的方法来做到这一点? 我基本上是尝试在此处自动化该过程,并且很高兴让作业按需在后台运行,而无需登录到实例并手动运行命令。

谢谢你的时间。

问题不在于 SSM 正在等待您的后台命令完成,而是您的命令实际上并未放入后台,因为您的nohup命令等待输入。 要修复,请用nohup whatever_your_command_is & nohup whatever_your_command_is < /dev/null 2> /dev/null > /dev/null &替换nohup whatever_your_command_is & nohup whatever_your_command_is < /dev/null 2> /dev/null > /dev/null &

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM