我正在尝试使用scrapy构建应用程序并将结果存储在DynamoDB中。 boto3文档提供了创建表的示例代码:DynamoDB — Boto 3 documentation
运行脚本后,我可以看到以下内容:
$ aws dynamodb list-tables
{
"TableNames": ["users"]
}
这时我才意识到我没有下载DynamoDB,所以我用DynamoDB (Downloadable Version) on Your Computer - Amazon DynamoDB下载并设置了它。
在Step 1: Create a Table - Amazon DynamoDB之后添加我的第一个表,我得到了:
$ aws dynamodb list-tables --endpoint-url http://localhost:8000
{
"TableNames": "Movies"
}
现在我很困惑:
因为在boto3文档中:
table = dynamodb.create_table(...)
以及在AWS Doc中:
dynamodb = boto3.resource('dynamodb', region_name='us-west-2', endpoint_url="http://localhost:8000")
仅供参考,访问外壳程序没有问题:http://localhost:8000/shell/
答案 0 :(得分:2)
您设置端点以指示您正在以下位置创建表 您计算机上DynamoDB的可下载版本。
这意味着,如果您删除了endpoint_url,该表将在Amazon DynamoDB服务中创建,并且当存在endpoint_url时,将在下载的版本中创建该表。
答案 1 :(得分:1)
sc0rp1on的答案当然是正确的,但是如果原始海报需要更明确的答案,我想我会添加一些细节:
DynamoDB本质上是一个服务-由Amazon在其自己的数据中心中运行的数据库,您的客户端通过Internet上的HTTP请求连接到该数据库,并且您为每个请求付费。您无需安装任何东西即可使用此服务,但是您需要对其进行配置(注册到该服务,付款方式,将帐户详细信息放入配置文件等),我想您在过去的某个时间执行此操作,否则您提到的命令将无法使用。
如果您未指定端点,则默认情况下,Amazon命令将在$ HOME / .aws / config中查找(同样,您可能先前已设置并忘记了该命令)。例如,如果您有“ region = us-east-1”,则会自动从中计算出“端点URL”,即为“ http://dynamodb.us-east-1.amazonaws.com”。
如您所见,您确实可以下载DynamoDB的本地版本并将其安装在您自己的计算机上。这主要是为了测试您的应用程序而设计的-对进行真正的生产数据库工作没有用。当您要针对安装在本地计算机上的本地DynamoDB测试应用程序时,确实可以传递终结点URL“ http://localhost:8000”,这意味着服务器在端口8000上的当前计算机(本地主机)上运行。 >