2017-05-04 2 views
0

Je veux accéder aux tables de DynamoDB de mon environnement errante avec l'aide de python Boto. Je peux accéder à des tables DynamoDB d'env errante avec l'aide de AWS CLI comme ci-dessousComment accéder aux tables DynamoDB de l'environnement Vagrant à l'aide de Python boto depuis notre machine locale?

aws dynamodb list-tables --endpoint-url http://10.2.1.2:8000 --profile vagrant 

La commande ci-dessus me donne la liste des contes disponibles dans env errante.

Je suis en train de se connecter à Vagrant avec l'aide de Boto comme suit.

conn = DynamoDBConnection(
       aws_access_key_id="troposphere", 
       aws_secret_access_key='troposphere', 
       host='10.2.1.2',       # Host where DynamoDB Local resides 
       port=8000,         # DynamoDB Local port (8000 is the default) 
       is_secure=False) 

print (conn) 
print (conn.list_tables()) 

Mais cela ne fonctionne pas correctement comme cette commande me donne la sortie suivante

{u'TableNames': []} 

Quelle devrait être la bonne connexion pour se connecter à l'environnement errante?

Répondre

1

Etes-vous sûr que vous avez créé des tables dans votre DynamoDB local? Je viens de lancer cela et il fonctionne comme prévu

  • simples Vagrantfile

    # -*- mode: ruby -*- 
    # vi: set ft=ruby : 
    Vagrant.configure("2") do |config| 
        config.vm.box = "ubuntu/trusty64" 
        config.vm.network "private_network", ip: "192.168.33.30"  
    end 
    
  • course dynamo de vm et de l'écriture sur le disque

    [email protected]:/vagrant/dynamodb_local$ java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 
    Initializing DynamoDB Local with the following configuration: 
    Port: 8000 
    InMemory: false 
    DbPath: null 
    SharedDb: true 
    shouldDelayTransientStatuses: false 
    CorsParams: * 
    
  • d'abord vérifier la connexion

    $ aws dynamodb list-tables --endpoint-url http://192.168.33.30:8000 
    { 
        "TableNames": [] 
    } 
    
  • création collection simple basée sur exemple

    [email protected]:~/project/vagrant/java$ aws dynamodb create-table --table-name MusicCollection --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 
    { 
        "TableDescription": { 
         "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/MusicCollection", 
    

importante ici, nous voyons qu'il a été créé localement arn:aws:dynamodb:ddblocal:000000000000

  • vérification en utilisant CLI les tables a été créé

    $ aws dynamodb list-tables --endpoint-url http://192.168.33.30:8000 
    { 
        "TableNames": [ 
         "MusicCollection" 
        ] 
    } 
    
  • en cours d'exécution simple pyth sur le script

    #!/usr/bin/env python 
    from boto.dynamodb2.layer1 import DynamoDBConnection 
    
    conn = DynamoDBConnection(
           aws_access_key_id="troposphere", 
           aws_secret_access_key='troposphere', 
           host='192.168.33.30', 
           port=8000, 
           is_secure=False) 
    
    print (conn) 
    print (conn.list_tables()) 
    

et l'exécution du script

$ python soscript.py 
DynamoDBConnection:192.168.33.30 
{u'TableNames': [u'MusicCollection']} 

pouvez-vous confirmer que vous obtenez la bonne connexion de la sortie de l'exécution de votre script?

+0

Oui, je reçois la connexion à droite comme suit, mais pas de liste de la table 'DynamoDBConnection: 10.2.1.2 {u'TableNames': []}' –

+0

AWS CLI ne me donne la liste des tables –

+0

pouvez-vous étendre votre python code pour créer une table et voir si elle est créée en dynamo? –