使用AWS Lambda从S3读取JSON文件

时间:2018-11-02 16:43:31

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

首先,我是AWS的新手,因此对于问题很简单或未正确解释我深表歉意。 我正在尝试使用AWS lambda函数读取存储在S3存储桶中的JSON文件。 我的主要问题是我完全无法从中提取信息。 这是我的代码:

**

import json
import boto3
def lambda_handler(event, context):
    BUCKET = 'BUCKET'
    KEY = 'KEY.json'
    client = boto3.client('s3')
    result = client.get_object(Bucket=BUCKET, Key=KEY)
    # Read the object 
    text = result['Body'].read()#.decode('utf-8')
    #convert to string
    text_str = str(text)
    text_str = text_str.replace('\r\n', '')

    print(text_str)

**

如果我使用解码('utf-8'),则会得到:“ errorMessage”:“'utf-8'编解码器无法解码位置976的字节0xba:无效的起始字节”。 如果没有,我会得到JSON文件,但是像这样:

'{\ r \ n“ id”:0,\ r \ n“ uid”:“ uid”,\ r \ n“ name”:“ User”,\ r \ n“ last”:“候选” }'

我被困在这里,因为.replace无法正常工作,而且我不知道如何像标准JSON一样使用我获取的内容和对其进行访问。

先谢谢您。


更新:看起来主要问题是我在JSON文件中有ASCii字符,例如“á”。现在,我得到这样的内容(我只显示了json的一部分):

'{“ id”:0,“ uid”:“ uid”,“ name”:“ User”,“ last”:“候选”}'

我已经尝试过ast.literal_eval来摆脱''并访问字典,还尝试过json.dumps来避免ASCii字符出现问题,但是没有任何效果。

0 个答案:

没有答案