本地主机终结点到DynamoDB Local和Boto3

2024-04-27 00:11:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

client = boto3.client('dynamodb')
table = client.list_tables()

而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()

尽管可以创建基于本地环境确定适当构造函数的逻辑,但我对构建一组将每个构造函数视为相同的方法持谨慎态度。相反,我更愿意使用boto3来处理所有事情,并且能够在环境变量中设置dynamoDB的端点。很遗憾,that option当前似乎不可用。

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


Tags: 文档clientawslocalhosttablesaccess环境table
3条回答

注意:您需要将上述响应扩展为包含区域。我已经把凯尔的密码附加在上面了。如果初始尝试出现区域错误,则会返回相应的“[]响应。

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()))

它确实支持本地DynamoDB。您只需要设置适当的端点,例如可以使用其他language SDKs

下面是如何通过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()))

这是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命令(需要安装aws cli)配置配置文件参数时,可以省略region、access key和secret key参数。但是,您可以在家中手动创建aws配置文件(以防不想使用aws cli)。

文件~/.aws/config

[default]
output = json
region = anywhere

文件~/.aws/凭据

[default]
aws_access_key_id = whatever_id
aws_secret_access_key = whatever_key 

您可以在中查阅aws配置 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

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

更多信息,当你打电话

db = boto3.client('dynamodb')

boto3连接的主机将基于region参数,例如region=us-west-1当调用上述api时,它将连接到dynamodb.us-west-1.amazonaws.com。但是,当pass参数endpoint_url时,将不使用region。有关更多AWS端点列表,请转到http://docs.aws.amazon.com/general/latest/gr/rande.html

相关问题 更多 >