Amazon Athena Timestream 連接器 - Amazon Athena

Amazon Athena Timestream 連接器

Amazon Athena Timestream 連接器讓 Amazon Athena 能夠與 Amazon Timestream 進行通訊,從而可透過 Amazon Athena 存取您的時間序列資料。您可以選擇是否使用 AWS Glue Data Catalog 作為補充中繼資料的來源。

Amazon Timestream 是快速、可擴展、全受管、專門打造的時間序列資料庫,可讓您每天輕鬆存放和分析數兆個時間序列資料點。Timestream 會將最近的資料保存在記憶體中,並根據使用者定義的政策將歷史資料移到成本最佳化的儲存層,藉此節省您管理時間序列資料生命週期的時間和成本。

此連接器可以作為聯合目錄向 Glue Data Catalog 註冊。它可在目錄、資料庫、資料表、資料欄、資料列和標籤層級支援 Lake Formation 中定義的資料存取控制。此連接器使用 Glue 連線來集中 Glue 中的組態屬性。

如果您的帳戶中已啟用 Lake Formation,則您在 AWS Serverless Application Repository 中部署的 Athena 聯合 Lambda 連接器的 IAM 角色在 Lake Formation 中必須具有 AWS Glue Data Catalog 的讀取存取權。

必要條件

參數

使用本節中的參數來設定 Timestream 連接器。

我們建議您使用 Glue 連線物件來設定 Timestream 連接器。為此,請將 Timestream 連接器 Lambda 的 glue_connection 環境變數設定為要使用的 Glue 連線名稱。

Glue 連線屬性

使用下列命令來取得 Glue 連線物件的結構描述。此結構描述包含可用於控制連線的所有參數。

aws glue describe-connection-type --connection-type TIMESTREAM

Lambda 環境屬性

glue_connection – 指定與聯合連接器關聯的 Glue 連線名稱。

注意
  • 使用 Glue 連線的所有連接器都必須使用 AWS Secrets Manager 來存放憑證。

  • 使用 Glue 連線建立的 Timestream 連接器不支援使用多工處理常式。

  • 使用 Glue 連線建立的 Timestream 連接器僅支援 ConnectionSchemaVersion 2。

注意

2024 年 12 月 3 日及之後建立的 Athena 資料來源連接器使用 AWS Glue 連線。

下方列出的參數名稱和定義適用於未使用關聯 Glue 連線建立的 Athena 資料來源連接器。只有在您手動部署舊版 Athena 資料來源連接器或未指定 glue_connection 環境屬性時,才會使用下列參數。

Lambda 環境屬性

  • spill_bucket - 針對超過 Lambda 函數限制的資料,指定 Amazon S3 儲存貯體。

  • spill_prefix - (選用) 預設為指定的 spill_bucket 中名為 athena-federation-spill 的子資料夾。我們建議您在此位置設定 Amazon S3 儲存生命週期,以刪除超過預定天數或小時數的溢出。

  • spill_put_request_headers – (選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的 JSON 編碼映射 (例如,{"x-amz-server-side-encryption" : "AES256"})。如需其他可能的標頭,請參閱《Amazon Simple Storage Service API 參考》中的 PutObject

  • kms_key_id - (選用) 依預設,任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰,例如 a7e63k4b-8loc-40db-a2a1-4d0en2cd8331,您可以指定 KMS 金鑰 ID。

  • disable_spill_encryption - (選用) 當設定為 True 時,停用溢出加密。預設為 False,因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能,尤其是如果溢出位置使用伺服器端加密

  • glue_catalog - (選用) 使用此選項可指定跨帳戶 AWS Glue 目錄。依預設,連接器會嘗試從自己的 AWS Glue 帳戶中獲取中繼資料。

在 AWS Glue 中設定資料庫和資料表

您可以選擇是否使用 AWS Glue Data Catalog 作為補充中繼資料的來源。若要啟用 AWS Glue 資料表以便與 Timestream 搭配使用,您必須擁有 AWS Glue 資料庫和資料表,其名稱符合您要為其提供補充中繼資料的 Timestream 資料庫和資料表。

注意

為了獲得最佳效能,請僅使用小寫作為資料庫名稱和資料表名稱。使用混合大小寫會導致連接器執行運算密集程度較高的不區分大小寫搜尋。

若要設定 AWS Glue 資料表以便與 Timestream 搭配使用,您必須在 AWS Glue 中設定其資料表屬性。

若要使用 AWS Glue 資料表作為補充中繼資料
  1. 編輯 AWS Glue 主控台中的資料表,新增以下資料表屬性:

    • timestream-metadata-flag - 此屬性向 Timestream 連接器發出指示,連接器可使用資料表作為補充中繼資料。您可以為 timestream-metadata-flag 提供任何值,只要 timestream-metadata-flag 屬性存在於資料表屬性清單中。

    • _view_template - 當您使用 AWS Glue 作為補充中繼資料時,可以使用此資料表屬性,並指定任何 Timestream SQL 作為檢視。Athena Timestream 連接器會使用檢視中的 SQL 以及 Athena 中的 SQL 來執行查詢。如果您想要使用 Athena 中沒有的 Timestream SQL 功能,這會非常有用。

  2. 請務必使用適合 AWS Glue 的資料類型,如本文件中所示。

資料類型

目前,Timestream 連接器僅支援 Timestream 中部份的可用資料類型,尤其是:純量值 varchardoubletimestamp

若要查詢 timeseries 資料類型,您必須在 AWS Glue 資料表屬性中設定一個使用 Timestream CREATE_TIME_SERIES 函數的檢視。您還需要為檢視提供結構描述,它使用語法 ARRAY<STRUCT<time:timestamp,measure_value::double:double>> 作為任何時間序列欄的類型。請務必將 double 取代為適合您的資料表的純量類型。

下圖顯示了 AWS Glue 資料表屬性範例,其已設定為在時間序列中設定檢視。

在 AWS Glue 中設定資料表屬性,以設定時間序列中的檢視。

所需的許可

如需詳細了解此連接器所需的 IAM 政策,請檢閱 athena-timestream.yaml 檔案的 Policies 部分。以下清單摘要說明所需的許可。

  • Amazon S3 寫入存取 - 連接器需要 Amazon S3 中某個位置的寫入存取權,以便從大型查詢中溢寫結果。

  • Athena GetQueryExecution - 當上游 Athena 查詢終止時,連接器會使用此許可快速失敗。

  • AWS Glue Data Catalog - Timestream 連接器需要 AWS Glue Data Catalog 的唯讀存取權,以獲取結構描述資訊。

  • CloudWatch Logs - 連接器需要存取 CloudWatch Logs 以儲存日誌。

  • Timestream Access - 用於執行 Timestream 查詢。

效能

建議您使用 LIMIT 子句將傳回的資料 (非掃描的資料) 限制在 256 MB 以下,以確保互動式查詢效能良好。

Athena Timestream 連接器執行述詞下推,以減少查詢掃描的資料。LIMIT 子句可減少掃描的資料量,但是如果未提供述詞,則應預期含有 LIMIT 子句的 SELECT 查詢可掃描至少 16 MB 的資料。選取資料欄子集可大幅加速查詢執行時間,並減少掃描的資料。Timestream 連接器由於並行而對限流保有彈性。

傳遞查詢

Timestream 連接器支援傳遞查詢。傳遞查詢使用資料表函式,可將您的完整查詢下推到資料來源以便執行。

若要透過 Timestream 使用傳遞查詢,您可以使用下列語法:

SELECT * FROM TABLE( system.query( query => 'query string' ))

下列範例查詢會將查詢下推到 Timestream 中的資料來源。查詢會選取 customer 資料表中的所有資料欄,並將結果限制為 10。

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))

授權資訊

Amazon Athena Timestream 連接器專案是依據 Apache-2.0 License 來授權的。

其他資源

如需此連接器的其他資訊,請造訪 GitHub.com 上的相應網站