2012-06-19 6 views
3

J'utilise la bibliothèque boto en Python pour me connecter à DynamoDB. Le code suivant a travaillé pour moi très bien:Amazon DynamoDB - connexion spécifique à la région

import boto 
key = 'abc' 

secret = '123' 
con = boto.connect_dynamodb(key,secret) 
table = con.get_table('Table Name') 
-- rest of code -- 

Lorsque je tente de se connecter à une région spécifique, je peux connecter très bien, mais obtenir la table pour travailler est de lancer une erreur:

import boto 
from boto.ec2.connection import EC2Connection 

key = 'abc' 
secret = '123' 
regions = EC2Connection(key,secret).get_all_regions() # some filtering after this line to remove unwanted entries 
for r in regions: 
    con = boto.connect_dynamodb(key,secret,region=r) 
    table = con.get_table('Table Name') # throws the error below 
    -- rest of code -- 

En utilisant le deuxième bloc de code ci-dessus, j'obtiens un ValueError: No JSON object could be decoded. L'appel con.list_tables() montre la table que je recherche dans le premier bloc de code, mais renvoie la même erreur quand je l'essaie dans le deuxième bloc de code. Quelqu'un peut m'aider?

Répondre

4

Après avoir joué, j'ai découvert que la modification du code pour se connecter à ce mode fonctionne:

import boto 
from boto.ec2.connection import EC2Connection 
from boto.dynamodb import connect_to_region 

key = 'abc' 
secret = '123' 
regions = EC2Connection(key,secret).get_all_regions() 
for r in regions: 
    con = connect_to_region(aws_access_key_id=key,aws_secret_access_key=secret,region_name=r.name) 
    table = con.get_table('Table Name') # no problem 
    -- rest of code -- 
Questions connexes