无法从Amazon Connect调用Python Lambda函数问题求助
解决Amazon Connect调用Python Lambda报错的问题
看起来你的问题核心出在Lambda返回的格式不符合Amazon Connect的要求——虽然CLI调用Lambda时直接返回字符串没问题,但Connect对Lambda的响应格式有严格的规范,而你的Node.js函数应该刚好符合了这个规范,所以能正常运行。
问题分析
你的Python Lambda目前直接返回了字符串'hello',但Amazon Connect期望Lambda返回一个JSON序列化的对象,而且这个对象需要包含Connect能解析的结构。当返回非JSON格式的内容时,Connect会判定调用失败,抛出你看到的The Lambda Function Returned An Error错误。
另外,你的代码里还有一个小隐患:当how_many_times不大于0时,函数会返回None,而返回None同样不符合Connect的格式要求,也会触发报错。
修改后的代码
把Lambda的返回改成符合要求的JSON结构,比如返回包含statusCode和自定义业务字段的字典(Lambda运行时会自动将字典序列化为JSON):
import os def lambda_handler(event, context): what_to_print = 'hello' how_many_times = 1 # 确保变量值有效 if what_to_print and how_many_times > 0: for i in range(how_many_times): print(f"what_to_print: {what_to_print}.") # 返回符合Amazon Connect要求的JSON结构 return { 'statusCode': 200, 'message': what_to_print } # 即使逻辑不满足,也要返回合法的响应 return { 'statusCode': 400, 'message': 'Invalid input parameters' }
为什么这样改?
- JSON格式响应:Amazon Connect要求Lambda返回的是可被JSON解析的对象,返回字典的话,Lambda运行时会自动将其序列化为JSON字符串,Connect就能正确解析了。
- 明确的状态码:返回
statusCode可以让Connect清楚区分调用成功(200)和失败(400)的场景,避免模糊的错误判定。 - 避免返回None:即使判断条件不满足,也要返回一个合法的响应结构,而不是
None,否则同样会触发Connect的报错逻辑。
你可以测试修改后的Lambda,再通过Amazon Connect调用,应该就能正常工作了。
内容的提问来源于stack exchange,提问作者Gulshan
相关产品推荐
相关产品推荐

