首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PynamoDB访问AWS与低水平的核心

通过PynamoDB访问AWS与低水平的核心
EN

Stack Overflow用户
提问于 2016-05-09 15:57:24
回答 2查看 2.9K关注 0票数 3

我已经按照说明正确地配置了AWS,我希望从高级包DynamoDB访问一个PynamoDB表,而不是从boto3访问。

如果我试图通过boto3和PynamoDB都使用的低级botocore包访问AWS集群,并连接到DynamoDB表,如

代码语言:javascript
复制
import botocore.session
session = botocore.session.get_session()
client = session.create_client('dynamodb')
client.describe_table(TableName='my_table_name')

一切都很好,这个表可以很好的访问。

但是,我试图通过PynamoDB访问,方法是按照文档中的教程并为表创建一个模型,如

代码语言:javascript
复制
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()

并再次通过模型上的适当方法来描述表。

代码语言:javascript
复制
print MyTableModel.describe_table()

我搞错了

pynamodb.exceptions.TableDoesNotExist:表不存在:Requested resource not found: Table: my_table_name not found

我不明白为什么我已经钻研了PynamoDB代码,我似乎理解的是,它应该从botocore调用相同的代码,并且配置应该是隐式的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-06 23:52:41

嘿,我知道现在已经很晚了,我用同样的问题跟踪你的帖子,就在回到boto之前,我明确地使用了@Jordon Phillips所提到的区域,它就像一种魅力。

代码语言:javascript
复制
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()
票数 6
EN

Stack Overflow用户

发布于 2016-05-09 16:48:32

这可能是一个配置不当的区域问题。似乎pynamo不尊重配置的区域,您必须显式地将它传递给您想要的区域。否则,你会得到us-east-1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37120281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档