首页 > 解决方案 > 如何使用雪花节点连接器重用令牌?

问题描述

我被要求在此处报告使用节点连接器连接到 Snowflake 的问题。

问题:https ://github.com/snowflakedb/snowflake-connector-nodejs/issues/113

问题是我找不到任何关于如何重用现有令牌以避免连接到雪花时花费很长时间的文档。

将不胜感激任何帮助。

编辑

这是我使用的代码:

// Tokens are retrieved from a DB
if (tokens) {
  connection.masterToken = tokens.masterToken;
  connection.masterTokenExpirationTime = tokens.masterTokenExpirationTime;
  connection.sessionToken = tokens.sessionToken;
  connection.sessionTokenExpirationTime = tokens.sessionTokenExpirationTime;
}
connection.connect(async function (err, conn) {
  if (err) {
    reject(err);
  } else {
    resolve();
  }
});

标签: snowflake-cloud-data-platform

解决方案


这可能不是一个完整的答案,但希望它可以帮助您或其他人。我有过类似的问题。对我们来说,这个过程是通过 Web 服务获取 JWT 令牌。我没有对此进行测试,但怀疑它可以被重复使用。JSON 响应包含一个“lease_duration”属性。我猜这是在几秒钟内,但不知道虽然我试图检查。为了给你一个想法,我得到的一个值是 2764800。你可以计算如下:

Long leaseDurationInMs = Long.parseLong(result.get("lease_duration"));
Date estimatedLeaseExpiration = new Date(leaseStartTime+leaseDurationInMs);
System.out.println("Estimated lease expiration timestamp (human readable): "+estimatedLeaseExpiration);
Long estimatedLeaseExpirationInMs = estimatedLeaseExpiration.getTime();

如果然后每次你会获取这个令牌的东西时检查这个值,看看你是否需要得到另一个。


推荐阅读