Dynamo DB:使用和不使用'--endpoint-url'创建表之间的区别

时间:2019-06-29 06:53:40

标签: amazon-web-services amazon-dynamodb boto3 aws-cli

我正在尝试使用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"
    }

现在我很困惑:

  1. 如何在不运行Dynamo DB可下载版本的情况下创建表?
  2. 使用和不使用'endpoint'选项有什么区别?

因为在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/

2 个答案:

答案 0 :(得分:2)

  

您设置端点以指示您正在以下位置创建表   您计算机上DynamoDB的可下载版本。

Reference

这意味着,如果您删除了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上的当前计算机(本地主机)上运行。 >