【问题标题】:AWS lambda function logs are not getting displayed in cloudwatchAWS lambda 函数日志未显示在 cloudwatch 中
【发布时间】:2018-05-28 10:12:33
【问题描述】:

我正在尝试运行以下设置。

我有一个在我的 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

【问题讨论】:

  • 它真的被调用了吗?检查监控选项卡图表。作为最低要求,如果调用了 start 和 end 语句,您应该始终在日志中看到它。
  • 我没有看到它得到更新。我已经添加了我的示例代码和我从调用调用中获得的响应的输出。

标签: amazon-web-services logging aws-lambda amazon-cloudwatch


【解决方案1】:

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

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

【讨论】:

  • 也忘了提到 LambdaFullAccess。
  • StatusCode 为 200,这在 http 中是成功的
猜你喜欢
  • 2020-02-17
  • 2018-11-13
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2019-09-14
  • 1970-01-01
相关资源
最近更新 更多