Snowflake - как подключиться к Snowflake с помощью NodeJS
У кого-нибудь есть рабочий код для подключения NodeJS и Snowflake.
Пробовал следующие инструкции для NodeJS:
var snowflake = require('snowflake-sdk');
var connection = snowflake.createConnection({
account: 'account1',
username: 'user1',
password: 'pass1',
region: 'us-east-1'
});
connection.connect(function(err, conn) {
if (err) {
console.error('Unable to connect: ' + err.message);
} else {
console.log('Successfully connected as id: ' + connection.getId());
}
});
Продолжайте получать ошибки:
Network error. Could not reach Snowflake.
Аналогично - следующие инструкции для Python работают без проблем (используя EXACT того же пользователя / пароля / учетной записи и т. Д., Что и для NodeJS):
import snowflake.connector
ctx = snowflake.connector.connect(
user='user1',
password='pass1',
account='account1'
)
print ("SELECT current_version():")
cs = ctx.cursor()
try:
cs.execute("SELECT current_version()")
one = cs.fetchone()
print(one[0]) # 2.50.2
finally:
cs.close()
6 ответов
Учетная запись, которая использует в Python, имеет "account_id.region" что-то вроде
ctx = snowflake.connector.connect(
user='user1',
password='pass1',
account='abc.us-east-1'
)
Для node.js вы должны указать то же, что и:
var connection = snowflake.createConnection({
account: 'abc',
username: 'user1',
password: 'pass1',
region: 'us-east-1'
});
моя конфигурация работала для меня:
var connection = snowflake.createConnection({
account: 'abc.us-east-1',
username: 'user1',
password:'pass1',
authenticator: 'SNOWFLAKE',
clientSessionKeepAlive: true,
});
connection.connect(
function(err, conn) {
if (err) {
console.error('Unable to connect: ' + err.message);
}
else {
console.log('Successfully connected to Snowflake.');
// Optional: store the connection ID.
connection_ID = conn.getId();
}
}
);
Удалите регион из информации о подключении и укажите account='abc.us-east-1'. Поле региона устарело и не должно использоваться при подключении к Snowflake.
https://docs.snowflake.net/manuals/user-guide/nodejs-driver-use.html
Это пример объекта подключения, который помогает подключиться к базе данных Snowflake.
// Create a Connection object that we can use later to connect.
var connection = snowflake.createConnection({
account: "abc.east-us-2.azure", //'abc' - change as per the your instance
username: "username1",
password: "pwd1",
//warehouse: "warehouse_name", // optional
//role: "role_name", // optional
//schema: "shema_name", // optional
//database: "DB_name" // optional
});
Основываясь строго на предоставленном коде, функциональное различие между двумя примерами заключается в том, что Node.js определяет us-east-1
регион, а Python один не указывает регион. Регион по умолчанию - us-west-2, который указывать не нужно. В сопроводительной документации отмечается: "используйте, только если ваша учетная запись не на западе США". Таким образом, указание неверного региона может привести к ошибкам подключения.
Мне пришлось добавить облачного провайдера, а также регион, поэтому в моем случае это было: