

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

# 建立自訂連接器
<a name="creating-custom-connectors"></a>

您也可以建置自己的連接器，然後將連接器程式碼上傳到 AWS Glue Studio。

自訂連接器會透過 AWS Glue Spark 執行時間 API 整合至 AWS Glue Studio。AWS Glue Spark 執行時間可讓您插入任何符合 Spark、Athena 或 JDBC 介面的連接器。它可讓您傳入任何可用於自訂連接器的連線選項。

您可以使用 [AWS Glue 連線](https://docs.aws.amazon.com/glue/latest/dg/glue-connections.html)封裝所有連線屬性並提供連線名稱給您的 ETL 任務。與 Data Catalog 連線整合可讓您在單一 Spark 應用程式或不同應用程式之間，跨多個呼叫使用相同的連線屬性。

您可以為連線指定其他選項。AWS Glue Studio 產生的任務指令碼包含 `Datasource` 項目，該項目使用連線以指定的連線選項插入連接器。例如：

```
Datasource = glueContext.create_dynamic_frame.from_options(connection_type = 
"custom.jdbc", connection_options = {"dbTable":"Account","connectionName":"my-custom-jdbc-
connection"}, transformation_ctx = "DataSource0")
```

**將自訂連接器新增至 AWS Glue Studio**

1. 為您的自訂連接器建立程式碼。如需詳細資訊，請參閱[開發自訂連接器](developing-custom-connectors.md)。

1. 新增對 AWS Glue 功能的支援至您的連接器。以下是這些功能的一些範例，以及如何在 AWS Glue Studio 產生的任務指令碼中使用它們：
   + **資料類型映射** – 您的連接器可以在從基礎資料存放區讀取欄時對欄進行類型轉換。例如，當剖析記錄並建構 `DynamicFrame` 時，`{"INTEGER":"STRING"}` 的 `dataTypeMapping` 會將類型 `Integer` 的所有欄轉換為類型 `String` 的欄。這可以協助使用者將欄轉換為他們選擇的類型。

     ```
     DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type 
     = "custom.jdbc", connection_options = {"dataTypeMapping":{"INTEGER":"STRING"}", 
     connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
     ```
   + **並行讀取的分割** – AWS Glue 允許透過分割欄上的資料，從資料存放區並行讀取資料。您必須指定分割區欄、分割區下界、分割區上限，以及分割區的數目。此功能讓您能夠利用資料並行性和分配給 Spark 應用程式的多個 Spark 執行器。

     ```
     DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type 
     = "custom.jdbc", connection_options = {"upperBound":"200","numPartitions":"4",
     "partitionColumn":"id","lowerBound":"0","connectionName":"test-connection-jdbc"},
     transformation_ctx = "DataSource0")
     ```
   + **使用 AWS Secrets Manager 來存放登入**資料 – Data Catalog 連線也可以包含 中存放秘密`secretId`的 AWS Secrets Manager。 AWS 秘密可以安全地存放身分驗證和登入資料資訊，並在 AWS Glue 執行時間將其提供給 。或者，您也可以從 Spark 指令碼指定 `secretId`，如下所示：

     ```
     DataSource = glueContext.create_dynamic_frame.from_options(connection_type 
     = "custom.jdbc", connection_options = {"connectionName":"test-connection-jdbc",
      "secretId"-> "my-secret-id"}, transformation_ctx = "DataSource0")
     ```
   + **使用列述詞和欄投影篩選來源資料** – AWS Glue Spark 執行時間也允許使用者下推 SQL 查詢，使用使用列述詞和欄投影在來源篩選資料。這可讓您的 ETL 任務更快從支援下推的資料存放區載入篩選過的資料。下推到 JDBC 資料來源的範例 SQL 查詢是：`SELECT id, name, department FROM department WHERE id < 200.`

     ```
     DataSource = glueContext.create_dynamic_frame.from_options(connection_type = 
     "custom.jdbc", connection_options = {"query":"SELECT id, name, department FROM department 
     WHERE id < 200","connectionName":"test-connection-jdbc"}, transformation_ctx = 
     "DataSource0")
     ```
   + **任務書籤** – AWS Glue 支援從 JDBC 來源增量載入資料。AWS Glue 會追蹤資料存放區的最後處理記錄，並在後續的 ETL 任務執行中處理新的資料記錄。任務書籤使用主索引鍵作為書籤索引鍵的預設欄，前提是此欄會按順序新增或減少。如需任務書籤的詳細資訊，請參閱 *AWS Glue 開發人員指南*中的[任務書籤](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)。

     ```
     DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = 
     "custom.jdbc", connection_options = {"jobBookmarkKeys":["empno"], "jobBookmarkKeysSortOrder"
     :"asc", "connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
     ```

1. 將自訂連接器封裝為 JAR 檔案，然後將檔案上傳到 Amazon S3。

1. 測試您的自訂連接器。如需詳細資訊，請參閱 GitHub 上 [Glue Custom Connectors: Local Validation Tests Guide](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/localValidation/README.md) 的指示。

1. 在 AWS Glue Studio 主控台中，在主控台導覽窗格中選擇 **Connectors** (連接器)。

1. 在 **Connectors (連接器)** 頁面上，選擇 **Create custom connector (建立自訂連接器)**。

1. 在 **Create custom connector (建立自訂連接器)** 頁面上，輸入以下資訊：
   + 指向 Amazon S3 中自訂程式碼 JAR 檔案位置的路徑。
   + AWS Glue Studio 將使用的連接器的名稱。
   + 您的連接器類型，可以是 **JDBC**、**Spark**, 或 **Athena**。
   + 您自訂程式碼中的入口點名稱，AWS Glue Studio 將呼叫以使用連接器。
     + 對於 JDBC 連接器，此欄位應該是 JDBC 驅動程式的類別名稱。
     + 對於 Spark 連接器，此欄位應該是當您使用 `format` 運算子載入 Spark 資料來源時使用的完整資料來源類別名稱或其別名。
   + (僅限 JDBC) 資料存放區的 JDBC 連線使用的基本 URL。
   + (選用) 自訂連接器的描述。

1. 選擇 **Create connector (建立連接器)**。

1. 從 **Connectors (連接器)** 頁面，建立使用此連接器的連線，如[建立連接器的連線](creating-connections.md)中所述。

## 新增連接器至 AWS Glue Studio
<a name="creating-connectors"></a>

連接器是一段程式碼，可促進資料存放區和 AWS Glue 之間的通訊。您可以訂閱 中提供的連接器 AWS Marketplace，也可以建立自己的自訂連接器。

### 訂閱 AWS Marketplace 連接器
<a name="subscribe-marketplace-connectors"></a>

AWS Glue Studio 可讓您輕鬆地從 新增連接器 AWS Marketplace。

**將連接器從 新增至 AWS Marketplace AWS Glue Studio**

1. 在 AWS Glue Studio 主控台中，在主控台導覽窗格中選擇 **Connectors** (連接器)。

1. 在**連接器**頁面上，選擇**移至 AWS Marketplace**。

1. 在**精選產品** AWS Marketplace中，選擇您要使用的連接器。您可以選擇其中一個精選連接器，或使用搜尋。您可以搜尋連接器的名稱或類型，也可以使用選項來縮小搜尋結果。

   如果您想要使用其中一個精選連接器，請選擇 **View product (檢視產品)**。如果您使用搜尋來尋找連接器，請選擇連接器的名稱。

1. 在連接器的產品頁面上，使用索引標籤來檢視連接器的相關資訊。如果您決定購買此連接器，請選擇 **Continue to Subscribe (繼續訂閱)**。

1. 提供付款資訊，然後選擇 **Continue to Configure (繼續進行設定)**。

1. 在 **Configure this software (設定此軟體)** 頁面上，選擇部署方法和要使用的連接器版本。然後選擇 **Continue to Launch (繼續啟動)**。

1. 在 **Launch this software (啟動此軟體)** 頁面上，您可以檢閱由連接器提供者所提供的 **Usage Instructions (使用指示)**。當您準備好繼續時，請選擇 **在 AWS Glue Studio 中啟用連線**。

   一段時間後，主控台會在 AWS Glue Studio 中顯示 **Create marketplace connection** (建立市集連線) 頁面。

1. 建立使用此連接器的連線，如[建立連接器的連線](creating-connections.md)中所述。

   或者，您也可以選擇 **Activate connector only (僅啟動連接器)**，在此時略過建立連線。您稍後必須建立連線，才能使用連接器。