使用現有的IAM執行角色將 Athena Connect 到 Hive 中繼存儲 - Amazon Athena

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

使用現有的IAM執行角色將 Athena Connect 到 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 Connect 到阿帕奇蜂巢中繼存儲

必要條件

複製並建置 Lambda 函數

Athena 參考實現的函數代碼是一個位於 aws aws-athena-hive-metastore labs/ 上 GitHub 的 Maven 項目。若要取得有關專案的詳細資訊,請參閱本文件中的對應README檔案 GitHub 或修改 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 函式

在此步驟中,您會在 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. 對於現有角色,請選擇 Lambda 函數將用於 Athena 的IAM執行角色 (此範例使用稱為的角色AthenaLambdaExecutionRole)。

  10. 展開 Advanced settings (進階設定)。

  11. 選取 Enable Network (啟用網路)。

  12. 對於 VPC,選擇您VPC的函數可以存取的項目。

  13. 對於子網路,請選擇要使用的 Lambda VPC 子網路。

  14. 對於安全群組,請選擇要使用的 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 通訊協定URI的 Hive 中繼存放區主機。

      thrift://<host_name>:9083
    • SPILL_ LOCATION — 在您的 Amazon 網路服務帳戶中指定 Amazon S3 位置,以便在 Lambda 函數回應大小超過 4 MB 時保留溢出的中繼資料。

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

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