使用現有 IAM 執行角色將 Athena 連接到 Hive 中繼存放區 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用現有 IAM 執行角色將 Athena 連接到 Hive 中繼存放區

若要透過使用現有 IAM 角色的 Lambda 函數將您的外部 Hive 中繼存放區連接到 Athena,您可以使用適用於外部 Hive 中繼存放區的 Athena 連接器參考實作。

三個主要步驟如下:

  1. 複製與建置 – 複製 Athena 參考實作,並建置包含 Lambda 函數程式碼的 JAR 檔案。

  2. AWS Lambda 主控台 — 在 AWS Lambda 主控台中建立 Lambda 函數,為其指派現有的 IAM 執行角色,然後上傳您產生的函數程式碼。

  3. Amazon Athena 主控台 – 在 Amazon Athena 主控台中建立資料來源名稱,您可以使用此名稱來參考 Athena 查詢中的外部 Hive 中繼存放區。

如果您已經擁有建立自訂 IAM 角色的許可,則可以使用更簡單的工作流程,該工作流程使用 Athena 主控台, AWS Serverless Application Repository 以及建立和設定 Lambda 函數。如需詳細資訊,請參閱 將 Athena 連接到 Apache Hive 中繼存放區

必要條件

複製並建置 Lambda 函數

Athena 參考實現的函數代碼是一個位於 aws aws-athena-hive-metastore labs/ 上 GitHub 的 Maven 項目。如需有關專案的詳細資訊,請參閱上的對應 README 檔案 GitHub 或本文件中的參考實作主題。

若要複製並建置 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 函式

在此步驟中,您會在 AWS Lambda 主控台中建立使用現有 IAM 角色的函數。

若要建立使用現有 IAM 角色的 Lambda 函數
  1. 請登入 AWS Management Console 並開啟 AWS Lambda 主控台,網址為 https://console.aws.amazon.com/lambda/

  2. 在導覽視窗中,選擇函數

  3. 選擇 Create function (建立函數)

  4. 選擇從頭開始撰寫

  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. 選擇建立函數。 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 函數頁面上,選擇 Configuration (組態) 標籤。

  5. 從左側的窗格中選擇 Environment variables (環境變數)。

  6. Environment variables (環境變數) 區段中,選擇 Edit (編輯)。

    選擇 Edit (編輯) 來編輯 Lambda 函數的環境變數。
  7. Edit environment variables (編輯環境變數) 的頁面上,使用 Add environment variable (新增環境變數) 的選項新增下列環境變數索引鍵和值:

    • HMS_URIS – 以下列語法在連接埠 9083 上輸入使用 Thrift 通訊協定的 Hive 中繼存放區主機的 URI。

      thrift://<host_name>:9083
    • SPILL_LOCATION – 指定您的 Amazon Web Services 帳戶中的 Amazon S3 位置,如果 Lambda 函數回應大小超過 4 MB,此位置會保留溢出的中繼資料。

      指定 Lambda 函數環境變數的值。
  8. 選擇儲存

此時,您可以將 Athena 設定為使用 Lambda 函數連接到您的 Hive 中繼存放區。如需這些步驟,請參閱 將 Athena 設定為使用已部署的 Hive 中繼存放區連接器