繁体   English   中英

AWS Lambda函数日志未在CloudWatch中显示

[英]AWS lambda function logs are not getting displayed in cloudwatch

我有以下要运行的设置。

我有一个在我的Linux主机上本地运行的python应用程序。 我正在使用boto3通过用户密钥和密钥ID连接到AWS。 我的用户拥有对EC2,Cloudwatch,S3和配置的完全访问权限

我的应用程序调用了一个名为mylambda的lamdbda函数。 mylambda的执行角色还具有所有必需的权限。

现在,如果我从aws控制台调用lambda函数,则可以正常工作。 我可以在cloudwatch中看到执行日志。 但是,如果我从自定义应用程序的linux框中执行此操作,则看不到任何执行日志,我也不会收到错误。

我有什么想念的吗?

任何帮助都非常感谢。

我看不到它被调用。 但是令人惊讶的是,我得到如下回应。

gaurav@random:~/lambda_s3$ python main.py {u'Payload': <botocore.response.StreamingBody object at 0x7f74cb7f5550>, u'ExecutedVersion': '$LATEST', 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '7417534c-6263-11e8-xxx-afab1667510a', 'HTTPHeaders': {'x-amzn-requestid': '7417534c-xxx-11e8-8a24-afab1667510a', 'content-length': '4', 'x-amz-executed-version': '$LATEST', 'x-amzn-trace-id': 'root=1-5b0bdc78-7559e68acd668476bxxxx754;sampled=0', 'x-amzn-remapped-content-length': '0', 'connection': 'keep-alive', 'date': 'Mon, 28 May 2018 10:39:52 GMT', 'content-type': 'application/json'}}, u'StatusCode': 200} {u'CreationDate': datetime.datetime(2018, 5, 27, 9, 50, 9, tzinfo=tzutc()), u'Name': 'bucketname'} gaurav@random:~/lambda_s3$

我的示例应用程序如下

#!/usr/bin/python
import boto3
import json
import base64
d= {'key': 10, 'key2' : 20}
client = boto3.client('lambda')

response = client.invoke(
    FunctionName='mylambda',
    InvocationType='RequestResponse',
    #LogType='None',
    ClientContext=base64.b64encode(b'{"custom":{"foo":"bar", \
                            "fuzzy":"wuzzy"}}').decode('utf-8'),
    Payload=json.dumps(d)
)
print response

确保您实际上在正确调用Lambda。 Lambda错误处理可能会有些棘手。 使用boto3,即使调用失败,invoke方法也不一定会抛出。 您必须检查响应中的statusCode属性。

您提到用户拥有对EC2,Cloudwatch,S3和config的完全访问权限。 对于您的用例,您需要将lambda:InvokeFunction添加到用户的权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM