我已经按照说明正确地配置了AWS,我希望从高级包DynamoDB访问一个PynamoDB表,而不是从boto3访问。
如果我试图通过boto3和PynamoDB都使用的低级botocore包访问AWS集群,并连接到DynamoDB表,如
import botocore.session
session = botocore.session.get_session()
client = session.create_client('dynamodb')
client.describe_table(TableName='my_table_name')一切都很好,这个表可以很好的访问。
但是,我试图通过PynamoDB访问,方法是按照文档中的教程并为表创建一个模型,如
from pynamodb.models import Model
class MyTableModel(Model):
class Meta:
table_name = 'my_table_name'
pk_field = UnicodeAttribute(hash_key=True)
field1 = UnicodeAttribute()
field2 = UnicodeAttribute()并再次通过模型上的适当方法来描述表。
print MyTableModel.describe_table()我搞错了
pynamodb.exceptions.TableDoesNotExist:表不存在:
Requested resource not found: Table: my_table_name not found
我不明白为什么我已经钻研了PynamoDB代码,我似乎理解的是,它应该从botocore调用相同的代码,并且配置应该是隐式的。
发布于 2018-11-06 23:52:41
嘿,我知道现在已经很晚了,我用同样的问题跟踪你的帖子,就在回到boto之前,我明确地使用了@Jordon Phillips所提到的区域,它就像一种魅力。
from pynamodb.models import Model
class MyTableModel(Model):
class Meta:
table_name = 'my_table_name'
region = os.environ['Region'] #its region I get from serverless.yml
pk_field = UnicodeAttribute(hash_key=True)
field1 = UnicodeAttribute()
field2 = UnicodeAttribute()发布于 2016-05-09 16:48:32
这可能是一个配置不当的区域问题。似乎pynamo不尊重配置的区域,您必须显式地将它传递给您想要的区域。否则,你会得到us-east-1。
https://stackoverflow.com/questions/37120281
复制相似问题