如何排程 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.    確定已選取從頭開始創作,然後設定下列選項:

對於名稱,輸入函數的名稱。
對於執行時期,選擇其中一個 Python 選項。
對於角色,選擇使用現有角色,然後選擇您在步驟 1 中建立的 IAM 角色。

5.    選擇建立函數

6.    將您的程式碼貼至函數程式碼部分。下列範例使用 Python 3.7。取代範例中的下列值:

default: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.    在導覽窗格中,選擇規則,然後選擇建立規則

10.    輸入規則的名稱和說明。

11.    對於定義模式,選取排程

12.    選取 Cron 表達式,然後輸入 cron 表達式

13.    對於選取事件匯流排,選取 AWS 預設事件匯流排

14.    在選取目標區段中,執行下列動作:

對於目標,從下拉式清單中選取 Lambda 函數。對於函數,從下拉式清單中選取 Lambda 函數的名稱。

15.    選擇建立

如果您要排程多個查詢,請注意,每個帳戶的 Athena API 呼叫數量都有配額。如需詳細資訊,請參閱每個帳戶 API 呼叫配額


相關資訊

教程: 使用 EventBridge 排程 AWS Lambda 函數

建立按排程執行的 Amazon EventBridge 規則

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