【问题标题】:Display JSON file in Lambda Function Response - AWS在 Lambda 函数响应中显示 JSON 文件 - AWS
【发布时间】:2020-05-15 22:17:13
【问题描述】:

我使用 Python 从 S3 存储桶中读取了一个文件:

import json
import boto3


 s3 = boto3.client('s3')

def lambda_handler(event, context):

 bucket =  'finalyearpro-aws'
 key = 'StudentResults.json'


 try:
     data = s3.get_object(Bucket=bucket, Key=key)
    json_data = data['Body'].read().decode('utf-8')

    print (json_data)

except Exception as e:

    raise e

但它不会显示在响应中,而是将其创建为函数日志,我该如何在响应中显示它。见下图。

Lambda Function Python Read File Response - Click Here

【问题讨论】:

    标签: python json amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    AWS Lambda sends all console output to CloudWatch 以便您查看。由于您无法连接到运行 Lambda 的进程,否则您将无法查看您的 Lambda 日志。

    如果您想将此 JSON 作为 Lambda 的响应返回,那么您只需 return 该值。您可以在 Python here 中找到有关 Lambda 处理程序的信息。

    您想要做的一个示例如下(为简洁起见,您的代码删除了无趣的位):

    def lambda_handler(event, context):
    
     bucket =  'finalyearpro-aws'
     key = 'StudentResults.json'
    
     data = s3.get_object(Bucket=bucket, Key=key)
     json_data = data['Body'].read().decode('utf-8')
    
     return json_data
    

    我希望这会有所帮助!

    【讨论】:

    • 感谢 Jared,这实际上是我第一次使用它的方式,但它显示的 JSON 文件没有任何缩进,这就是为什么我将其更改为打印而不是返回的原因。任何想法如何使 JSON 文件以应有的方式缩进,而不是作为一个连续的行读取。谢谢。
    • 哦,是的,print 很聪明并为您格式化,而returning 的值只是一个普通的旧字符串。我不是 Python 专家,但您可能可以执行类似 return json.dumps(json_data, indent=4) 之类的操作,漂亮打印 JSON 确实是一个不同的问题,但您可以从 stackoverflow.com/a/12944035/2887128 开始。这看起来就是您所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多