在本模块中,您将预置 Amazon Aurora Serverless 数据库,并了解如何使用 Data API 通过 HTTPS 实现快速访问。 

完成模块所需时间:20 分钟


Amazon Aurora Serverless 是适用于 Amazon Aurora 的一项配置,可提供按需自动扩展功能。随着数据库负载的增加,Amazon Aurora Serverless 会自动增加容量,而且可以将其配置为在使用率低的时段(例如夜间)完全关闭。

Amazon Aurora Serverless 提供一项名为 Data API 的功能,该功能允许您通过 HTTP(而不是通常用于关系数据库的持久性 TCP 连接)查询数据库。这样就可以更轻松地通过托管服务(例如 AWS LambdaAWS AppSync)访问数据库。

在以下步骤中,您首先要预置 Amazon Aurora Serverless 数据库。然后,根据 Data API 的使用要求,将数据库凭证保存在 AWS Secrets Manager 中。最后,您将了解如何通过适用于 Node.js 中 JavaScript 的 AWS 开发工具包连接到 Data API。


  • 第 1 步:预置 Amazon Aurora Serverless 数据库

    转到 AWS 管理控制台中的“RDS”部分,并选择创建数据库
     

    inv-sys-create-database

    (单击可放大)

    inv-sys-create-database

    选择数据库创建方法框中,选择标准创建
     

    inv-sys-db-wizard-create-db

    (单击可放大)

    inv-sys-db-wizard-create-db

    引擎选项框中,针对引擎类型,选择 Amazon Aurora

    针对版本,选择 Amazon Aurora 与 MySQL 的兼容性


     

    leaderboard-db-engine-type

    (单击可放大)

    leaderboard-db-engine-type

    数据库功能框中,选择 Serverless。通过此选项,您可以使用 Data API。


     

    leaderboard-db-features

    (单击可放大)

    leaderboard-db-features

    设置框中,将数据库名称更改为排行榜

    然后,输入密码并确认相应框中的密码。请确保保存此密码,因为您必须使用此密码才能连接到数据库。


     

    leaderboard-db-settings

    (单击可放大)

    leaderboard-db-settings

    容量设置框用于针对 Amazon Aurora Serverless 实例的扩展和缩减程度设置相应配置。默认情况下,它会配置为扩展到最大容量。由于您只是测试,请将最大值设置为 1 个容量单位,以限制产生任何可能的费用。 

     

    leaderboard-capacity-settings

    (单击可放大)

    leaderboard-capacity-settings

    连接框中,选择更多连接配置,然后选中 Data API 复选框。  

    leaderboard-connectivity

    (单击可放大)

    leaderboard-connectivity

    最后,选择其他配置,并在初始数据库名称中输入排行榜。然后,取消选中启用删除保护复选框。取消选中此选项,便可在此实验结束时更轻松地清理数据库。但是,在生产环境中,请始终启用删除保护,以防止数据库意外丢失。

    leaderboard-database-options

    (单击可放大)

    leaderboard-database-options

    您可以创建数据库了! 选择创建数据库,开始预置数据库。 

    预置数据库时,您可以将数据库凭证存储在 AWS Secrets Manager 中。 

    inv-sys-db-create

    (单击可放大)

    inv-sys-db-create
  • 第 2 步:将数据库凭证存储在 AWS Secrets Manager 中

    在 Amazon Aurora Serverless 中使用 Data API 时,您的数据库凭证会存储在 AWS Secrets Manager 中。AWS Secrets Manager 是一项完全托管的服务,可轻松管理您的应用程序密钥。

    要开始使用,请导航到 AWS 管理控制台的“Secrets Manager”部分,并选择存储新密钥

    选择密钥类型框中,选择 RDS 数据库凭证。然后,输入创建数据库时所用的用户名和密码。

    leaderboard-secret-type

    (单击可放大)

    leaderboard-secret-type

    选择此密钥将访问的 RDS 数据库部分,选择您已创建的排行榜数据库,然后选择下一步

     

    leaderboard-secret-db

    (单击可放大)

    leaderboard-secret-db

    密钥名称和描述部分,为您的密钥命名并进行描述,以便之后可以轻松找到它。然后,选择下一步

     

    leaderboard-secret-name

    (单击可放大)

    leaderboard-secret-name

    借助 AWS Secrets Manager,您可以为自己的密钥配置自动密钥轮换。这是增强应用程序安全性的一种智能且简便的方法。有关更多信息,请参阅轮换您的 AWS Secrets Manager 密钥

    设置密钥轮换不在本教程范围内,因此请选择禁用自动轮换选项,然后选择下一步

    leaderboard-secret-rotation

    (单击可放大)

    leaderboard-secret-rotation

    Secrets Manager 控制台将向您显示密钥的配置设置和一些用于演示如何使用密钥的示例代码。滚动到页面底部并选择存储以保存密钥。

    创建密钥后,“Secrets Manager”页面会显示您已创建的密钥。选择 leaderboard-database 密钥。

    密钥详细信息框中显示了您的密钥 ARN。复制此值,因为您要在本教程的后面部分中用到它。

    leaderboard-secret-details

    (单击可放大)

    leaderboard-secret-details

    在这一步中,您已将数据库凭证保存到 AWS Secrets Manager。在下一步中,您将了解如何使用存储的密钥通过 Data API 访问数据库。

  • 第 3 步:通过 Data API 连接到数据库

    您已预置了数据库并存储了密钥,现在让我们尝试通过 Data API 访问数据库。

    首先,您需要获取您的资源的 ARN。导航到 AWS 管理控制台的“RDS”部分,选择数据库,然后选择您的排行榜数据库。

    选择配置选项卡,然后复制数据库的 ARN 值。

    leaderboard-db-arn

    (单击可放大)

    leaderboard-db-arn

    此时,您手中应该有从前面的说明中获取的数据库 ARN,以及在第 2 步结束时获取的密钥 ARN。您将使用这些值来访问数据库。

    导航到 AWS Cloud9 实例中的终端。输入以下命令,以将您的 ARN 值设置为环境变量。

    务必将 yourDatabaseArnyourSecretArn 替换为您的 ARN 值。

    echo "export DATABASE_ARN=<yourDatabaseArn>" >> env.sh
    echo "export SECRET_ARN=<yourSecretArn>" >> env.sh
    source env.sh
    

    scripts/ 目录中有一个可用于测试连接的 testDatabase.js 文件。该文件的内容如下:

    const AWS = require('aws-sdk')
    
    const rdsdataservice = new AWS.RDSDataService();
    
    const params = {
      resourceArn: process.env.DATABASE_ARN,
      secretArn: process.env.SECRET_ARN,
      database: ‘leaderboard’,
      sql: 'SELECT 1'
    }
    
    rdsdataservice.executeStatement(params, function(err, data) {
      if (err) {
        console.log(err, err.stack)
      } else {
        console.log(JSON.stringify(data, null, 2))
      }
    })

    在此脚本中,您将通过 AWS 开发工具包构建 RDSDataService 客户端。然后,设置方法参数,包括 resourceArn、secretArn、数据库和要执行的 SQL。本示例使用 SELECT 1 的简单 SQL 语句只是表示可以连接。

    使用以下命令在 AWS Cloud9 终端中运行脚本:

    node scripts/testDatabase.js

    您应该能在终端中看到以下输出:

    {
      "numberOfRecordsUpdated": 0,
      "records": [
        [
          {
            "longValue": 1
          }
        ]
      ]
    }
    

    成功! 您在唯一返回的记录中收到的值为 1。这表示您能够成功连接到数据库。

    注意:如果错误消息显示 BadRequestException: FATAL: password authentication failed for user,它可能表示您错误地配置了 AWS Secrets Manager 密钥。返回 Secrets Manager 控制台并确认您输入的用户名和密码。


在本模块中,您预置了 Amazon Aurora Serverless 数据库。此外,您还将数据库凭证保存到 AWS Secrets Manager,以便与 Data API 配合使用。最后,您确保能够通过 Data API 连接到数据库。

在下一个模块中,您将为应用程序规划数据模型、使用 Data API 创建表,并加载一些示例数据。