2017-02-08 3 views
1

В среде Serverless 1.x вы устанавливаете переменные среды в файле serverless.yml в корне службы. Я пытаюсь установить STAGE переменную, которая соответствует стадии, что служба работает в Это легко dev и prod, например, так:.Установка переменной «local» stage env в Serverless v1.x

provider: 
    name: aws 
    ... 
    stage: dev 
    environment: 
    STAGE: ${opt:stage, self:provider.stage} 

Это означает, что если --stage явно задан, то окр переменная использует это. Если это не так, используется значение по умолчанию dev.

Однако, когда я использую sls invoke local, по умолчанию будет dev, и это неверно. Каков наилучший способ сделать сцену local при вызове локально?

ответ

1

Очевидное решение: -s local. Тем не менее, это стало слишком многословным для моей симпатии, и это также увеличивает вероятность случайного развертывания на новый этап под названием local, что явно нежелательно.

Итак, я создал этот помощник Баш функции:

# Invoke serverless service 
invoke() { 
    if [ "${1}" == "local" ]; then 
     stage="local -s local" 
    else 
     stage="-s ${1}" 
    fi 

    payloads_dir="tests/payloads/" 
    if [ -z $3 ]; then 
     payload="${payloads_dir}${2}/default.json" 
    else 
     payload="${payloads_dir}${2}/${3}.json" 
    fi 

    if [ ! -f "${payload}" ]; then 
     echo $payload 
     echo "Payload does not exist." 
     return 1 
    fi 

    time --format='%e seconds' serverless invoke $stage -f $2 -p $payload 
} 

Использование: $ invoke stage function_name [payload_name]

Примеры:

$ invoke local myFunction 

будет вызывать функцию локально с полезной нагрузкой в ​​tests/payloads/myFunction/default.json при применении local этап env.

$ invoke dev myFunction my_payload 

будет вызывать развернутую функцию с этапом dev и полезной нагрузкой tests/payloads/myFunction/my_payload.json (этап окр будет правильным, если развернут сервис имеет соответствующий serverless.yml файл).

Это явно неоспоримая реализация, но не стесняйтесь модифицировать ее по своему вкусу!

Смежные вопросы