OpenSearch Service 連線 - AWS Glue

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

OpenSearch Service 連線

您可以使用 AWS 適用於 Spark 的 Glue,在 Glue 4.0 和更新版本中讀取和寫入 OpenSearch Service AWS 中的資料表。您可以使用 OpenSearch 查詢定義要從 OpenSearch Service 讀取的內容。您可以使用 AWS Secrets Manager 透過 Glue 連線存放於 中的 HTTP AWS 基本身分驗證登入資料來連線至 OpenSearch Service。此功能與 OpenSearch Service Serverless 不相容。

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

設定 OpenSearch Service 連線

若要從 Glue AWS 連線至 OpenSearch Service,您需要在 AWS Secrets Manager 秘密中建立和存放您的 OpenSearch Service 登入資料,然後將該秘密與 OpenSearch Service AWS Glue 連線建立關聯。

先決條件:

  • 依照 Amazon OpenSearch Service 文件中的說明,識別您想要讀取的網域端點 aosEndpoint 和連接埠 aosPort 或建立資源。如需有關建立網域的詳細資訊,請參閱《Amazon OpenSearch Service 文件》中的建立和管理 Amazon OpenSearch Service 網域

    Amazon OpenSearch Service 網域端點將會顯示下列預設格式:https://search-domainName-unstructuredIdContent.region.es.amazonaws.com。如需有關識別網域端點的詳細資訊,請參閱《Amazon OpenSearch Service 文件》中的建立和管理 Amazon OpenSearch Service 網域

    識別或產生您網域的 HTTP 基本身分驗證憑證 aosUseraosPassword

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

    • 在選取鍵/值組時,請使用 aosUser 值來建立 USERNAME 金鑰對。

    • 在選取鍵/值組時,請使用 aosPassword 值來建立 PASSWORD 金鑰對。

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

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

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

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

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

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

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

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

從 OpenSearch Service 索引讀取

先決條件:

  • 您想要讀取的 OpenSearch Service 索引 aosIndex

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

此範例會從 Amazon OpenSearch Service 讀取索引。您將需要提供 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 的詳細資訊,請參閱《OpenSearch 文件》中的查詢 DSL。若要提供 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 Service 資料表

此範例會從現有的 DynamicFrame dynamicFrame 將資訊寫入 OpenSearch Service。如果索引已有資訊, AWS Glue 將從您的 DynamicFrame 附加資料。您將需要提供 pushdown 參數。

先決條件:

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

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

例如:

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

OpenSearch Service 連線選項參考

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

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

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

  • pushdown:如有需要。用於讀取。有效值:布林值。指示 Spark 將讀取查詢傳遞給 OpenSearch,如此資料庫只會傳回相關的文件。

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