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

标签 python amazon-web-services aws-lambda

我对 AWS 中的文档感到非常困惑。

我尝试了什么

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

enter image description here

  • 在内部创建了一个名为 hello_world 的处理程序。
  • enter image description here

  • 选定的操作 > 配置测试事件 > 选定的通用 > Hello World
  • enter image description here

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

    下面的区域显示了函数执行返回的结果。 { "errorMessage": "模块'helloworld'中存在语法错误" }

  • enter image description here

    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  
    

    enter image description here

    我想要什么

    我只想成功执行 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 对象到底是什么?

    最佳答案

    两个问题:

    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
    

    在语法中,请注意以下内容:

    • 事件 – 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/

    相关文章:

    python - 当应用程序退出时,使用 Python subprocess 模块启动的进程不会被终止

    python - 博客类别 Slugify 在 Django 中不起作用

    amazon-web-services - 将 Lambda 函数分配给 serverless.yml 中的特定 VPC ID

    php - 使用 AWS SES (PHP SDK) 在一个调用中向多个收件人发送电子邮件

    amazon-web-services - 将HTTP://请求重定向到AWS API Gateway上的https://(使用自定义域)

    python - 如果值在另一列中,则来自另一个 DataFrame 的 pandas 列?

    python - 如何减少 matplotlib 等高线图中的小数位数

    node.js - AWS Lambda 中的 Amazon S3 waitFor()

    amazon-web-services - AWS SQS触发lambda突然停止并且不删除消息

    amazon-web-services - 如何在 AWS Lambda 中使用 pdfkit?