Tengo un archivo json que quiero usar para cargar mi tabla de Dynamo en AWS. En la consola de AWS, solo hay una opción para crear un registro a la vez. No es bueno: )
Esencialmente, mi archivo .JSON es una matriz de objetos que contienen los datos de cada columna de la tabla, es decir:
{ "Column1": "Column1 Value", "Column2": "Column2 Value", "Column3": "Column3 Value", "Column4": "Column4 Value", },¿Hay alguna forma de hacer esto a través de la consola de AWS e importar mi archivo json, o tengo que usar AWS JS SDK para hacer esto mediante programación?
La respuesta de EJ Brennan parece correcta, para un solo registro, pero no responde a la pregunta original (que debe agregar una serie de registros).
Para esto, el comando es
aws dynamodb batch-write-item --request-items file://aws-requests.jsonPero deberá crear un archivo JSON modificado, así (tenga en cuenta el JSON de DynamoDB que especifica los tipos de datos):
{ "YourTableName": [ { "PutRequest": { "Item": { "Column1": { "S": "Column1 Value" }, "Column2": { "S": "Column2 Value" }, "Column3": { "S": "Column3 Value" }, "Column4": { "S": "Column4 Value" }, } } }, { "PutRequest": { "Item": { "Column1": { "S": "Column1 Value" }, "Column2": { "S": "Column2 Value" }, "Column3": { "S": "Column3 Value" }, "Column4": { "S": "Column4 Value" }, } } } ] }No es necesario utilizar la API. En su lugar, podría usar AWS-CLI, es decir:
aws dynamodb put-item --table-name MusicCollection --item file://item.json --return-consumed-capacity TOTALpero es posible que deba modificar un poco su formato JSON.
Más ejemplos y documentación aquí:
https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html
Usé boto3 en python para cargar los datos.
import boto3 import json dynamodbclient=boto3.resource('dynamodb') sample_table = dynamodbclient.Table('ec2metadata') with open('/samplepath/spotec2interruptionevent.json', 'r') as myfile: data=myfile.read() # parse file obj = json.loads(data) #instance_id and cluster_id is the Key in dynamodb table response=sample_table.put_item( Item={ 'instance_id': instanceId, 'cluster_id': clusterId, 'event':obj } )Aquí hay una muestra para javascript: