几天来,我一直在努力解决最近发布的 redshift data-api 发生的一个奇怪问题。我尝试使用 execute statements api 在 Redshift 集群上执行 SQL 语句,并使用 list statements api 列出该语句。
在本地测试时,API 表现良好,我在列出语句时没有任何问题。然而,在 Lambda 上部署代码后,我突然无法找到任何已执行的查询,即使我收到了 200 个执行语句请求的响应。
以下是我的 CloudWatch 日志的摘录,显示了带有查询 ID 的执行语句 200 响应:
{
"level": "INFO",
"location": "execute_asynchronous_sql_query:71",
"message": {
"message": "Successfully submitted sql query to redshift cluster",
"query_id": "706a0ca1-084c-4733-a534-571993afd23a",
"execution_statement_response": {
"ClusterIdentifier": "#######",
"CreatedAt": "2021-01-15 06:00:37.504000+00:00",
"Database": "#######",
"Id": "706a0ca1-084c-4733-a534-571993afd23a",
"SecretArn": "arn:aws:secretsmanager:##############",
"ResponseMetadata": {
"RequestId": "#######",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"x-amzn-requestid": "#######",
"content-type": "application/x-amz-json-1.1",
"content-length": "237",
"date": "Fri, 15 Jan 2021 06:00:38 GMT"
},
"RetryAttempts": 0
},
"StatementName": "ww-redshift-asynch-2021-01-15T06:00:37.206308-summary_spots.sql"
}
},
"timestamp": "2021-01-15 06:00:38,008",
"service": "ww_dashboard",
"sampling_rate": 0,
"sample_rate": 0.4,
"xray_trace_id": "##############"
}
这是我在尝试使用具有该查询 ID 的 AWS cli 描述 SQL 语句状态时遇到的错误。
aws redshift-data describe-statement --id 706a0ca1-084c-4733-a534-571993afd23a
An error occurred (ResourceNotFoundException) when calling the DescribeStatement operation: Query does not exist.
执行
describe-statement
或get-statement-result
的角色/用户需要与您用于execute-statement
的角色/用户相同。
另外,需要是同一地区。
我遇到了类似的问题。我通过执行 ID 获取结果。任务刚提交时(大约1秒)会返回错误。但尽管出现此错误,我仍会轮询相同的 API,因此不会造成太大问题。