30歳パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

lambda(python)で定期的にAthenaのMSCK REPAIR TABLEを行う

Athenaを使うようにして、パーティションの更新を都度行うのが面倒だったので自動的に行われるようにした。

下記のようなlambda関数を作成して、Cloudwatchでcron式で定期実行ルールを設定した。

import boto3

client = boto3.client('athena')
 
def lambda_handler(event, context):
    sql = 'MSCK REPAIR TABLE テーブル名;'
    print('sql=' + sql)
    client.start_query_execution(
        QueryString=sql,
        QueryExecutionContext={
            'Database': 'データベース名'
        },
        ResultConfiguration={
            'OutputLocation': 's3://実行結果の保存先バケット'
        }
    )