如何使用雪花节点连接器重复使用令牌?

时间:2020-08-31 12:36:38

标签: snowflake-cloud-data-platform

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

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

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

非常感谢您的帮助。

编辑

这是我使用的代码:

// 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();
  }
});

2 个答案:

答案 0 :(得分:1)

这可能不是一个完整的答案,但希望它能对您或其他人有所帮助。我也遇到过类似的问题。对我们来说,过程是通过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();

,然后如果每次都将获取此令牌的内容时检查此值,以查看是否需要获取另一个。

答案 1 :(得分:0)

很抱歉回答了我自己的问题,但最终我将数据缓存在自己的一边,以避免连接过多。