R J*_*R J 33 python amazon-dynamodb dynamo-local
尽管亚马逊提供了有关如何使用Java,PHP和.Net 连接到本地dynamoDB的文档,但没有描述如何使用Python连接到localhost:8000.Web上的现有文档指向在boto.dynamodb2.layer1中使用DynamoDBConnection方法,但这会在使用boto3协议管理dynamoDB的实时环境和测试环境之间创建不兼容性.
在boto3中,您可以使用以下构造函数和设置到环境中的变量向dynamo发出请求:
client = boto3.client('dynamodb')
table = client.list_tables()
Run Code Online (Sandbox Code Playgroud)
而boto.dynamodb2.layer1包需要您构造以下内容:
client = DynamoDBConnection(
host='localhost',
port=8000,
aws_access_key_id='anything',
aws_secret_access_key='anything',
is_secure=False)
table = client.list_tables()
Run Code Online (Sandbox Code Playgroud)
尽管可以创建基于本地环境确定正确构造函数的逻辑,但我对构建一组将每个构造函数视为相同的方法持谨慎态度.相反,我更喜欢使用boto3来处理所有事情,并且能够在环境变量中设置dynamoDB的端点.不幸的是,该选项似乎目前无法使用.
有没有办法使用boto3来定义dynamoDB本地端点(就像其他语言一样)?或亚马逊计划支持此功能的任何机会?
小智 47
它确实支持DynamoDB Local.您只需设置适当的端点,例如您可以使用其他语言SDK
以下是如何通过DynamoDB Local使用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()))
Run Code Online (Sandbox Code Playgroud)
Dam*_*bur 17
注意:您需要将上述响应扩展到包含区域.我已经附上了凯尔的代码.如果您的初始尝试遇到区域错误,则会返回相应的"[]"响应.
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()))
Run Code Online (Sandbox Code Playgroud)
Sup*_*nno 10
这是教程python DynamoDb.它描述了如何连接到本地实例.
http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.01.html
在aws配置(下面)的帮助下,似乎所需的最小参数如下.
dynamodb = boto3.resource('dynamodb', endpoint_url='http://localhost:8000/')
Run Code Online (Sandbox Code Playgroud)
使用aws configure命令(require install aws cli)配置配置文件参数时,可以省略区域,访问密钥和密钥参数.但是,您可以在家中手动创建aws配置文件(如果您不想使用aws cli).
文件〜/ .aws/config
[default]
output = json
region = anywhere
Run Code Online (Sandbox Code Playgroud)
文件〜/ .aws /凭证
[default]
aws_access_key_id = whatever_id
aws_secret_access_key = whatever_key
Run Code Online (Sandbox Code Playgroud)
您可以在http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html中查阅aws配置.
注意在当地DynamoDb发展region,aws_access_key_id并aws_secret_access_key在这些文件中的值可以是任何东西.但是如果你想在AWS上使用aws cli,那么你必须放入有效的区域,有效的id和密钥.注册AWS服务时可以使用它们.
您致电时的更多信息
db = boto3.client('dynamodb')
Run Code Online (Sandbox Code Playgroud)
主机boto3 connect将基于region参数,例如region=us-west-1当调用api以上时,它将连接到dynamodb.us-west-1.amazonaws.com.但是,当传递参数时endpoint_url,region将不会使用.有关更多AWS端点列表,请访问http://docs.aws.amazon.com/general/latest/gr/rande.html.
小智 9
使用虚拟访问密钥和id否则会在运行方法时抛出异常.
Run Code Online (Sandbox Code Playgroud)import boto3 dynamodb = boto3.session('dynamodb', aws_access_key_id="anything", aws_secret_access_key="anything", region_name="us-west-2", endpoint_url="http://localhost:8000")
| 归档时间: |
|
| 查看次数: |
21782 次 |
| 最近记录: |