使用athena-express查询AWS Athena报Stream属性未定义错误如何解决
问题修复方案
该报错的核心原因是 athena-express仅兼容AWS SDK v2版本,如果你的项目中安装了AWS SDK v3,会因为SDK结构变更丢失Stream属性,直接触发该报错。
修复步骤
- 第一步:卸载当前安装的AWS SDK
npm uninstall aws-sdk
- 第二步:安装AWS SDK v2的最新稳定版
npm install aws-sdk@2
- 第三步:检查配置项
确认athenaExpressConfig中的s3参数为正确的Athena查询结果存储桶路径,格式为s3://你的桶名/自定义路径/,不要省略s3://前缀。
完整可运行代码
原有代码逻辑无需修改,调整依赖后即可正常运行,参考代码如下:
const AthenaExpress = require("athena-express"); const aws = require("aws-sdk"); const awsCredentials = { accessKeyId: "替换为你的AccessKey", secretAccessKey: "替换为你的SecretKey", region: "替换为你的区域,例如ap-northeast-1", }; aws.config.update(awsCredentials); const athenaExpressConfig = { aws, getStats: true, s3:"s3://你的结果存储桶/athena-results/" }; const athenaExpress = new AthenaExpress(athenaExpressConfig); (async () => { let query = { sql: "SELECT * FROM 你的表名 where vin='123' and date like '%2021-08%'", db: "你的数据库名" }; try { let results = await athenaExpress.query(query); console.log(results); } catch (error) { console.log(error); } })();
异常排查
如果调整依赖后仍有报错,可逐一检查以下配置:
- 你的AK/SK是否拥有Athena查询权限、对应S3存储桶的读写权限
- 目标数据库、表名是否和Athena控制台中的配置一致
- 查询SQL是否可以在Athena控制台正常运行,排除SQL语法问题
内容的提问来源于stack exchange,提问作者nikhil desai
相关产品推荐
相关产品推荐

