【问题标题】:AWS Lambda Handler error - Syntax error in module 'index': [closed]AWS Lambda 处理程序错误 - 模块“索引”中的语法错误:[关闭]
【发布时间】:2017-10-20 09:35:19
【问题描述】:

我正在尝试使用 RunTime 作为“Python 3.6”编写我的第一个 Lambda 函数。 以下是创建函数时的选择: 角色 - 选择自定义角色。 现有角色 - Lambda 基本执行 Python代码如下:

import json
def index_handler(event, context):
data = '{"Type": "SubscriptionConfirmation2","MessageId": 
"123","SubscribeURL": "https://www.google.com"}'
data1 = json.loads(data)
print (data1['Type'])
if data1['Type']  ==  "SubscriptionConfirmation":
var=data1['SubscribeURL']
elif data1['Type']  ==  "Notification" and data1['SubscribeURL'] == var and 
var != "":
var=data1['SomeOtherProperty']
else:
return "Invalid JSON input"
return var

执行此操作时,我遇到以下错误:

{
"errorMessage": "Bad handler 'index_handler'" 
}

日志输出:

START RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a Version: $LATEST
Bad handler 'index_handler': not enough values to unpack (expected 2, got 1)

END RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a
REPORT RequestId: 3b263d82-b58c-11e7-aa6f-37f006380a9a  Duration: 0.58 ms   
Billed Duration: 100 ms     Memory Size: 1280 MB    Max Memory Used: 22 MB  

请告诉我如何解决此错误并成功运行我的第一个 lambda 函数?执行后,我的代码目的是获取 HTTPrequests 然后读取它的 json 值(目前我已经存储在一个变量中)

以下是 AWS lambda 函数的快照:

【问题讨论】:

  • 这看起来像 Python 语法吗?我建议你阅读官方Python tutorial。读到这里,您实际上会发现 Python 没有像这样使用 { },也没有使用 ;,而且缩进有点相关!
  • 较早的python代码已在在线python编译器中成功测试-repl.it/Mwpx但我现在已经按照Unglückspilz提供的解决方案编辑了主要问题中的代码。

标签: python amazon-web-services lambda handler


【解决方案1】:

您正在尝试在 python lambda 函数中使用 javascript。查看创建函数时可用的 python 示例。处理程序签名应该是def lambda_handler(event, context),结果只是从处理程序返回(没有回调)。

编辑:您的代码仍然充满错误并且是无效的 python 代码。这是您发布的内容的修改版本,它应该适用于带有 lambda_function.index_handler 处理程序的 Python 运行时 lambda。

import json

def index_handler(event, context):
    data = '{"Type": "SubscriptionConfirmation2","MessageId": "123","SubscribeURL": "https://www.google.com"}'
    data1 = json.loads(data)

    print (data1['Type'])
    if data1['Type']  ==  "SubscriptionConfirmation":
        var=data1['SubscribeURL']
    elif data1['Type']  ==  "Notification" and data1['SubscribeURL'] == var and var != "":
        var=data1['SomeOtherProperty']
    else:
        return "Invalid JSON input"

    return var

【讨论】:

  • 感谢您的回复。我已根据您的语法对代码进行了更改,并在上述主要问题的代码中进行了编辑。仍然出现相同的错误 - 模块“索引”中的语法错误:无效语法(index.py,第 1 行)。请帮忙!
  • 您的代码充满了错误。正如我所说,在创建 lambda 函数时使用提供给您的内置示例之一并从那里开始
  • 试过了,没有运气!我之前的代码也使用在线 python 编译器repl.it/Mwpx 进行了测试。无论如何,我已经使用您再次提供的代码以及新错误 - “errorMessage”:“Bad handler 'index_handler'”编辑了主要问题中的代码。我还在主要问题中附加了来自我的 AWS 门户的图像快照。请检查。
  • 处理程序的语法是FILE_NAME.HANDLER_FUNCTION_NAME,从您更新中的屏幕截图来看,您的文件名是index_handler.py。因此,它应该在处理程序文本框中读取index_handler.index_handler 而不仅仅是index_handler
  • 非常感谢。这解决了这个问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2019-05-19
  • 2019-11-01
相关资源
最近更新 更多