View a markdown version of this page

第 1 步:在本地进行部署和测试 - Amazon DynamoDB

第 1 步:在本地进行部署和测试

在本步骤中,您将在本地计算机上下载、部署和测试井字游戏应用程序。您可以将 DynamoDB 下载到计算机上并在其中创建所需的表,而不是使用 Amazon DynamoDB Web 服务。

1.1:下载和安装所需的软件包

您需要以下软件包在本地测试此应用程序:

  • Python

  • Flask(适用于 Python 的 microframework)

  • AWS SDK for Python (Boto)

  • 在计算机中运行的 DynamoDB

  • Git

要获取这些工具,请执行以下操作:

  1. 安装 Python。如需分步说明,请参见下载 Python。

    已经使用 Python 版本 2.7 对该井字游戏应用程序进行了测试。

  2. 使用 Python Package Installer (PIP) 安装 Flask 和 AWS SDK for Python (Boto):

    • 安装 PIP。

      有关说明,请参见安装 PIP。在安装页面上,选择 get-pip.py 链接,接着保存该文件。然后,以管理员身份打开命令终端,并在命令提示符下输入以下内容。

      python.exe get-pip.py

      在 Linux 上,您不必指定 .exe 扩展名。只需指定 python get-pip.py。

    • 使用 PIP,通过以下代码安装 Flask 和 Boto 软件包。

      pip install Flask pip install boto pip install configparser
  3. 将 DynamoDB 下载到您的计算机中。有关运行方法的说明,请参阅 设置 DynamoDB local(可下载版本)。

  4. 下载井字游戏应用程序:

    1. 安装 Git。有关说明,请参阅 git 下载。

    2. 运行下面的代码,下载应用程序。

      git clone https://github.com/awslabs/dynamodb-tictactoe-example-app.git

1.2:测试游戏应用程序

要测试井字游戏应用程序,您需要在计算机上本地运行 DynamoDB。

运行井字游戏应用程序
  1. 启动 DynamoDB。

  2. 启动井字游戏应用程序的 Web 服务器。

    要执行此操作,请打开命令终端,导航到您将井字游戏应用程序下载到的文件夹,然后使用以下代码在本地运行此应用程序。

    python.exe application.py --mode local --serverPort 5000 --port 8000

    在 Linux 上,您不必指定 .exe 扩展名。

  3. 打开您的 Web 浏览器,然后输入以下内容。

    http://localhost:5000/

    浏览器将显示主页。

    应用程序主页的屏幕截图,其中包含创建按钮,以及游戏、邀请和最近历史记录的链接。
  4. 在 Log in (登录) 框中输入 user1,以 user1 身份登录。

    注意

    此示例应用程序不执行任何用户身份验证。用户 ID 仅用于标识玩家。如果两个玩家以同一别名登录,应用程序的工作方式就像您在两个不同的浏览器中玩游戏一样。

  5. 如果您是第一次玩这款游戏,将显示一个页面,要求您在 DynamoDB 中创建所需的表 (Games)。选择 CREATE TABLE (创建表)。

    应用程序中“创建表”按钮的屏幕截图。
  6. 选择 CREATE (创建) 以创建第一个井字游戏。

  7. 在 Choose an Opponent (选择对手) 框中输入 user2,然后选择 Create Game! (创建游戏!)

    显示“选择对手”对话框和“创建游戏”按钮的屏幕截图。

    执行此操作将通过在 Games 表中添加项目来创建游戏。它将游戏状态设置为 PENDING。

  8. 打开另一个浏览器窗口,然后输入以下内容。

    http://localhost:5000/

    浏览器通过 Cookie 传递信息,因此,您应使用无痕模式或私密浏览,这样就不会传输您的 Cookie。

  9. 作为 user2 登录。

    此时将显示一个页面,其中显示有一个来自 user1 的邀请等待接受。

    显示带有待处理邀请的应用程序主页的屏幕截图。
  10. 选择接受以接受邀请。

    游戏状态为正在进行的空井字游戏网格的屏幕截图。

    游戏页面显示空的井字游戏网格。该页面还会显示相关的游戏信息,例如游戏 ID、发起游戏的用户以及游戏状态。

  11. 玩游戏。

对于用户的每一次移动,Web 服务都会向 DynamoDB 发送请求,以在 Games 表中有条件地更新游戏项目。例如,条件可确保移动有效,用户选择的方框可用,以及轮到进行移动的用户。对于有效的移动,更新操作会添加与面板中的选择对应的新属性。更新操作还会将现有属性的值设置到可以进行下一次移动的用户。

在游戏页面上,应用程序每秒进行若干次异步 JavaScript 调用,持续时间最多达五分钟,以检查 DynamoDB 中的游戏状态是否已更改。如果游戏状态有更改,则应用程序使用新信息更新页面。五分钟之后,应用程序停止发出请求,您需要刷新页面以获取更新后的信息。