使用现有调用在另一个AWS Lambda中调用函数

时间:2019-12-18 05:34:02

标签: python amazon-web-services flask aws-lambda

请参考以下代码段:

    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中的方法的名称。 有人可以帮我吗 谢谢你

2 个答案:

答案 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'

希望这会有所帮助。