首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >本地主机端点到使用Boto3的DynamoDB本地

本地主机端点到使用Boto3的DynamoDB本地
EN

Stack Overflow用户
提问于 2015-08-12 01:56:47
回答 3查看 36.9K关注 0票数 46

虽然亚马逊提供了关于如何使用Java、PHP和.Net连接到dynamoDB local的文档,但是没有关于如何使用Python连接到localhost:8000的描述。web上的现有文档指出在boto.dynamic odb2.layer1中使用DynamoDBConnection method,但这在使用boto3协议管理dynamoDB的实际环境和测试环境之间造成了不兼容。

在boto3中,您可以使用以下构造函数和设置到环境中的变量向dynamo发出请求:

代码语言:javascript
复制
client = boto3.client('dynamodb')
table = client.list_tables()

而boto.dynamic odb2.layer1包要求您构造以下内容:

代码语言:javascript
复制
client = DynamoDBConnection(
    host='localhost',
    port=8000,
    aws_access_key_id='anything',
    aws_secret_access_key='anything',
    is_secure=False)
table = client.list_tables()

虽然可以创建基于本地环境确定适当构造函数的逻辑,但我对构建一组将每个构造函数视为相同的方法持谨慎态度。相反,我更喜欢将boto3用于所有内容,并且能够在环境变量中为dynamoDB设置端点。不幸的是,that option目前似乎不可用。

有没有办法使用boto3来定义dynamoDB本地端点(像其他语言一样)?或者亚马逊有没有计划支持这项功能?

EN

回答 3

Stack Overflow用户

发布于 2015-08-28 06:53:32

它确实支持DynamoDB本地。您只需要设置适当的端点,就像对其他language SDKs所做的那样

以下是如何通过DynamoDB本地使用boto3的客户端和资源接口的代码片段:

代码语言:javascript
复制
import boto3

# For a Boto3 client.
ddb = boto3.client('dynamodb', endpoint_url='http://localhost:8000')
response = ddb.list_tables()
print(response)

# For a Boto3 service resource
ddb = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')
print(list(ddb.tables.all()))
票数 66
EN

Stack Overflow用户

发布于 2015-12-30 21:16:45

注意:您需要将上述响应扩展为包含region。我已经附加到Kyle上面的代码中了。如果您的初始尝试出现区域错误,则会返回相应的'[]‘响应。

代码语言:javascript
复制
import boto3

## For a Boto3 client ('client' is for low-level access to Dynamo service API)
ddb1 = boto3.client('dynamodb', endpoint_url='http://localhost:8000', region_name='us-west-2')
response = ddb1.list_tables()
print(response)

# For a Boto3 service resource ('resource' is for higher-level, abstracted access to Dynamo)
ddb2 = boto3.resource('dynamodb', endpoint_url='http://localhost:8000', region_name='us-west-2')
print(list(ddb2.tables.all()))
票数 19
EN

Stack Overflow用户

发布于 2017-02-18 20:44:38

这是python DynamoDb教程。它描述了如何连接本地实例。

http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.01.html

在aws配置的帮助下,所需的最低参数似乎如下所示(如下所示)。

代码语言:javascript
复制
dynamodb = boto3.resource('dynamodb', endpoint_url='http://localhost:8000/')

使用aws configure命令配置配置文件参数(需要install aws cli)时,可以省略区域、访问密钥和密钥参数。但是,您可以在家中手动创建aws配置文件(以防您不想使用aws cli)。

文件~/.aws/config

代码语言:javascript
复制
[default]
output = json
region = anywhere

文件~/.aws/凭据

代码语言:javascript
复制
[default]
aws_access_key_id = whatever_id
aws_secret_access_key = whatever_key 

您可以参考http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html中的亚马逊网络服务配置

注在本地DynamoDb开发region中,这些文件中的aws_access_key_idaws_secret_access_key值可以是任何值。但是,如果您要将aws cli与AWS一起使用,则必须输入有效区域、有效id和密钥。这些服务在您注册AWS服务时可用。

更多信息,请调用

代码语言:javascript
复制
db = boto3.client('dynamodb')

boto3连接的主机将基于region参数,例如region=us-west-1当调用上述接口时,它将连接到dynamodb.us-west-1.amazonaws.com。但是,当传递参数endpoint_url时,不会使用region。有关更多亚马逊网络服务端点列表,请访问http://docs.aws.amazon.com/general/latest/gr/rande.html

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

https://stackoverflow.com/questions/31948742

复制
相关文章

相似问题

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