diff --git a/worker/worker/lambda_warmer.py b/worker/worker/lambda_warmer.py new file mode 100644 index 0000000..4292be8 --- /dev/null +++ b/worker/worker/lambda_warmer.py @@ -0,0 +1,12 @@ +import requests + +from common import logger + + +def heat(event, context): + timeout = 1 + try: + resp = requests.get("https://iap-internal.9c.gg/ping?from=warmer", timeout=timeout) + print(resp.text) + except requests.exceptions.Timeout: + logger.error(f"Ping timed out after {timeout} seconds!") diff --git a/worker/worker_cdk_stack.py b/worker/worker_cdk_stack.py index 665858a..27f25bd 100644 --- a/worker/worker_cdk_stack.py +++ b/worker/worker_cdk_stack.py @@ -275,3 +275,19 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: environment=env, memory_size=512, ) + + lambda_warmer = _lambda.Function( + self, f"{config.stage}-9c-iap-lambda-warmer", + function_name=f"{config.stage}-9c-iap-lambda-warmer", + runtime=_lambda.Runtime.PYTHON_3_10, + description=f"Warm lambda instance to response fast", + code=_lambda.AssetCode("worker/worker", exclude=exclude_list), + handler="lambda_warmer.heat", + layers=[layer], + role=role, + vpc=shared_stack.vpc, + timeout=cdk_core.Duration.seconds(10), + environment=env, + memory_size=128, + ) + minute_event_rule.add_target(_event_targets.LambdaFunction(lambda_warmer))