mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
60 lines
1.5 KiB
Python
Executable File
60 lines
1.5 KiB
Python
Executable File
import argparse
|
|
import json
|
|
import sys
|
|
from time import time
|
|
from importlib import import_module
|
|
|
|
class FakeLambdaContext(object):
|
|
def __init__(self, name='Fake', version='LATEST', timeout=6):
|
|
self.name = name
|
|
self.version = version
|
|
self.created = time()
|
|
|
|
def get_remaining_time_in_millis(self):
|
|
return (self.created - time()) * 1000
|
|
|
|
@property
|
|
def function_name(self):
|
|
return self.name
|
|
|
|
@property
|
|
def function_version(self):
|
|
return self.version
|
|
|
|
@property
|
|
def invoked_function_arn(self):
|
|
return 'arn:aws:lambda:serverless:' + self.name
|
|
|
|
@property
|
|
def memory_limit_in_mb(self):
|
|
return 1024
|
|
|
|
@property
|
|
def aws_request_id(self):
|
|
return '1234567890'
|
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
prog='invoke',
|
|
description='Runs a Lambda entry point (handler) with an optional event',
|
|
)
|
|
|
|
parser.add_argument('handler_path',
|
|
help=('Path to the module containing the handler function,'
|
|
' omitting ".py". IE: "path/to/module"'))
|
|
|
|
parser.add_argument('handler_name', help='Name of the handler function')
|
|
|
|
if __name__ == '__main__':
|
|
args = parser.parse_args()
|
|
|
|
# this is needed because you need to import from where you've executed sls
|
|
sys.path.append('.')
|
|
|
|
module = import_module(args.handler_path.replace('/', '.'))
|
|
handler = getattr(module, args.handler_name)
|
|
|
|
event = json.load(sys.stdin)
|
|
result = handler(event, FakeLambdaContext())
|
|
sys.stdout.write(json.dumps(result, indent=4))
|