请参考以下代码段:
import awsgi
import json
from flask import (
Flask,
jsonify,
request
)
app = Flask(__name__)
@app.route('/')
def index():
return jsonify(status=200, message='OK')
@app.route('/tester')
def tst():
rule = request.url_rule
if 'tester' in rule.rule:
return {'status':200, 'message':'test'}
def lambda_handler(event, context):
test = (awsgi.response(app, event, context))
for key, value in test.items():
if key == 'message':
call = value
return {
'body': json.dumps(test)
}
现在在调用变量中,我们有值'test'。 此“测试”也是我要调用的另一个lambda中的方法的名称。 有人可以帮我吗 谢谢你
答案 0 :(得分:0)
每个AWS Lambda函数通过定义为 Handler 的函数都有一个入口点。
当调用AWS Lambda函数时,将调用Handler函数。调用Lambda函数时,无法“调用”另一个函数。
但是,您可以向Handler函数添加一些逻辑,以检查传入的event
并检查测试情况。然后,处理程序函数可以调用test()
函数。例如,在event
上添加一个"Test": "true"
条目,然后让Handler函数检查该条目,如果存在,则调用test()
。
答案 1 :(得分:0)
我认为您只是想给另一个lambda打电话。
这就是您要寻找的,这就是您的操作方法。
import json
import boto3
from flask import (
Flask,
jsonify,
request
)
import awsgi
client = boto3.client('lambda')
def lambda_handler(event, context):
test = 'other-function-name'
response = client.invoke(
FunctionName=test,
InvocationType='RequestResponse',
Payload=json.dumps({})
)
return {
...
'body': json.dumps(response)
....
}
如果您不想等待其他lambda完成,则可以使用InvocationType='RequestResponse'
希望这会有所帮助。