如何在 Amazon Athena 中计划查询?

2 分钟阅读
0

我想在 Amazon Athena 中计划查询。

简短描述

计划查询在许多情况下都很有用,例如运行定期报告查询或定期加载新分区。以下是在 Athena 中计划查询的一些方法:

解决方案

按照以下步骤,使用 Lambda 函数和 EventBridge 规则来计划 Athena 查询:

1.为 Lambda 创建 AWS Identity and Access Management(IAM)服务角色。然后,附加一个允许访问 Athena、Amazon Simple Storage Service(Amazon S3)和 Amazon CloudWatch Logs 的策略。例如,可以将 AmazonAthenaFullAccessCloudWatchLogsFullAccess 添加到该角色中。AmazonAthenaFullAccess 允许完全访问 Athena 并包含访问 Amazon S3 的基本权限。**CloudWatchLogsFullAccess ** 允许完全访问 CloudWatch Logs。

2.打开 Lambda 控制台

3.选择创建函数

4.确保选择从头开始创作,然后配置以下选项:

对于名称,输入函数名称。
对于 Runtime(运行时),选择一个 Python 选项。
对于角色,选择使用现有角色,然后选择您在步骤 1 中创建的 IAM 角色。

5.选择创建函数

6.将代码粘贴到函数代码部分。以下示例使用 Python 3.7。请替换示例中的下列值:

默认:Athena 数据库名称
SELECT\ * FROM default.tb:您要计划的查询
s3://AWSDOC-EXAMPLE-BUCKET/:用于存储查询输出的 S3 存储桶

import boto3

# Query string to execute
query = 'SELECT * FROM database.tb'

# Database to execute the query against
DATABASE = 'database'

# Output location for query results
output='s3://OUTPUTBUCKET/'

def lambda_handler(event, context):
    # Initiate the Boto3 Client
    client = boto3.client('athena')

    # Start the query execution
    response = client.start_query_execution(
        QueryString=query,
        QueryExecutionContext={
            'Database': DATABASE
        },
        ResultConfiguration={
            'OutputLocation': output
        }
    )

    # Return response after starting the query execution
    return response

7.选择部署

8.打开 Amazon EventBridge 控制台

9.在导航窗格中,选择 Rules(规则),然后选择 Create rule(创建规则)。

10.输入规则的名称和描述。

11.对于定义模式,选择计划

12.选择 Cron 表达式,然后输入 cron 表达式

13.对于选择事件总线,选择 AWS 默认事件总线

14.在选择目标部分,执行以下操作:

对于目标,从下拉列表中选择 ** Lambda 函数**。对于函数,从下拉列表中选择您的 Lambda 函数的名称。

15.选择创建

如果您要计划多个查询,请注意,每个账户对 Athena API 的调用次数有配额。有关更多信息,请参阅 Per account API call quotas


相关信息

Tutorial: Schedule AWS Lambda functions using EventBridge

Creating an Amazon EventBridge rule that runs on a schedule

AWS 官方
AWS 官方已更新 1 年前