2016-03-18 83 views
1

我完全被AWS中的文檔搞糊塗了。如何使用Python 2.7在AWS Lambda中編寫hello world示例?

我使用區域美西2
  • 試過什麼
    1. 簽署了一個AWS帳號創建一個lambda函數調用的HelloWorld

    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對象作爲第二個PARAM?

    回答

    2

    兩個問題:

    1. 蟒蛇功能被錯誤地定義

    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字典類型。它也可以是list,str,int,float或NoneType類型。
    • 上下文 - AWS Lambda使用此參數爲您的處理程序提供運行時信息。該參數是LambdaContext類型。
    • (可選)處理程序可以返回一個值。返回的值取決於您在調用Lambda函數時使用的調用類型: 如果使用RequestResponse調用類型(同步執行),AWS Lambda會將調用Python函數的結果返回給調用Lambda函數的客戶端在對調用請求的HTTP響應中,序列化爲JSON)。例如,AWS Lambda控制檯使用RequestResponse調用類型,因此當您測試使用控制檯調用該函數時,控制檯將顯示返回的值。 如果處理程序不返回任何內容,AWS Lambda將返回null。 如果使用事件調用類型(異步執行),則該值將被丟棄。
    0

    Python的功能:

    def helloworld(): print "helloworld"

    然後,在配置,你應該使用的 「HelloWorld」 作爲拉姆達處理。

    +0

    你的回答讓我得到它八九不離十工作。現在的問題是我的主要處理程序需要接受2個參數。不知道爲什麼。 –

    +0

    ,因爲lambda處理程序需要兩個參數,例如'def lambda_handler(event,context):.....'也許你可以閱讀aws lambda的文檔以獲取更多信息。 – mapleray

    1

    改變你的Python語法到

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

    此事件總是喜歡字典類型對象 和上下文是拉姆達背景