Я пытаюсь настроить экземпляр EC2 с автоматической связью с определенным AWS SQS во время загрузки экземпляра. Для этого я написал сценарий запуска systemd, который выполнит сценарий оболочки.
[Unit]
Description=NewUnit
[Service]
ExecStart=/usr/local/bin/startup_script.sh
[Install]
WantedBy=default.target
Сценарий оболочки в основном измеряет использование ЦП экземпляром и отправляет эту информацию в очередь. Критическая часть, из-за которой мой план проваливается, - это строка, в которой я пытаюсь вызвать функцию aws cli 'send-message':
while true; do
CONTENT='{"vmid":{"DataType":"String","StringValue":"'$(getEC2ID)'"},"vmcpu":{"DataType":"Number","StringValue":"'$(getCPU)'"},"vmmemory":{"DataType":"Number","StringValue":"'$(getMemory)'"},"vmdisk":{"DataType":"Number","StringValue":"12345"}}'
aws sqs send-message \
--queue-url "$QUEUE_URL" \
--message-body "$CONTENT" \
--message-group-id "$GROUP_ID" \
--message-deduplication-id "$(getID)" \
# --message-attributes "$CONTENT" \ || echo "not yet" >>/usr/local/bin/startup_report.txt
done
Я предполагаю, что проблема в том, что awscli еще не готов, когда скрипт выполняется. Итак, мой вопрос на данный момент: как я могу использовать systemd, чтобы дождаться, пока awscli выполнит этот сценарий оболочки впоследствии?