既存の IAM 実行ロールを使用して Hive メタストアに Athena を接続する - Amazon Athena

既存の IAM 実行ロールを使用して Hive メタストアに Athena を接続する

既存の IAM ロールを使用する Lambda 関数を使用して外部 Hive メタストアを Athena に接続するには、外部 Hive メタストア用の Athena コネクタのリファレンス実装を使用できます。

以下は、3 つの主なステップです。

  1. クローンと構築 – Athena リファレンス実装をクローンし、Lambda 関数コードが含まれる JAR ファイルを構築します。

  2. AWS Lambda コンソール – AWS Lambda コンソールで Lambda 関数を作成し、それに既存の IAM 実行ロールを割り当てて、生成した関数コードをアップロードします。

  3. Amazon Athena コンソール – Amazon Athena コンソールで、Athena クエリで外部 Hive メタストアを参照する際に使用するデータソース名を作成します。

カスタム IAM ロールを作成するアクセス許可がすでにある場合は、Lambda 関数の作成と設定に Athena コンソールと AWS Serverless Application Repository を使用する、よりシンプルなワークフローを使用できます。詳細については、「Athena を Apache Hive メタストアに接続する」を参照してください。

前提条件

Lambda 関数をクローンして構築する

Athena リファレンス実装の関数コードは、GitHub (awslabs/aws-athena-hive-metastore) にある Maven プロジェクトです。プロジェクトの詳細については、GitHub の対応する README ファイル、または本書の「Athena 外部 Hive メタストアコネクタを変更する」トピックを参照してください。

Lambda 関数コードをクローンして構築する
  1. 以下のコマンドを入力して、Athena リファレンス実装をクローンします。

    git clone https://github.com/awslabs/aws-athena-hive-metastore
  2. 以下のコマンドを実行して、Lambda 関数の .jar ファイルを構築します。

    mvn clean install

    プロジェクトが正常に構築されると、以下の .jar ファイルがプロジェクトのターゲットフォルダに作成されます。

    hms-lambda-func-1.0-SNAPSHOT-withdep.jar

    次のセクションでは、AWS Lambda コンソールを使用してこのファイルを Amazon Web Services アカウントにアップロードします。

AWS Lambda コンソールで Lambda 関数を作成して設定する

このセクションでは、AWS Lambda コンソールを使用して、既存の IAM 実行ロールを使用する関数を作成します。関数用の VPC を設定したら、関数コードをアップロードして、関数の環境変数を設定します。

Lambda 関数を作成する

このステップでは、既存の IAM ロールを使用する関数を AWS Lambda コンソールで作成します。

既存の IAM ロールを使用する Lambda 関数を作成する
  1. AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. ナビゲーションペインで、[Functions] (関数) を選択します。

  3. [関数の作成] を選択します。

  4. Author from scratch(製作者を最初から) を選択します。

  5. [Function name] (関数名) には、Lambda 関数の名前 (EHMSBasedLambda など) を入力します。

  6. [Runtime] (ランタイム) には [Java 8] を選択します。

  7. [Permissions] (許可) で、[Change default execution role] (デフォルトの実行ロールの変更) を展開します。

  8. [Execution role (実行ロール)] で、[Use an existing role (既存のロールを使用する)] を選択します。

  9. [Existing role] (既存のロール) には、Lambda 関数が Athena 向けに使用する IAM 実行ロールを選択します (この例では AthenaLambdaExecutionRole と呼ばれるロールを使用しています)。

  10. [Advanced settings (詳細設定)] を展開します。

  11. [Enable Network] (ネットワークの有効化) を選択します。

  12. [VPC] で、関数がアクセスする VPC を選択します。

  13. [Subnets] (サブネット) には、Lambda が使用する VPC サブネットを選択します。

  14. [Security groups] (セキュリティグループ) には、Lambda が使用する VPC セキュリティグループを選択します。

  15. [Create function (関数の作成)] を選択します。AWS Lambda コンソールが関数の設定ページを開き、関数の作成を開始します。

コードをアップロードして Lambda 関数を設定する

コンソールから関数が正常に作成されたことが通知されると、関数コードをアップロードして、その環境変数を設定する準備が整います。

Lambda 関数コードをアップロードしてその環境変数を設定する
  1. Lambda コンソールで、指定した関数ページの [Code] (コード) タブが開かれていることを確認します。

  2. [Code source] (コードソース) で、[Upload from] (アップロード元) をクリックした後、[.zip or .jar file] (.zip または.jar ファイル) を選択します。

  3. 先ほど生成した hms-lambda-func-1.0-SNAPSHOT-withdep.jar ファイルをアップロードします。

  4. [Lambda 関数] ページで、[設定] タブを選択します。

  5. 左側のペインで、[Environment variables] (環境変数) をクリックします。

  6. [環境変数] セクションで、[編集] を選択します。

    [Edit] (編集) をクリックして Lambda 関数の環境変数を編集します。
  7. [Edit environment variables] (環境変数の編集) ページで、[Add environment variable] (環境変数の追加) オプションを使用し、以下の環境変数のキーと値を追加します。

    • HMS_URIS – 以下の構文を使用して、ポート 9083 で Thrift プロトコルを使用する Hive メタストアホストの URI を入力します。

      thrift://<host_name>:9083
    • SPILL_LOCATION - Lambda 関数のレスポンスサイズが 4 MB を超える場合、スピルオーバーメタデータを保持するために Amazon Web Services アカウントの Amazon S3 ロケーションを指定します。

      Lambda 関数環境変数の値を指定します。
  8. [Save] を選択します。

これで、Lambda 関数を使用して Hive メタストアに接続するように、Athena を設定するための準備ができました。この手順については、「デプロイ済みの Hive メタストアコネクタを使用するように Athena を設定する」を参照してください。