2016-03-29 4 views
5

У меня есть приложение Python, которое подключается к базе данных, и мне бы хотелось, чтобы учетные данные db были разными, когда они запускались в локальном env (для тестирования) или внутри лямбда-функции (для производства).Как проверить, работает ли приложение Python в функции AWS лямбда?

Есть ли какой-либо путь из приложения Python, чтобы обнаружить, что он работает внутри функции лямбда?

ответ

1

Для модульного тестирования я использую структуру:

+ my_function/ 
+- __init__.py - empty files 
+- code/ 
    +- __init__.py 
    +- lambda_function.py 
+- unittest/ 
    +- __init__.py 
    +- tests.py - from ..code.lambda_function import * 

При выполнении модульных тестов с python -m my_function.unittest.tests, в lambda_function.py в __name__ == 'my_function.code.lambda_function'.

При запуске в работе Lambda __name__ == 'lambda_function'. Обратите внимание, что вы получите то же значение, если вы используете python -m my_function.code.lambda_function, поэтому вам всегда понадобится обертка.

-1

Из-за this bug можно узнать, работаете ли вы внутри Лямбда-функции AWS.

import multiprocessing 

def on_lambda(): 
    try: 
     multiprocessing.Pool() 
     on_lambda = False 
    except: 
     on_lambda = True 
    return on_lambda 

Я использовал это, чтобы успешно использовать контекстно-зависимую метрическую отчетность. Надеемся, что они не исправят ошибку в ближайшее время!

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