Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 执行AWS Lambda函数不工作_Python_Amazon Web Services_Aws Lambda - Fatal编程技术网

Python 执行AWS Lambda函数不工作

Python 执行AWS Lambda函数不工作,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,我试图用以下代码创建一个简单的Lambda函数ChildFunction: import json import uuid def lambda_handler(event, context): productName = event['ProductName'] quantity = event['Quantity'] unitPrice = event['UnitPrice']

我试图用以下代码创建一个简单的Lambda函数
ChildFunction

    import json
    import uuid
 
    def lambda_handler(event, context):
        
        productName = event['ProductName']
        quantity    = event['Quantity']
        unitPrice   = event['UnitPrice']
 
        transactionId   = str(uuid.uuid1())
 
        amount      = quantity * unitPrice
 
        return {
            'TransactionID' :   transactionId,
            'ProductName'   :   productName,
            'Amount'        :   amount
        }
我正在使用以下测试参数创建一个
测试事件

{

  "ProductName": "iPhone SE",
  "Quantity": "2",
  "UnitPrice": "499"
}
当我执行
测试事件时,我得到以下输出:

Response:
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

Request ID:
"9c68e0d8-3781-4046-ac26-127c45321d71"

Function logs:
START RequestId: 9c68e0d8-3781-4046-ac26-127c45321d71 Version: $LATEST
END RequestId: 9c68e0d8-3781-4046-ac26-127c45321d71
REPORT RequestId: 9c68e0d8-3781-4046-ac26-127c45321d71  Duration: 1.19 ms   Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 52 MB

我不知道为什么Lambda函数没有执行。我做错了什么?

Lambda有一个特定的响应格式:

试试这个,输出命令在哪里:

import json

return { 'statusCode': 200,  
    'body' :json.dumps({'response': out})
    }

相关问题:

即使您正确执行了函数,它也不会工作。原因是
数量
单价
是字符串,而不是整数。正确的版本是:

import json
import uuid

def lambda_handler(event, context):
    
    productName = event['ProductName']
    quantity    = int(event['Quantity'])
    unitPrice   = int(event['UnitPrice'])

    transactionId   = str(uuid.uuid1())

    amount      = quantity * unitPrice

    return {
        'TransactionID' :   transactionId,
        'ProductName'   :   productName,
        'Amount'        :   amount
    }

根据您的描述,无法确定您执行不同功能的原因。也许您在测试之前没有部署它,或者测试它的一些旧版本。在第一种情况下,您必须在测试前显式部署,在第二种情况下,您必须确保选择要测试的函数的正确版本。

您真的执行了正确的Lambda吗?在给定代码的情况下,如何使用JSON对象和键statusCode进行响应?@raupach是的,我正在执行正确的Lambda。我的意思是,我正在Lambda函数中创建一个测试事件,但它不起作用。您确定它指向最新的Lambda吗?如何部署最新代码?@TraychoIvanov我正在使用Test按钮执行。Cloudwatch中没有错误日志。它说的是执行结果:当我点击Test时成功了。但它不提供任何输出。显示您的配置。添加屏幕截图等。这需要为API网关集成设置。如果是独立函数,则可以使用自定义返回格式。您的响应仍然需要一个正文作为输出。dumps(out)也很重要!试试看。