本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
重要
Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解
利用 Amazon S3 Select,您可以使用結構式查詢語言 (SQL) 陳述式篩選與擷取 Amazon S3 物件內容,取得您只需要的資料子集。藉由使用 Amazon S3 Select 篩選資料,您可以降低 Amazon S3 的傳輸量,減少成本和擷取資料的延遲。
Amazon S3 Select 僅允許您一次查詢一個物件。適用於以 CSV、JSON 或 Apache Parquet 格式儲存的物件。也適用於使用 GZIP 或 BZIP2 壓縮的物件 (僅針對 CSV 和 JSON 物件),以及伺服器端加密物件。您也可以指定結果格式,CSV 或 JSON,決定您要如何分隔記錄結果。
您在要求中,傳遞 SQL 運算式給 Amazon S3。Amazon S3 Select 支援 SQL 的子集。關於由 Amazon S3 Select 所支援的 SQL 元素之詳細資訊,請參閱 適用於 Amazon S3 Select 的 SQL 參考。
您可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI)、SelectObjectContent
REST API 操作或 AWS SDKs來執行 SQL 查詢。
注意
Amazon S3 主控台限制傳回資料檔流量為 40 MB。若要擷取更多資料,請使用 AWS CLI 或 API。
需求與限制
以下是使用 Amazon S3 Select 的需求:
-
您必須擁有您正在查詢物件的
s3:GetObject
許可。 -
如果要查詢的物件,使用客戶提供的加密金鑰 (SSE-C) 進行加密,您需使用
https
,也必須在請求中提供加密金鑰。
以下是使用 Amazon S3 Select 時套用的限制:
-
S3 Select 在一個請求中只能查詢一個物件。
-
SQL 運算式字串的長度上限為 256 KB。
-
輸入或結果記錄的長度上限為 1 MB。
-
Amazon S3 Select 只可使用 JSON 輸出格式發送巢狀資料。
-
您無法查詢儲存在 S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive 或低冗餘儲存 (RRS) 儲存類別中的物件。您也無法查詢儲存在 S3 Intelligent-Tiering Archive Access 層或 S3 Intelligent-Tiering Deep Archive Access 層的物件。如需儲存體方案的詳細資訊,請參閱「了解和管理 Amazon S3 儲存類別」。
搭配 Parquet 物件使用 Amazon S3 Select 時,會有額外的限制:
-
Amazon S3 Select 只支援使用 GZIP 或 Snappy 的單欄式壓縮。Amazon S3 Select 不支援 Parquet 物件的全物件壓縮。
-
Amazon S3 Select 不支援 Parquet 輸出。您必須將輸出格式指定為 CSV 或 JSON。
-
未壓縮的列群組大小上限為 512 MB。
-
您必須使用物件結構描述中指定的資料類型。
-
選取重複的欄位只會傳回最後一個值。
建構與要求
當您建構一項請求時,您需提供使用 InputSerialization
物件查詢的物件的詳細資訊。您提供使用 OutputSerialization
物件傳回結果的詳細資訊。也還包況括使用 Amazon S3 的 SQL 運算式,篩選要求。
如需建構 Amazon S3 Select 請求的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 SelectObjectContent。您也可以在以下章節中,看到其中一則 SDK 程式碼範例:
使用掃描範圍的要求
Amazon S3 Select 可讓您以指定要查詢的位元範圍方式掃描一個物件的子集。此功能可讓您透過將一系列非重疊掃描範圍的工作分割成個別 Amazon S3 Select 要求的方式,平行掃描整個物件。
掃描範圍不需要與記錄界線對齊。Amazon S3 Select 掃描範圍要求將在指定的位元範圍中執行。記錄如果在指定的掃描範圍中開始,但超出掃描範圍,則會由查詢處理。例如:以下內容顯示了一個 Amazon S3 物件,其中包含以行分隔的 CSV 格式的一系列記錄:
A,B C,D D,E E,F G,H I,J
假設您使用 Amazon S3 Select ScanRange
參數,並以 (位元) 1 開始,然後以 (位元) 4 結束。因此,掃描範圍會從「,
」開始,然後掃描至從記錄結尾 C
為止。您的掃描範圍請求將返回結果 C, D
,因為這是記錄的結尾。
Amazon S3 Select 掃描範圍請求支援 Parquet、CSV (不含引號分隔符號) 或 JSON 物件 (僅 LINES
模式)。CSV 和 JSON 物件必須為未壓縮。如為行式 CSV 和 JSON 物件,當掃描範圍指定為 Amazon S3 Select 要求的一部分時,所有在掃描範圍內開始的記錄都會進行處理。如為 Parquet 物件,所有在請求的掃描範圍內開始的列群組都會進行處理。
Amazon S3 Select 掃描範圍請求可與 AWS CLI、Amazon S3 API 和 AWS SDKs 搭配使用。您可以在此功能的 Amazon S3 Select 要求中使用 ScanRange
參數。如需詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的 SelectObjectContent。
錯誤
當 Amazon S3 Select 嘗試執行查詢且遇到問題時,會傳回錯誤代碼及其相關訊息。如需錯誤代碼和說明清單,請參閱 Amazon Simple Storage Service API 參考中,錯誤回應頁面的 SELECT 物件內容錯誤代碼清單一節。
如需 Amazon S3 Select 的詳細資訊,請參閱下方主題。