123456789101112131415161718192021222324252627 |
- import boto3
- from decorators import with_logging
- client = boto3.client("athena")
- @with_logging
- def handler(event, context):
- execution_retries_left = event["ExecutionRetriesLeft"]
- execution_details = client.get_query_execution(QueryExecutionId=event["QueryId"])[
- "QueryExecution"
- ]
- state = execution_details["Status"]["State"]
- needs_retry = state == "FAILED" or state == "CANCELLED"
- if needs_retry:
- execution_retries_left -= 1
- result = {
- **event,
- "State": state,
- "Reason": execution_details["Status"].get("StateChangeReason", "n/a"),
- "Statistics": execution_details["Statistics"],
- "ExecutionRetriesLeft": execution_retries_left,
- }
- return result
|