使用amazon-qldb-driver-nodejs来使用QLDB(连接部分)

QLDB是什么?

https://aws.amazon.com/jp/qldb/ 是由亚马逊提供的全托管账本数据库。与区块链不同,它是由中心集权进行管理的。

所有的数据更改都会被记录下来,并且可以在之后进行确认。
此外,还提供了对更改历史进行加密验证的功能。
https://docs.aws.amazon.com/qldb/latest/developerguide/verification.html

由于在执行交易时不需要经过网络参与者的共识,因此这种区块链模式似乎比传统的基于中央集权的框架拥有更高的吞吐量。

如果您希望确保数据的可靠性和可追溯性,但并不需要分散式的话,以上选项将是非常有吸引力的选择。

关于amazon-qldb-driver-nodejs

目前,根据程序访问的情况来看,使用Java的驱动器似乎是主流。同时还提供了适用于node.js的驱动器,我们将使用该驱动器来从程序连接到QLDB!请注意,目前仍处于预览状态,不建议用于生产环境,敬请留意。

    • https://docs.aws.amazon.com/ja_jp/qldb/latest/developerguide/getting-started.nodejs.html

 

    https://github.com/awslabs/amazon-qldb-driver-nodejs

前提 tí)

这个样本假设已经在AWS控制台上创建了账本和一些表格。

在我的环境中,我使用了以下教程中注册的数据进行了操作确认。
https://docs.aws.amazon.com/ja_jp/qldb/latest/developerguide/getting-started.html

教程可以参考以下文章:
https://qiita.com/yanyansk/items/586b7f1c86eca4352b44

创建IAM用户的访问密钥

在实施之前,需要创建用于访问QLDB的认证信息。
请按照以下步骤生成访问密钥。

请从服务> IAM> 用户中选择添加用户。

iam_1.png

请随意输入用户名。请勾选“通过程序访问”选项。

iam2.png

由于一旦只是用于测试,所以无需创建用户组等,直接附加策略即可。

iam3.png

不需要特定的标签等,请完成用户的创建。
请记下在创建完成页面上显示的“访问密钥ID”和“秘密访问密钥”。
在使用驱动程序访问QLDB时,将使用此信息进行身份验证。

iam4.png

实施

驱动程序和所需模块的安装

npm i amazon-qldb-driver-nodejs aws-sdk ion-js typescript

证书信息的编辑

请创建一个名为「credentials.json」的文件。

{
  "accessKeyId": "${作成したアクセスキーID}",
  "secretAccessKey": "${作成したシークレットアクセスキー}"
}

認證部分的實作

設定認證資訊

使用创建的凭证的JSON进行身份验证。

const AWS = require("aws-sdk");
AWS.config.loadFromPath("./credentials.json");

确认证书

为了便于调试,将添加一个函数来验证Credential是否已正确设置。

function checkCredential() {
  return new Promise((resolve, reject) => {
    AWS.config.getCredentials(function (err: Error) {
      if (err) {
        return reject(err);
      }
      console.log("Access key:", AWS.config.credentials.accessKeyId);
      console.log("Secret access key:", AWS.config.credentials.secretAccessKey);
      resolve();
    });
  })
}

主流的实施方式

我們將開始實現主要部分。

创建会话

请在 region 中设置创建 QLDB 的区域。
请在 PooledQldbDriver 的第一个参数中指定所创建账本的名称。

  const testServiceConfigOptions = {
    region: "{QLDBを作成したリージョン}"
  };
  const qldbDriver: PooledQldbDriver = new PooledQldbDriver("{作成した台帳の名前}", testServiceConfigOptions);
  const qldbSession: QldbSession = await qldbDriver.getSession();

确认台账上的桌子

  for (const table of await qldbSession.getTableNames()) {
    console.log(table);
  }

确认行动

我会尝试运行下面给出的完整代码,并进行操作确认。

import { PooledQldbDriver, QldbSession } from "amazon-qldb-driver-nodejs";

const AWS = require("aws-sdk");
AWS.config.loadFromPath("./credentials.json");

(async () => {

  await checkCredential();

  const testServiceConfigOptions = {
    region: "{QLDBを作成したリージョン}"
  };
  const qldbDriver: PooledQldbDriver = new PooledQldbDriver("{作成した台帳の名前}", testServiceConfigOptions);
  const qldbSession: QldbSession = await qldbDriver.getSession();
  for (const table of await qldbSession.getTableNames()) {
    console.log(table);
  }
})().catch(err => {
  console.error(err);
});

function checkCredential() {
  return new Promise((resolve, reject) => {
    AWS.config.getCredentials(function (err: Error) {
      if (err) {
        return reject(err);
      }
      console.log("Access key:", AWS.config.credentials.accessKeyId);
      console.log("Secret access key:", AWS.config.credentials.secretAccessKey);
      resolve();
    });
  })
}
$ npx tsc main.ts
$ node main.js

Access key: xxxxxxxxxxxxxxxxxx
Secret access key: xxxxxxxxxxxxxxxxxx
VehicleRegistration
DriversLicense
Vehicle
Person

無事台帳上的桌子名被显示出来了!下次我想写关于搜索和数据注册的事情!

最后

在ZEROBILLBANK,我们正在招募一起工作的伙伴。
零账单银行日本公司。

广告
将在 10 秒后关闭
bannerAds