【发布时间】:2018-08-21 22:58:10
【问题描述】:
我有一个简单的 lambda 函数,它位于以下端点:
https://******.execute-api.eu-west-2.amazonaws.com/lambda/add?x=1&y=2
AWS Chalice 用于在此处添加简单的端点。
@app.route('/{exp}', methods=['GET'])
def add(exp):
app.log.debug("Received GET request...")
request = app.current_request
app.log.debug(app.current_request.json_body)
x = request.query_params['x']
y = request.query_params['y']
if exp == 'add':
app.log.debug("Received ADD command...")
result = int(x) + int(y)
return {'add': result}
基本上,它检查path 是否等于add 并将query_params 中的两个值相加。
现在,我正在尝试在另一个 lambda 中调用此 lambda。
我的问题:
如何使用 boto3 lambda 客户端将 path 和 query_params 传递给我的原始 lambda 函数?
到目前为止我所尝试的:
我在policy.json 文件中添加了两行,允许我调用原始函数。
我在 StackOverflow 上看到了很多类似的问题,但大多数都将有效负载作为 json 传递。
@app.route('/')
def index():
lambda_client = boto3.client('lambda')
invoke_response = lambda_client.invoke(
FunctionName="function-name",
InvocationType="RequestResponse"
)
app.log.debug(invoke_response['Payload'].read())
提前谢谢你!
【问题讨论】:
-
你可以只向 API 端发送一个 post 请求而不是调用吗?
-
@SudharsanSivasankaran,是的,我可以。但如果可能的话,我想使用 boto3 来调用它。我想以后我想在我原来的 lambda 函数中添加身份验证机制(例如使用 AWS Cognito),这样会容易得多。
标签: python amazon-web-services aws-lambda boto3