如何使用 Python 2.7 在 AWS Lambda 中编写一个 hello world 示例?

How to write a hello world example in AWS Lambda using Python 2.7?

我对 AWS 中的文档一头雾水。

我试过的

  1. 使用区域 us-west-2 注册了一个 AWS 账户
  2. 创建了一个名为 helloworld 的 Lambda 函数

  1. 在内部创建了一个名为 hello_world 的处理程序。

  1. 选定的操作 > 配置测试事件 > 选定的通用 > Hello World

  1. 按测试,我收到以下错误消息:

    下面的区域显示了您的函数执行返回的结果。 { "errorMessage": "Syntax error in module '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函数:

def helloworld(): print "helloworld"

然后,在配置中您应该使用 "helloworld" 作为 lambda 处理程序。

两期:

  1. python函数定义错误

  2. 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

在语法中,注意以下几点:

  • event – AWS Lambda 使用此参数将事件数据传递给处理程序。该参数通常为 Python dict 类型。也可以是list、str、int、float或NoneType类型。
  • context – AWS Lambda 使用此参数向您的处理程序提供运行时信息。该参数为LambdaContext类型。
  • 可选地,处理程序可以 return 一个值。 returned 值会发生什么取决于您在调用 Lambda 函数时使用的调用类型: 如果您使用 RequestResponse 调用类型(同步执行),AWS Lambda return 是对调用 Lambda 函数的客户端的 Python 函数调用的结果(在对调用请求的 HTTP 响应中,序列化为JSON)。例如,AWS Lambda 控制台使用 RequestResponse 调用类型,因此当您使用控制台测试调用函数时,控制台将显示 returned 值。 如果处理程序没有 return 任何内容,则 AWS Lambda return 为空。 如果使用事件调用类型(异步执行),该值将被丢弃。

将 python 语法更改为

def event_handler(event,context):
    message = "hello{0}".format(event['world'])
return mesaage 

这里的事件总是像字典类型的对象 上下文是 lambda 上下文