虽然亚马逊提供了关于如何使用Java、PHP和.Net连接到dynamoDB local的文档,但是没有关于如何使用Python连接到localhost:8000的描述。web上的现有文档指出在boto.dynamic odb2.layer1中使用DynamoDBConnection method,但这在使用boto3协议管理dynamoDB的实际环境和测试环境之间造成了不兼容。
在boto3中,您可以使用以下构造函数和设置到环境中的变量向dynamo发出请求:
client = boto3.client('dynamodb')
table = client.list_tables()
而boto.dynamic odb2.layer1包要求您构造以下内容:
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本地端点(像其他语言一样)?或者亚马逊有没有计划支持这项功能?
发布于 2015-08-28 06:53:32
它确实支持DynamoDB本地。您只需要设置适当的端点,就像对其他language SDKs所做的那样
以下是如何通过DynamoDB本地使用boto3的客户端和资源接口的代码片段:
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()))
发布于 2015-12-30 21:16:45
注意:您需要将上述响应扩展为包含region。我已经附加到Kyle上面的代码中了。如果您的初始尝试出现区域错误,则会返回相应的'[]‘响应。
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()))
发布于 2017-02-18 20:44:38
这是python DynamoDb教程。它描述了如何连接本地实例。
http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.01.html
在aws配置的帮助下,所需的最低参数似乎如下所示(如下所示)。
dynamodb = boto3.resource('dynamodb', endpoint_url='http://localhost:8000/')
使用aws configure
命令配置配置文件参数(需要install aws cli)时,可以省略区域、访问密钥和密钥参数。但是,您可以在家中手动创建aws配置文件(以防您不想使用aws cli)。
文件~/.aws/config
[default]
output = json
region = anywhere
文件~/.aws/凭据
[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_id
和aws_secret_access_key
值可以是任何值。但是,如果您要将aws cli与AWS一起使用,则必须输入有效区域、有效id和密钥。这些服务在您注册AWS服务时可用。
更多信息,请调用
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。
https://stackoverflow.com/questions/31948742
复制相似问题