Как передать аргументы командной строки в функцию 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, которые загружают ядро ​​и выполняют то, что вы хотите, чтобы команда выполняла.

Другие вопросы по тегам