Я изо всех сил пытаюсь найти способ создать новую таблицу Dynamodb из файла csv. Я могу создать таблицу, но мне нужно иметь возможность определять схему с помощью csv.
То, что я прикрепил, создает таблицу, но мне нужно заранее определить схему. Я хочу, чтобы лямбда-функция считывала файл csv и строила на его основе схему таблицы.
import os
import boto3
import botocore.session
region = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')
session = botocore.session.get_session()
dynamo = session.create_client('dynamodb', region_name=region)
s3 = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
obj = s3.get_object(Bucket=bucket, Key=key)
row = obj['Body'].read().decode("utf-8"). split ('\n')
cols = obj['Body'].read().decode("utf-8"). split('\n')[0].split(',')
table = dynamodb.Table(key)
dynamodb.create_table(
TableName=key.strip('.csv'),
KeySchema=[
{
'AttributeName': 'first',
'KeyType': 'HASH'
},
],
# mytable.meta.client.get_waiter('table_exists').wait(TableName=key)
# print('Table is ready, please continue to isert data.')
AttributeDefinitions=[
{
'AttributeName': 'first',
'AttributeType': 'S'
},
],
)