我有一个 AWS Lambda 函数(通过无服务器部署的 NodeJS 12.x),它应该从 AWS Keyspaces 表中返回一些记录。我正在使用 cassandra-driver (npm i cassandra-driver)。
当我通过 Lambda 函数运行查询时,它只返回 44 行(不正确,太少)。没有错误。
当我在 AWS 的 CQL 图形控制台(或 CQLsh)中运行 EXACT SAME 查询时,它返回所有 74 行(正确)
该表将“deviceid”(文本)作为主键,将“abstime”(bigint DESC)和“createdon”(bigint ASC)作为集群列。作为旁注,我将此设置用于其他没有问题的查询/表。任何想法,请帮助/谢谢。查询是这样的:
SELECT * FROM "KS"."mytable" WHERE "deviceid" = 'ABCDEFGH' AND "entrytype"='event' AND "abstime" > 1635947939 ORDER BY "abstime" ASC ALLOW FILTERING;
Lambda 中的重要代码是:
const cassandra = require('cassandra-driver');
const auth = new cassandra.auth.PlainTextAuthProvider('cassandrauser-at-123456789012', 'my-hidden-key');
const sslOptions1 = {
ca: [
"sf-class2-root.crt", 'utf-8')],
host: ('cassandra.us-east-1.amazonaws.com'),
rejectUnauthorized: true
};
const cass_client = new cassandra.Client({
contactPoints: [('cassandra.us-east-1.amazonaws.com')],
localDataCenter: 'us-east-1',
authProvider: auth,
sslOptions: sslOptions1,
protocolOptions: { port: cons.KEYSPACE_PORT }
});
var readResult = await cass_client.execute(query, [], { consistency: 6, prepare: true, autoPage: true });
console.log(readResult.rowLength); // returns only 44