如何配置serverless.yml以正确读取Python布尔值?

时间:2018-10-04 06:51:08

标签: python-3.x serverless-framework

我的serverless.yml文件如下:

environment:
IS_OFFLINE: False
DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}
iamRoleStatements: ${file(config/iam.yml)}

但是,当我尝试评估IS_OFFLINE变量时,它会将其解析为字符串,从而使值真实,尽管已将其设置为False

>>>> print(os.environ.get('IS_OFFLINE'))
'IS_OFFLINE': 'false'

如果有配置.yml文件的另一种方法,我宁愿避免这种情况(在所有语言的Python中使用)。

if os.environ.get('IS_OFFLINE') == "true":

1 个答案:

答案 0 :(得分:0)

2021 年,true 中的 false/serverless.yml 变量在 Python 中仍会转换为 'true'/'false' 字符串。 您可以使用 strtobool 中的 distutils.util 来安全地解析它们:

from distutils.util import strtobool

if strtobool(environ.get("MY_VAR")):

这比字符串比较更简洁,适用于许多真/假同义词,如是/否、1/0、开/关。见https://docs.python.org/3/distutils/apiref.html#distutils.util.strtobool

未定义的变量将评估为 False

from distutils.util import strtobool

if strtobool(environ.get("MY_UNDEFINED_VAR")):
    # this will NOT be executed
    print('var is undefined')