OpenSearch 服務連接 - AWS Glue

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

OpenSearch 服務連接

您可以在 AWS Glue 4.0 及更新版本中使用 Spark 的 AWS Glue 來讀取和寫入 OpenSearch 服務中的資料表。您可以使用 OpenSearch 查詢定義要從 OpenSearch 服務讀取的內容。您可以使用AWS Secrets Manager透過 AWS Glue 連線儲存在中的 HTTP 基本驗證認證連線到 OpenSearch 服務。此功能與無伺 OpenSearch 服器服務不相容。

如需有關 Amazon OpenSearch 服務的詳細資訊,請參閱 Amazon OpenSearch 服務文件

設定 OpenSearch 服務連線

若要從 AWS Glue 連線到 OpenSearch 服務,您必須在AWS Secrets Manager密碼中建立並儲存您的 OpenSearch 服務認證,然後將該機密與 OpenSearch Service AWS Glue 連線建立關聯。

先決條件:

若要設定 OpenSearch 服務的連線:
  1. 在中AWS Secrets Manager,使用您的 OpenSearch 服務認證建立密碼。若要在 Secrets Manager 中建立機密,請遵循 AWS Secrets Manager 文件中建立 AWS Secrets Manager 機密中提供的教學課程。建立機密之後,請保留機密名稱 secretName,以便進行下一個步驟。

    • 在選取鍵/值組時,請使用 aosUser 值來建立 opensearch.net.http.auth.user 金鑰對。

    • 在選取鍵/值組時,請使用 aosPassword 值來建立 opensearch.net.http.auth.pass 金鑰對。

  2. 在 AWS Glue 主控台中,依照 新增 AWS Glue 連線 中的步驟建立連線。建立連線之後,請保留連線名稱 connectionName,以便未來在 AWS Glue 中使用。

    • 選取連線類型時,請選取 OpenSearch 服務。

    • 選取網域端點時,請提供 aosEndpoint

    • 選取連接埠時,請提供 aosPort

    • 選取 AWS 機密時,請提供 secretName

建立 AWS Glue OpenSearch 服務連線後,您必須先執行下列步驟,才能執行 AWS Glue 工作:

  • 授予與您 AWS Glue 任務許可相關聯的 IAM 角色,以讀取 secretName

  • 在您的 AWS Glue 任務組態中,提供 connectionName 作為其他網路連線

從 OpenSearch 服務索引讀取

先決條件:

  • 您想從中讀取的 OpenSearch 服務索引,AoSin dex。

  • 設定為提供驗證和網路位置資訊的 AWS Glue OpenSearch 服務連線。若要取得此功能,請完成上一個程序中的步驟:設定與 OpenSearch 服務的連線。您將會需要 AWS Glue 連線的名稱,connectionName

這個例子從 Amazon OpenSearch 服務讀取索引。您將需要提供 pushdown 參數。

例如:

opensearch_read = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", "pushdown": "true", } )

您也可以提供查詢字串,以篩選 DynamicFrame. 您將需要設定 opensearch.query

opensearch.query 可接受 URL 查詢參數字串 queryString 或查詢 DSL JSON 物件 queryObject。如需有關查詢 DSL 的詳細資訊,請參閱文件中的查詢 DSL。 OpenSearch若要提供 URL 查詢參數字串,請在查詢前面加上 ?q= 字首 (如同您會在完整 URL 中加上字首)。若要提供查詢 DSL 物件,請將 JSON 物件字串逸出後再進行。

例如:

queryObject = "{ "query": { "multi_match": { "query": "Sample", "fields": [ "sample" ] } } }" queryString = "?q=queryString" opensearch_read_query = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", "opensearch.query": queryString, "pushdown": "true", } )

如需如何在特定語法之外建立查詢的詳細資訊,請參閱 OpenSearch 文件中的查詢字串語法

從包含陣列類型資料的 OpenSearch 集合讀取時,您必須使用opensearch.read.field.as.array.include參數在方法呼叫中指定哪些欄位是陣列類型。

例如,在閱讀下列文件時,您會遇到 genreactor 陣列欄位:

{ "_index": "movies", "_id": "2", "_version": 1, "_seq_no": 0, "_primary_term": 1, "found": true, "_source": { "director": "Frankenheimer, John", "genre": [ "Drama", "Mystery", "Thriller", "Crime" ], "year": 1962, "actor": [ "Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom" ], "title": "The Manchurian Candidate" } }

在此情況下,您會在方法呼叫中包含那些欄位名稱。例如:

"opensearch.read.field.as.array.include": "genre,actor"

如果在文件結構中將陣列欄位巢狀化,請使用點標記法來表示:"genre,actor,foo.bar.baz"。這將透過內含嵌入文件 barfoo 嵌入文件,指定來源文件中包含的 baz 陣列。

寫入 OpenSearch 服務資料表

此範例會將現有 DynamicFrame動態框架的資訊寫入服務。 OpenSearch 如果索引已有資訊,AWSGlue 會從您的 DynamicFrame. 您將需要提供 pushdown 參數。

先決條件:

  • 您想要寫入的 OpenSearch 服務表。您將需要資料表的識別資訊。我們稱此為 tableName

  • 設定為提供驗證和網路位置資訊的 AWS Glue OpenSearch 服務連線。若要取得此功能,請完成上一個程序中的步驟:設定與 OpenSearch 服務的連線。您將會需要 AWS Glue 連線的名稱,connectionName

例如:

glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", }, )

OpenSearch 服務連線選項參考

  • connectionName – 必要。用於讀取/寫入。AWSGlue OpenSearch 服務連線的名稱,設定為為您的連線方法提供驗證和網路位置資訊。

  • opensearch.resource – 必要。用於讀取/寫入。有效值: OpenSearch 索引名稱。將會與您的連線方法互動的索引名稱。

  • opensearch.query – 用於讀取。有效值:字串逸出的 JSON,或此字串以 ? 開頭時,URL 的搜尋部分。篩選讀取時應擷取的內容的 OpenSearch 查詢。如需有關使用此參數的詳細資訊,請參閱上一節 從 OpenSearch 服務索引讀取

  • pushdown:如有需要。用於讀取。有效值:布林值。指示 Spark 傳遞讀取查詢下來,以 OpenSearch 便數據庫只返回相關文檔。

  • opensearch.read.field.as.array.include:如果讀取的是陣列類型資料,則需要。用於讀取。有效值:以逗號分隔的欄位名稱清單。指定要從 OpenSearch 文件中讀取為陣列的欄位。如需有關使用此參數的詳細資訊,請參閱上一節 從 OpenSearch 服務索引讀取