Как передать аргументы командной строки в функцию Lambda в Serverless/Bref?
Я запускаю приложение Symfony 4 (PHP) на AWS Lambda, используя Bref (который использует Serverless).
Бреф предоставляет слой для бинарного / консольного бинарника Symfony. Конфигурация без сервера для функции Lambda выглядит следующим образом:
functions:
console:
handler: bin/console
name: 'mm-console'
description: 'Symfony 4 console'
timeout: 120 # in seconds
layers:
- ${bref:layer.php-73} # PHP
- ${bref:layer.console} # The "console" layer
Используя выше, я могу запустить vendor/bin/bref cli mm-console -- mm:find-matches
бежать bin/console mm:find-matches
по лямбде.
Что делать, если я хочу запустить mm:find-matches
консольная команда по расписанию на лямбде? Я попробовал это:
functions:
mm-find-matches:
handler: "bin/console mm:find-matches"
name: 'mm-find-matches'
description: 'Find mentor matches'
timeout: 120
layers:
- ${bref:layer.php-73} # PHP
- ${bref:layer.console} # The "console" layer
schedule:
rate: rate(2 hours)
Тем не мение "bin/console mm:find-matches
"не является допустимым обработчиком. Как я могу пройти mm:find-matches
командовать bin/console
функционировать по расписанию?
1 ответ
Вы можете передать аргументы командной строки с помощью ввода события расписания следующим образом:
functions:
console:
handler: bin/console
name: 'mm-console'
description: 'Symfony 4 console'
timeout: 120 # in seconds
layers:
- ${bref:layer.php-73} # PHP
- ${bref:layer.console} # The "console" layer
events:
- schedule:
input:
cli: "mm:find-matches --env=test"
rate: rate(2 hours)
enabled: true
Хотя существует некоторая дискуссия по этому вопросу о том, является ли использование приложения консоли консоли лучшим решением, по сравнению с написанием функций PHP, которые загружают ядро и выполняют то, что вы хотите, чтобы команда выполняла.