You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Athena客户端中无法使用ResultReuseConfiguration的问题排查

AWS Athena JavaScript SDK 报错:UnexpectedParameter: Unexpected key 'ResultReuseConfiguration' found in params

问题详情

尝试通过JavaScript SDK在AWS Athena中启用查询结果重用功能,CloudWatch抛出错误:
UnexpectedParameter: Unexpected key 'ResultReuseConfiguration' found in params

使用的代码如下:

const params = {
  QueryString: `SELECT * FROM "some_database"."some_table"`,
  ResultConfiguration: {
    OutputLocation: "someurl",
  },
  ResultReuseConfiguration: {
    ResultReuseByAgeConfiguration: {
      Enabled: true,
      MaxAgeInMinutes: 10800,
    },
  },
};

athena.startQueryExecution(params, function (err, data) {
  if (err) {
    console.log(err, err.stack);
  } else {
    console.log(data);
    const queryExecutionId = data.QueryExecutionId;
    // 后续逻辑
  }
});

代码结构与Athena官方API请求语法一致,但使用的@aws-sdk/client-athena版本为3.264.0,理论上应支持ResultReuseConfiguration参数。

报错原因

  1. SDK版本参数校验未同步:3.264.0版本虽处于参数支持的时间范围内,但可能存在类型定义或参数校验逻辑未完全同步API更新的情况。
  2. 调用方式不兼容:使用SDK v3的传统回调式调用(athena.startQueryExecution),该兼容模式可能未适配ResultReuseConfiguration这类较新的参数。
  3. WorkGroup配置冲突:若指定的WorkGroup已预设结果重用规则,代码中手动传入的参数可能触发校验冲突。

解决方法

  • 升级SDK版本:将@aws-sdk/client-athena升级至3.300.0及以上版本,确保参数定义与API完全同步。执行命令:
    npm install @aws-sdk/client-athena@latest
    
  • 改用SDK v3命令式调用:使用SDK v3推荐的命令模式,该模式对新参数支持更完善:
    import { AthenaClient, StartQueryExecutionCommand } from "@aws-sdk/client-athena";
    
    // 初始化客户端
    const athenaClient = new AthenaClient({ region: "你的AWS区域" });
    
    const params = {
      QueryString: `SELECT * FROM "some_database"."some_table"`,
      ResultConfiguration: {
        OutputLocation: "someurl",
      },
      ResultReuseConfiguration: {
        ResultReuseByAgeConfiguration: {
          Enabled: true,
          MaxAgeInMinutes: 10800,
        },
      },
    };
    
    // 发送命令
    const command = new StartQueryExecutionCommand(params);
    try {
      const response = await athenaClient.send(command);
      const queryExecutionId = response.QueryExecutionId;
      // 后续业务逻辑
    } catch (error) {
      console.error("查询执行失败:", error);
    }
    
  • 检查WorkGroup配置:若使用的WorkGroup已配置默认结果重用规则,可移除代码中的ResultReuseConfiguration参数,直接复用WorkGroup的预设配置;若需自定义,确保WorkGroup允许覆盖默认规则。

内容的提问来源于stack exchange,提问作者Qrow Saki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:25:32