微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Step 函数中的“Athena.InvalidRequestException”

如何解决Step 函数中的“Athena.InvalidRequestException”

我正在尝试从输入中读取查询字符串,但步骤函数给出 - "Athena.InvalidRequestException"

{
  "StartAt": "CallFunction","States": {
    "CallFunction": {
      "Type": "Task","Resource": "arn:aws:lambda:us-west-2:12345:function:readFile","ResultPath": "$.query","Next": "Start an Athena query"
    },"Start an Athena query": {
      "Resource": "arn:aws:states:::athena:startQueryExecution.sync","Parameters": {
        "QueryString": "$.query","WorkGroup": "primary","ResultConfiguration": {
          "OutputLocation": "s3://test_athena/test1"
        }
      }
  }
}

启动 Athena 查询状态的输入:

{
  "Comment": "Insert your JSON here","query": "\"SELECT *   FROM test1   LIMIT 10;  \""
}

在启动 Athena 查询状态时出现以下错误

{
  "resourceType": "athena","resource": "startQueryExecution.sync","error": "Athena.InvalidRequestException","cause": "line 1:1: mismatched input '$'. Expecting: 'ALTER','ANALYZE','CALL','COMMIT','CREATE','DEALLOCATE','DELETE','DESC','DESCRIBE','DROP','EXECUTE','EXPLAIN','GRANT','INSERT','PREPARE','RESET','REVOKE','ROLLBACK','SET','SHOW','START','UNLOAD','UPDATE','USE',<query> (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException; Request ID: 2a99f6eb-b853-407f-b229-d309a4ca3f5c; Proxy: null)"
}

我是 AWS 的新手。有人可以帮助我解决如何在 Athena 的 QueryString 参数中传递查询对象吗?

解决方法

您的 QueryString 键中缺少“.$”注释:

"QueryString.$": "$.query",

[...] [您的参数字段] 的值可以是包含在状态机定义中的静态值,也可以是从输入或具有路径的上下文对象中选择的值。对于使用路径选择值的键值对,键名必须以 .$ 结尾。

来源:https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters

此外,您应该在第二个状态中添加以下字段,以便在那里明确:

"Type": "Task","End": true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。