Чтение файла JSON из S3 с помощью AWS Lambda - PullRequest
0 голосов
/ 02 ноября 2018

Прежде всего, я новичок в AWS, поэтому прошу прощения, если вопрос очень простой или не объяснен должным образом. Я пытаюсь прочитать файл JSON, хранящийся в корзине S3 с лямбда-функцией AWS. Моя главная проблема в том, что я совершенно не могу извлечь из нее информацию. Это мой код:

**

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)

**

Если я использую decode ('utf-8'), я получаю: "errorMessage": "Кодек utf-8 не может декодировать байт 0xba в позиции 976: недопустимый начальный байт". Если я не получаю, я получаю файл JSON, но вот так:

'{\ r \ n "id": 0, \ r \ n "uid": "uid", \ r \ n "name": "Пользователь", \ r \ n "last": "Кандидат" } '

Я застрял здесь, потому что .replace не работает, и я не знаю, как использовать то, что я получаю, и доступ к нему, как в стандартном JSON.

Спасибо заранее.


Обновление: похоже, основная проблема в том, что в файле JSON есть символы ASCii, например 'á'. Теперь я получаю что-то вроде этого (я просто показываю часть JSON):

'{"id": 0, "uid": "uid", "name": "User", "last": "Candidate"}'

Я пытался ast.literal_eval избавиться от '' и получить доступ к словарю, а также json.dumps, чтобы попытаться избежать проблемы с символами ASCii, но ничего не помогло.

...