我对 AWS 中的文档感到非常困惑。
我尝试了什么
- 使用区域 us-west-2 注册了 AWS 账户
- 创建了一个名为 helloworld 的 Lambda 函数
- 在内部创建了一个名为
hello_world
的处理程序。
- 选定的操作 > 配置测试事件 > 选定的通用 > Hello World
按测试,我收到以下错误消息:
下面的区域显示了函数执行返回的结果。 { "errorMessage": "模块'helloworld'中存在语法错误" }
和
START RequestId: f71b8c46-ecc8-11e5-91b6-c55c85fd12cb Version: $LATEST
Syntax error in module 'helloworld': invalid syntax (helloworld.py, line 1)
END RequestId: f71b8c46-ecc8-11e5-91b6-c55c85fd12cb
REPORT RequestId: f71b8c46-ecc8-11e5-91b6-c55c85fd12cb Duration: 0.29 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 10 MB
我想要什么
我只想成功执行 python hello world,这样我就知道应该在哪里观察输出以及如何运行脚本。
更新
我已将代码更改为
def print_something(entry, second_entry):
print str(entry)
print str(second_entry)
return str(second_entry)
并且执行正确。
这就是我所看到的:
START RequestId: 33bf2a83-ecda-11e5-bdcd-2de843a18bed Version: $LATEST
{u'key3': u'value3', u'key2': u'value2', u'key1': u'value1'}
<__main__.LambdaContext object at 0x7f66d1848990>
END RequestId: 33bf2a83-ecda-11e5-bdcd-2de843a18bed
作为第二个参数出现的 LamdaContext 对象到底是什么?
最佳答案
两个问题:
Python 函数定义错误
Lambda 的主处理程序需要 2 个参数
答案:
def hello_world(event_data, lambda_config):
print "hello world"
有关主处理程序参数的更多信息,请阅读 http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html
摘录:
在 Python 中创建处理函数时,请使用以下通用语法结构。
def handler_name(event, context):
...
return some_value
在语法中,请注意以下内容:
- 事件 – AWS Lambda 使用此参数将事件数据传递到处理程序。该参数通常是Python的dict类型。它还可以是 list、str、int、float 或 NoneType 类型。
- context – AWS Lambda 使用此参数向您的处理程序提供运行时信息。该参数为LambdaContext类型。
- 处理程序可以选择返回一个值。返回值会发生什么情况取决于您在调用 Lambda 函数时使用的调用类型: 如果您使用 RequestResponse 调用类型(同步执行),AWS Lambda 将 Python 函数调用的结果返回给调用 Lambda 函数的客户端(在调用请求的 HTTP 响应中,序列化为 JSON)。例如,AWS Lambda 控制台使用 RequestResponse 调用类型,因此当您使用控制台测试调用该函数时,控制台将显示返回值。 如果处理程序未返回任何内容,AWS Lambda 将返回 null。 如果您使用事件调用类型(异步执行),则该值将被丢弃。
关于python - 如何使用 Python 2.7 在 AWS Lambda 中编写 hello world 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076720/