尽管Amazon提供了关于如何使用Java、PHP和.Net连接到dynamoDB local的文档,但没有描述如何使用Python连接到localhost:8000。web上的现有文档指向在boto.dynamodb2.layer1中使用dynamoDB连接方法,但这会在使用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的endpoint。不幸的是,该选项目前似乎不可用。
是否有任何方法可以使用boto3定义dynamoDB本地endpoint(与其他语言一样)?或者亚马逊有没有可能计划支持这一功能?
使用虚拟访问键和id,否则它将在运行方法时引发异常。
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")
注意:您需要扩展上述响应以包括区域。我已经附加到凯尔的代码上面。如果您的初始尝试遇到区域错误,这将返回相应的“[]”响应。
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 Local。您只需要设置适当的endpoint,就像您可以对其他语言SDK所做的那样
以下是如何通过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()))
我试图通过触发Python lambda表达式以编程方式将数据放入本地运行的DynamoDB容器中。 我正在尝试遵循此处提供的模板:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.03.html 我使用的是amazon/dynamodb local,您可以在此处下载:htt
我已经使用aws sam local设置了一个api网关/aws lambda对,并确认运行后可以成功调用它 sam本地启动api 然后,我在docker容器中添加了一个本地Dynamodb实例,并使用aws cli在其上创建了一个表 但是,在将代码添加到lambda以写入我收到的Dynamodb实例之后: 2018-02-22T11:13:16.172Z ed9ab38e-fb54-18a4-0
我正在使用DynamoDB local进行单元测试。这并不坏,但也有一些缺点。明确地: 在测试运行之前,您必须以某种方式启动服务器 服务器在每次测试之前不会启动和停止,因此测试会变得相互依赖,除非在每次测试之后添加代码删除所有表等 所有开发者都需要安装它 我想做的是把DynamoDB本地jar和它所依赖的其他jar放在我的目录中(我用Java写)。然后在每次测试之前,我会启动它,用运行,测试结束后
我已经在本地运行了DynamoDB,并使用shell(localhost:8000/shell/)创建了一个表。 [Mon Decc 14 11:22:48.266930 2015][:错误][pid 12][client 10.0.2.2:58042]PHP致命错误:未捕获AWS\DynamODB\Exception\ResourceNotFoundException:AWS错误代码:Resou
问题内容: 我想通过将所有Cookie移到本地存储中来减少其加载时间,因为它们似乎具有相同的功能。除了明显的兼容性问题以外,使用本地存储替换cookie功能是否有任何利弊(尤其是性能方面的优势)? 问题答案: Cookies和本地存储有不同的用途。Cookies主要用于读取 服务器端 ,本地存储只能由 客户端 读取。所以问题是,在您的应用程序中,谁需要此数据-客户端还是服务器? 如果它是您的客户端
PS:值得一提的是,我能够通过Appsync控制台成功地查询到这些数据,这让我坚信问题出在函数本身。