

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

# Teradata Vantage 連線
<a name="aws-glue-programming-etl-connect-teradata-home"></a>

您可以使用 AWS Glue for Spark 從 Glue 4.0 和更新版本中的 Teradata Vantage AWS 中讀取和寫入現有資料表。您可以使用 SQL 查詢定義要從 Teradata 讀取的內容。您可以使用 AWS Secrets Manager 透過 Glue 連線儲存在 AWS 中的使用者名稱和密碼登入資料來連線至 Teradata。

如需有關 Teradata 的詳細資訊，請參閱 [Teradata 文件](https://docs.teradata.com/)。

## 設定 Teradata 連線
<a name="aws-glue-programming-etl-connect-teradata-configure"></a>

若要從 Glue AWS 連線至 Teradata，您需要在 AWS Secrets Manager 秘密中建立和存放 Teradata 登入資料，然後將該秘密與 Glue Teradata AWS 連線建立關聯。如果您的 Teradata 執行個體位於 Amazon VPC 中，您也需要為 Glue Teradata AWS 連線提供聯網選項。

若要從 Glue AWS 連線至 Teradata，您可能需要一些先決條件：
+ 如果您透過 Amazon VPC 存取 Teradata 環境，請設定 Amazon VPC 以允許 Glue AWS 任務與 Teradata 環境通訊。我們不建議透過公有網際網路存取 Teradata 環境。

  在 Amazon VPC 中，識別或建立 Glue AWS 在執行任務時將使用的 **VPC**、**子網路**和**安全群組**。此外，您也需要確保 Amazon VPC 已完成設定，以允許 Teradata 執行個體與此位置之間的網路流量。您的任務將需要與 Teradata 用戶端連接埠建立 TCP 連線。如需有關 Teradata 連接埠的詳細資訊，請參閱 [Teradata 文件](https://docs.teradata.com/r/Teradata-VantageTM-on-AWS-DIY-Installation-and-Administration-Guide/April-2020/Before-Deploying-Vantage-on-AWS-DIY/Security-Groups-and-Ports)。

  根據您的網路配置，安全 VPC 連線可能需要變更 Amazon VPC 和其他網路服務。如需 AWS 連線的詳細資訊，請參閱 Teradata 文件中的[AWS 連線選項](https://docs.teradata.com/r/Teradata-VantageCloud-Enterprise/Get-Started/Connecting-Your-Environment/AWS-Connectivity-Options)。

**若要設定 AWS Glue Teradata 連線：**

1. 在您的 Teradata 組態中，識別或建立 Glue AWS 將與 *teradataUser* 和 *teradataPassword* 連線的使用者和密碼。如需詳細資訊，請參閱《Teradata 文件》中的 [Vantage 安全概觀](https://docs.teradata.com/r/Configuring-Teradata-VantageTM-After-Installation/January-2021/Security-Overview/Vantage-Security-Overview)。

1. 在 中 AWS Secrets Manager，使用您的 Teradata 登入資料建立秘密。若要在 Secrets Manager 中建立秘密，請遵循 AWS Secrets Manager 文件中[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html)中提供的教學課程。建立機密之後，請保留機密名稱 *secretName*，以便進行下一個步驟。
   + 在選取**鍵/值組**時，請使用 *teradataUsername* 值來建立 `user` 金鑰對。
   + 在選取**鍵/值組**時，請使用 *teradataPassword* 值來建立 `password` 金鑰對。

1. 在 AWS Glue 主控台中，依照中的步驟建立連線[新增 AWS Glue 連線](console-connections.md)。建立連線之後，請保留連線名稱 *connectionName*，以便進行下一個步驟。
   + 選取**連線類型**時，請選取 Teradata。
   + 提供 **JDBC URL** 時，請提供執行個體的 URL。您也可在 JDBC URL 中，針對特定逗號分隔的連線參數進行硬編碼。URL 必須符合下列格式：`jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue`

     支援的 URL 參數包括：
     + `DATABASE`：依預設要存取之主機的資料庫名稱。
     + `DBS_PORT`：在非標準連接埠上執行時所使用的資料庫連接埠。
   + 選取**憑證類型**時，請選取 **AWS Secrets Manager**，然後將 **AWS 密碼** 設定為 *secretName*。

1. 在下列情況中，您可能需要其他組態：
   + 

     對於 Amazon VPC AWS 中託管於 的 Teradata 執行個體
     + 您需要將 Amazon VPC 連線資訊提供給定義 Teradata 安全登入資料的 AWS Glue 連線。建立或更新連線時，請在**網路選項**中設定 **VPC**、**子網路**及**安全群組**。

建立 AWS Glue Teradata 連線後，您需要先執行下列步驟，才能呼叫連線方法。
+ 授予與您的 Glue 任務相關聯的 IAM AWS 角色讀取 *secretName* 的許可。
+ 在您的 AWS Glue 任務組態中，提供 *connectionName* 作為**其他網路連線**。

## 從 Teradata 中讀取
<a name="aws-glue-programming-etl-connect-teradata-read"></a>

**先決條件：**
+ 您想要讀取的 Teradata 資料表。您將需要資料表名稱 *tableName*。
+ 設定為提供身分驗證資訊的 AWS Glue Teradata 連線。完成步驟*設定連至 Teradata 的連線*，以設定身份驗證資訊。您需要 Glue AWS 連線的名稱 *connectionName*。

例如：

```
teradata_read_table = glueContext.create_dynamic_frame.from_options(
    connection_type="teradata",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableName"
    }
)
```

您也可提供 SELECT SQL 查詢，以篩選傳回 DynamicFrame 的結果。您將需要設定 `query`。

例如：

```
teradata_read_query = glueContext.create_dynamic_frame.from_options(
    connection_type="teradata",
    connection_options={
        "connectionName": "connectionName",
        "query": "query"
    }
)
```

## 寫入 Teradata 資料表
<a name="aws-glue-programming-etl-connect-teradata-write"></a>

**先決條件：**您想要寫入的 Teradata 資料表 *tableName*。**您必須先建立資料表，再呼叫連線方法。**

例如：

```
teradata_write = glueContext.write_dynamic_frame.from_options(
    connection_type="teradata",
    connection_options={
        "connectionName": "connectionName", 
        "dbtable": "tableName"
    }
)
```

## Teradata 連線選項參考
<a name="aws-glue-programming-etl-connect-teradata-reference"></a>
+ `connectionName` – 必要。用於讀取/寫入。設定為向連線方法提供身分驗證和聯網資訊的 AWS Glue Teradata 連線名稱。
+ `dbtable`：除非已提供 `query`，否則為寫入和讀取的必要項目。用於讀取/寫入。您的連線方法將會互動的資料表名稱。
+ `query` – 用於讀取。定義從 Teradata 讀取時應擷取之內容的 SELECT SQL 查詢。