Как записать данные сканирования DynamodB в CSV и загрузить в корзину S3 с помощью Python? - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь отсканировать таблицу динамодаба и записать отсканированные данные в файл CSV, а после этого загрузить этот файл в корзины S3. Справка: Вот мой код:

import csv
import boto3
import json
dynamodb = boto3.resource('dynamodb')
db = dynamodb.Table('employee_details')
def lambda_handler(event, context):
    AWS_BUCKET_NAME = 'session5cloudfront'
    s3 = boto3.resource('s3')
    bucket = s3.Bucket(AWS_BUCKET_NAME)
    path = '/tmp/' + 'employees.csv'
    try:
        response = db.scan()
        for i in response['Items']:
            csv.register_dialect('myDialect', delimiter=' ', quoting=csv.QUOTE_NONE)
            myFile = open(path, 'w')  
            with myFile:
                writer = csv.writer(myFile, dialect='myDialect')
                writer.writerows(i)
            print(i)
    except :
        print("error")

    bucket.put_object(
        ACL='public-read',
        ContentType='application/csv',
        Key=path,
        # Body=json.dumps(i),
    )
    # print("here")
    body = {
        "uploaded": "true",
        "bucket": AWS_BUCKET_NAME,
        "path": path,
    }
    # print("then here")
    return {
        "statusCode": 200,
        "body": json.dumps(body)
    }

Этот код сохраняет CSV-файл в S3, но это пустая отсканированная таблица данных DynamodB, данные не сохраняются. Пожалуйста, помогите решить эту проблему ...

...