簡體   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