2017-12-20 1 views
1

folgte ich diese aws Dokumente, um meine DynamoDB Tabelle einzurichten:"Das bereitgestellte Schlüsselelement nicht mit dem Schema übereinstimmen", wenn sie in einer Tabelle in DynamoDB Schreiben

  1. creating table
  2. loading the data into the table

Zunächst erstellte ich die Tabelle ohne Bedenken und die Tabellenstruktur würde so aussehen:

Name> String (Primary Key)

Kategorie> String

Themen> Anzahl

Nachrichten> Anzahl

Ansichten> Anzahl

Als ich versuchte, die Daten zu laden, die gegeben wurde Auf dem zweiten Hyperlink oben gibt es eine Ausnahme, die besagt:

ist ein Fehler aufgetreten (Validation), wenn die BatchWriteItem Betrieb Aufruf:

aws dynamodb batch-write-item --request-items file:///home/kula/Documents/aws/sampledata/Forum.json 

Dies: Die bereitgestellten Schlüsselelement nicht das Schema hat

ich über den aws cli verwenden Sie den folgenden Befehl überein ist die json file ich versuche zu laden, die ich kopiert es von aws.

Ich hatte auch einen Blick in diese ticket, und entfernte die Zitate für Zahlen, aber immer noch kein Glück. Wo gehe ich falsch?

Jede Hilfe wäre willkommen.

+0

können Sie einige Zeilen aus Ihrer Datei anzeigen? –

+0

@EyalCh Ich habe die Frage mit der JSON-Datei aktualisiert. – Kulasangar

+0

Wie hast du die Tabelle erstellt? Können Sie den Befehl create table anzeigen? –

Antwort

0

Ich habe anscheinend am Ende Python-Skripte erstellen, um Tabellen zu erstellen und Daten in sie zu laden.

Erstellen Tabelle:

import boto3  

dynamodb = boto3.resource('dynamodb', region_name='us-east-1')  

table = dynamodb.create_table(
    TableName='users', 
    KeySchema=[ 
     { 
      'AttributeName': 'username', 
      'KeyType': 'HASH' 
     }, 
     { 
      'AttributeName': 'last_name', 
      'KeyType': 'RANGE' 
     } 
    ], 
    AttributeDefinitions=[ 
     { 
      'AttributeName': 'username', 
      'AttributeType': 'S' 
     }, 
     { 
      'AttributeName': 'last_name', 
      'AttributeType': 'S' 
     }, 

    ], 
    ProvisionedThroughput={ 
     'ReadCapacityUnits': 1, 
     'WriteCapacityUnits': 1 
    } 
) 

# Wait until the table exists. 
table.meta.client.get_waiter('table_exists').wait(TableName='users') 

Laden von Daten in der Tabelle:

#!/usr/bin/python 
import boto3 

dynamodb = boto3.resource('dynamodb', region_name='us-east-1') 

table = dynamodb.Table('users') 

with table.batch_writer() as batch: 
    batch.put_item(
     Item={ 
      'account_type': 'standard_user', 
      'username': 'johndoe', 
      'first_name': 'John', 
      'last_name': 'Doe', 
      'age': 25, 
      'address': { 
       'road': '1 Jefferson Street', 
       'city': 'Los Angeles', 
       'state': 'CA', 
       'zipcode': 90001 
      } 
     } 
    ) 
    batch.put_item(
     Item={ 
      'account_type': 'standard_user', 
      'username': 'bobsmith', 
      'first_name': 'Bob', 
      'last_name': 'Smith', 
      'age': 18, 
      'address': { 
       'road': '3 Madison Lane', 
       'city': 'Louisville', 
       'state': 'KY', 
       'zipcode': 40213 
      } 
     } 
    ) 
    batch.put_item(
     Item={ 
      'account_type': 'super_user', 
      'username': 'alicedoe', 
      'first_name': 'Alice', 
      'last_name': 'Doe', 
      'age': 27, 
      'address': { 
       'road': '1 Jefferson Street', 
       'city': 'Los Angeles', 
       'state': 'CA', 
       'zipcode': 90001 
      } 
     } 
    )  

print(table.creation_date_time) 

Hoffnung hilft dieses jemand!

Verwandte Themen