node.js - 获取雪花内部 stageInfo
问题描述
我正在尝试构建一个可以将数据流直接发送到雪花的工具。
我不想使用外部阶段并将其存储在我的 S3 存储桶中。
查看 Snowflake NodeJS 连接器的内部工作原理,我发现了 Snowflake StageInfo:
this.createClient = function (stageInfo, useAccelerateEndpoint)
{
var stageCredentials = stageInfo['creds'];
var securityToken = stageCredentials['AWS_TOKEN'];
stageInfo 如下所示:
const s3 = {
locationType: 'S3',
location: 'sfc-eu-ds1-9-customer-stage/xseh-s-eusb3446/stages/90eb373c-a612-4e37-854c-9f07ff16b2bd/',
path: 'stages/90eb373c-a612-4e37-854c-9f07ff16b2bd/',
region: 'eu-central-1',
storageAccount: null,
isClientSideEncrypted: true,
creds: {
AWS_KEY_ID: '',
AWS_SECRET_KEY: '',
AWS_TOKEN: '',
AWS_ID: '',
AWS_KEY: '',
},
presignedUrl: null,
endPoint: null,
};
然后,我使用调试器获取了这些凭据,并使用 S3 上传工具自行开始上传,并将其放在一起生成流:
const upload = new Upload({
client: new S3Client({
credentials: {
accessKeyId: s3.creds.AWS_KEY_ID,
secretAccessKey: s3.creds.AWS_SECRET_KEY,
sessionToken: s3.creds.AWS_TOKEN,
},
region: s3.region,
}),
params: {
Bucket: s3.location.split('/')[0],
Key: key,
Body: ws.pipe(new PassThrough()),
ContentType: 'application/octet-stream',
Metadata: {
HTTP_HEADER_CONTENT_TYPE: 'application/octet-stream',
},
},
});
await upload.done();
效果很好,我实际上正在将文件上传到内部阶段。现在我的问题是我无法弄清楚如何stageInfo
从 Snowflake 获取这些凭据。有人知道我需要发出什么请求才能stageInfo
从他们那里得到这个吗?
解决方案
推荐阅读
- spring-boot - Spring Boot 一对多构造函数组合
- sql-server - SSIS 解决方案 - 使用 32 位 ODBC 驱动程序开发。需要对解决方案进行一些调整以使用 64 位 ODBC 驱动程序运行
- amazon-web-services - 触发 AWS WAF 规则 XSS 和 SQL 注入
- amazon-web-services - AWS Code Deploy (CI) failure - Connection refused error
- javascript - 导入文件而不实际导入它
- ionic-framework - Ionic Native File Plugin 中的错误 - {“code”:5,”message”:”ENCODING_ERR”}
- scala - Sbt:从 0.13.x 迁移到 1.x
- android - 无法解决方法'checkuserValidate(java.lang.String,java.lang.String在使用共享首选项进行登录和注册时出现错误
- java - 无法找到或加载主类 com.example.dlp.Inspect
- loops - 如何制作一个循环 25 次、等待 5 分钟然后开始下一批 25 次的循环?爪哇