forked from aws/aws-lambda-python-runtime-interface-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda_config.py
More file actions
70 lines (55 loc) · 1.95 KB
/
lambda_config.py
File metadata and controls
70 lines (55 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
"""
import os
class LambdaConfigProvider:
SUPPORTED_THREADPOLLING_ENVS = {
"AWS_Lambda_python3.12",
"AWS_Lambda_python3.13",
"AWS_Lambda_python3.14",
}
SOCKET_PATH_ENV = "_LAMBDA_TELEMETRY_LOG_FD_PROVIDER_SOCKET"
AWS_LAMBDA_RUNTIME_API = "AWS_LAMBDA_RUNTIME_API"
AWS_LAMBDA_MAX_CONCURRENCY = "AWS_LAMBDA_MAX_CONCURRENCY"
AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"
def __init__(self, args, environ=None):
self._environ = environ if environ is not None else os.environ
self._handler = self._parse_handler(args)
self._api_address = self._parse_api_address()
self._max_concurrency = self._parse_concurrency()
self._use_thread_polling = self._parse_thread_polling()
self._lmi_socket_path = self._parse_lmi_socket_path()
def _parse_handler(self, args):
try:
return args[1]
except IndexError:
raise ValueError("Handler not set")
def _parse_api_address(self):
return self._environ[self.AWS_LAMBDA_RUNTIME_API]
def _parse_concurrency(self):
return self._environ.get(self.AWS_LAMBDA_MAX_CONCURRENCY)
def _parse_thread_polling(self):
return (
self._environ.get(self.AWS_EXECUTION_ENV)
in self.SUPPORTED_THREADPOLLING_ENVS
)
def _parse_lmi_socket_path(self):
return self._environ.get(self.SOCKET_PATH_ENV)
@property
def handler(self):
return self._handler
@property
def api_address(self):
return self._api_address
@property
def max_concurrency(self):
return self._max_concurrency
@property
def use_thread_polling(self):
return self._use_thread_polling
@property
def is_multi_concurrent(self):
return self._max_concurrency is not None
@property
def lmi_socket_path(self):
return self._lmi_socket_path