我正在使用 AWS Lambda (Node.js/JavaScript) 和 AWS AppSync 开发无服务器应用程序。在我的应用程序中,我使用 Athena 对 S3 文件运行查询。我在有效监控状态并获取从 Lambda 函数发起的 Athena 查询的实时结果方面面临挑战。
这是我当前实施的总结:
我使用await athena.startQueryExecution(params).promise();触发Athena查询在我的 Lambda 函数中。 我知道检查查询的状态涉及轮询 getQueryExecution 直到完成。 我正在寻找一种更实时的方法或替代解决方案来监视 Athena 查询状态并获取结果,而无需不断轮询。 挑战:
轮询会带来延迟,我正在寻求更实时的解决方案。 我探索了 AWS Step Functions、CloudWatch Events 和 Lambda Destinations,但尚未找到令人满意的解决方案。 客观的: 我希望有效监控从 Lambda 函数发起的 Athena 查询的执行状态并获取实时结果,而无需诉诸连续轮询。
代码示例:
const queryResults = await athena.startQueryExecution(params).promise();
问题:
是否有其他方法或最佳实践可以通过 Lambda 函数实时监控 Athena 查询? 是否有一种更加事件驱动且不涉及连续轮询的解决方案? 如何优化流程以减少获取查询结果的延迟?
提前致谢。!
没有这样的事。除了轮询之外,AWS 不会公开任何可用于此目的的 API。
一种选择是在 S3 存储桶内创建对象时触发处理 Lambda