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年前
コメントはありません

関連するコンテンツ