

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

# AWS Glue 疑難排解
<a name="troubleshooting-glue"></a>

 如果您在使用 時遇到問題 AWS Glue，請參閱本節中的主題。


|  | 
| --- |
|  如需 中的 Apache Spark 疑難排解 AWS Glue，請參閱 [Apache Spark 的生成式 AI 疑難排解，其中 AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/troubleshoot-spark.html)提供 AI 支援協助，以診斷和解決 Spark 任務問題。 使用採用 AI 技術的故障診斷代理程式轉換您的 Apache Spark 故障診斷，現在支援所有主要部署模式 AWS Glue，包括 Amazon EMR-EC2、Amazon EMR-Serverless 和 Amazon SageMaker AI 筆記本。此強大的代理程式透過將自然語言互動、即時工作負載分析和智慧程式碼建議結合到無縫體驗中，來消除複雜的偵錯程序。如需實作詳細資訊，請參閱[什麼是 Amazon EMR 的 Apache Spark 故障診斷代理](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshoot.html)程式。  | 

**Topics**
+ [收集 AWS Glue 故障診斷資訊](troubleshooting-contact-support.md)
+ [對 Glue 常見設定錯誤進行故障診斷](glue-troubleshooting-errors.md)
+ [編目程式使用 Lake Formation 許可時發生編目程式錯誤](error-crawler-config-lf.md)
+ [對日誌 AWS Glue 中的 Ray 錯誤進行故障診斷](troubleshooting-ray.md)
+ [AWS Glue 機器學習例外狀況](exceptions-machine-learning.md)
+ [AWS Glue 配額](troubleshooting-service-limits.md)

# 收集 AWS Glue 故障診斷資訊
<a name="troubleshooting-contact-support"></a>

如果您在 中遇到錯誤或意外行為AWS Glue，而且需要聯絡 AWS 支援，您應該先收集與失敗動作相關聯的名稱、IDs 和日誌資訊。提供此資訊 支援 可讓您解決所遇到的問題。

除了您的*帳戶 ID*，請針對這些失敗類型收集以下資訊：

**當爬蟲程式失敗，請收集以下資訊：**  
+ 爬蟲程式名稱

  爬蟲程式執行日誌存放於 `/aws-glue/crawlers` 下的 CloudWatch Logs。

**當測試連線失敗，請收集以下資訊：**  
+ 連線名稱 (Connection name)
+ 連線 ID
+ JDBC 連線字串，格式為 `jdbc:protocol://host:port/database-name`。

  測試連線日誌存放於 ` /aws-glue/testconnection` 下的 CloudWatch Logs。

**當任務失敗，請收集以下資訊：**  
+ 任務名稱 
+ 任務執行 ID，格式為 `jr_xxxxx`。

  任務執行日誌存放於 ` /aws-glue/jobs` 下的 CloudWatch Logs。

# 對 Glue 常見設定錯誤進行故障診斷
<a name="glue-troubleshooting-errors"></a>

如果您在 中遇到錯誤 AWS Glue，請使用以下資訊來協助您尋找問題來源並加以修正。

**注意**  
 AWS Glue GitHub 儲存庫包含[AWS Glue 常見問答集](https://github.com/aws-samples/aws-glue-samples/blob/master/FAQ_and_How_to.md)中的其他疑難排解指引。

**Topics**
+ [錯誤：資源無法使用](#error-resource-unavailable)
+ [錯誤：無法在 VPC 中找到 subnetId 的 S3 端點或 NAT 閘道](#error-s3-subnet-vpc-NAT-configuration)
+ [錯誤：安全群組需有傳入規則](#error-inbound-self-reference-rule)
+ [錯誤：安全群組需有傳出規則](#error-outbound-self-reference-rule)
+ [錯誤：任務執行失敗，因為傳遞的角色應獲得 AWS Glue 服務的擔任角色許可](#error-assume-role-user-policy)
+ [錯誤：DescribeVpcEndpoints 動作未授權。無法驗證 VPC ID vpc-id](#error-DescribeVpcEndpoints-permission)
+ [錯誤：DescribeRouteTables 動作未授權。無法驗證子網路 id：Subnet-id in VPC id: vpc-id](#error-DescribeRouteTables-permission)
+ [錯誤：無法呼叫 ec2:DescribeSubnets](#error-DescribeSubnets-permission)
+ [錯誤：無法呼叫 ec2:DescribeSecurityGroups](#error-DescribeSecurityGroups-permission)
+ [錯誤：找不到可用區域的子網路](#error-az-not-available)
+ [錯誤：寫入到 JDBC 目標時發生任務執行例外](#error-job-run-jdbc-target)
+ [錯誤：Amazon S3：操作對物件的儲存類別無效](#error-s3-operation-not-valid)
+ [錯誤：Amazon S3 逾時](#error-s3-timeout)
+ [錯誤：Amazon S3 存取遭拒](#error-s3-access-denied)
+ [錯誤：Amazon S3 存取金鑰 ID 不存在](#error-s3-accesskeyid-not-found)
+ [錯誤：使用 `s3a://` URI 存取 Amazon S3 時發生任務執行失敗](#error-s3a-uri-directory-listing)
+ [錯誤：Amazon S3 服務符記已過期](#error-s3-service-token-expired)
+ [錯誤：找不到適用於網路介面的私有 DNS](#error-no-private-DNS)
+ [錯誤：開發端點佈建失敗](#error-development-endpoint-failed)
+ [錯誤：筆記本伺服器 CREATE\$1FAILED](#error-notebook-server-ec2-instance-profile)
+ [錯誤：本機筆記本無法啟動](#error-local-notebook-fails-to-start)
+ [錯誤：爬蟲程式執行失敗](#error-running-crawler-failed)
+ [錯誤：未更新分割區](#error-update-from-job-partitions)
+ [錯誤：由於版本不相符，任務書籤更新失敗](#error-job-bookmarks-limitation)
+ [錯誤：當任務書籤啟用時，任務會重新處理資料](#error-job-bookmarks-reprocess-data)
+ [錯誤： 中的 VPCs之間的容錯移轉行為 AWS Glue](#vpc-failover-behavior-error-10)

## 錯誤：資源無法使用
<a name="error-resource-unavailable"></a>

如果 AWS Glue 傳回資源無法使用的訊息，您可以檢視錯誤訊息或日誌，以協助您進一步了解問題。以下任務說明一般的故障診斷方法。
+ 針對您所使用的任何連線和開發端點，請檢查您的叢集是否仍有彈性網路界面可用。

## 錯誤：無法在 VPC 中找到 subnetId 的 S3 端點或 NAT 閘道
<a name="error-s3-subnet-vpc-NAT-configuration"></a>

檢查訊息中的子網路 ID 和 VPC ID，以協助診斷問題。
+ 確認您已設定 Amazon S3 VPC 端點，此為 AWS Glue的要求。此外，如果組態內有 NAT 閘道，請檢查。如需詳細資訊，請參閱[Amazon S3 的 VPC 端點](vpc-endpoints-s3.md)。

## 錯誤：安全群組需有傳入規則
<a name="error-inbound-self-reference-rule"></a>

必須至少有一個安全群組開啟所有傳入連接埠。若要限制流量，傳入規則中的來源安全群組可以限制為相同的安全群組。
+ 針對您所使用的任何連線，請檢查自我參考的傳入規則的安全群組。如需詳細資訊，請參閱[設定對資料存放區的網路存取](start-connecting.md)。
+ 使用的是開發端點時，請檢查自我參考的傳入規則的安全群組。如需詳細資訊，請參閱[設定對資料存放區的網路存取](start-connecting.md)。

## 錯誤：安全群組需有傳出規則
<a name="error-outbound-self-reference-rule"></a>

必須至少有一個安全群組開啟所有傳出連接埠。若要限制流量，傳出規則中的來源安全群組可以限制為相同的安全群組。
+ 針對您所使用的任何連線，請檢查自我參考的傳出規則的安全群組。如需詳細資訊，請參閱[設定對資料存放區的網路存取](start-connecting.md)。
+ 使用的是開發端點時，請檢查自我參考的傳出規則的安全群組。如需詳細資訊，請參閱[設定對資料存放區的網路存取](start-connecting.md)。

## 錯誤：任務執行失敗，因為傳遞的角色應獲得 AWS Glue 服務的擔任角色許可
<a name="error-assume-role-user-policy"></a>

定義任務的使用者需擁有 AWS Glue的 `iam:PassRole` 許可。
+ 當使用者建立 AWS Glue 任務時，請確認使用者的角色包含 的政策`iam:PassRole` AWS Glue。如需詳細資訊，請參閱[步驟 3：連接政策到存取 AWS Glue 的使用者或群組](attach-policy-iam-user.md)。

## 錯誤：DescribeVpcEndpoints 動作未授權。無法驗證 VPC ID vpc-id
<a name="error-DescribeVpcEndpoints-permission"></a>
+ 檢查傳遞給 的政策 AWS Glue 以取得 `ec2:DescribeVpcEndpoints`許可。

## 錯誤：DescribeRouteTables 動作未授權。無法驗證子網路 id：Subnet-id in VPC id: vpc-id
<a name="error-DescribeRouteTables-permission"></a>
+ 檢查傳遞給 的政策 AWS Glue 以取得 `ec2:DescribeRouteTables`許可。

## 錯誤：無法呼叫 ec2:DescribeSubnets
<a name="error-DescribeSubnets-permission"></a>
+ 檢查傳遞給 的政策 AWS Glue 以取得 `ec2:DescribeSubnets`許可。

## 錯誤：無法呼叫 ec2:DescribeSecurityGroups
<a name="error-DescribeSecurityGroups-permission"></a>
+ 檢查傳遞給 的政策 AWS Glue 以取得 ` ec2:DescribeSecurityGroups`許可。

## 錯誤：找不到可用區域的子網路
<a name="error-az-not-available"></a>
+ 可用區域可能無法使用 AWS Glue。建立並使用可用區域中新的子網路，與訊息中所指定的可用區域不同。

## 錯誤：寫入到 JDBC 目標時發生任務執行例外
<a name="error-job-run-jdbc-target"></a>

執行寫入到 JDBC 目標的任務時，任務在下列情況下可能發生錯誤：
+ 如果您的任務寫入到 Microsoft SQL Server 資料表，且資料表有定義為 `Boolean` 類型的資料欄，則資料表必須預先在 SQL Server 資料庫中定義。當您使用 SQL Server 目標搭配 選項在**資料目標中建立資料表**，在 AWS Glue 主控台上定義任務時，請勿將任何來源資料欄映射至具有資料類型 的目標資料欄`Boolean`。執行任務時可能會發生錯誤。

  您可以執行以下動作避免錯誤：
  + 選擇含有** 布林值 **欄的現有資料表。
  + 編輯 `ApplyMapping` 轉換，並將來源的**布林值**欄映射至目標的數字或字串。
  + 編輯 `ApplyMapping` 轉換，移除來源中的**布林值**欄。
+ 如果您的任務寫入到 Oracle 資料表，您可能需要調整 Oracle 物件名稱的長度。在某些版本的 Oracle，最大的 ID 長度限制為 30 位元組或 128 位元組。此限制影響 Oracle 目標資料存放區的資料表名稱和欄名稱。

  您可以執行以下動作避免錯誤：
  + 依照版本的限制為 Oracle 目標資料表命名。
  + 預設欄名稱從資料的欄位名稱產生。當欄名稱長度超過限制時，請使用 `ApplyMapping` 或 `RenameField` 轉換變更欄的名稱，以符合限制。

## 錯誤：Amazon S3：操作對物件的儲存類別無效
<a name="error-s3-operation-not-valid"></a>

如果 AWS Glue 傳回此錯誤，您的 AWS Glue 任務可能已經從跨 Amazon S3 儲存類別層具有分割區的資料表讀取資料。
+ 透過使用儲存類別排除，您可以確保 AWS Glue 任務可處理跨這些儲存類別層具有分割區的資料表。如果沒有排除，從這些層讀取資料的任務會失敗，並出現下列錯誤：`AmazonS3Exception: The operation is not valid for the object's storage class`。

  如需詳細資訊，請參閱[排除 Amazon S3 儲存體方案](aws-glue-programming-etl-storage-classes.md)。

## 錯誤：Amazon S3 逾時
<a name="error-s3-timeout"></a>

如果 AWS Glue 傳回連線逾時錯誤，可能是因為嘗試存取另一個 AWS 區域中的 Amazon S3 儲存貯體。
+ Amazon S3 VPC 端點只能將流量路由到 AWS 區域內的儲存貯體。如果您需要連接到其他區域中的儲存貯體，可能的解決方法是使用 NAT 閘道。如需更多詳細資訊，請參閱 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

## 錯誤：Amazon S3 存取遭拒
<a name="error-s3-access-denied"></a>

如果 將存取遭拒錯誤 AWS Glue 傳回 Amazon S3 儲存貯體或物件，可能是因為提供的 IAM 角色沒有具有資料存放區許可的政策。
+ ETL 任務必須要能存取 Amazon S3 資料存放區以做為來源或目標。爬蟲程式必須能夠存取編目的 Amazon S3 資料存放區。如需詳細資訊，請參閱[步驟 2：為 AWS Glue 建立 IAM 角色](create-an-iam-role.md)。

## 錯誤：Amazon S3 存取金鑰 ID 不存在
<a name="error-s3-accesskeyid-not-found"></a>

如果 在執行任務時 AWS Glue 傳回存取金鑰 ID 不存在錯誤，可能是因為下列其中一個原因：
+ ETL 工作使用 IAM 角色存取任務資料存放區，在工作開始之前確認您工作的 IAM 角色尚未遭到刪除。
+ IAM 角色包含存取您的資料存放區的許可，確認任何所附加包含 `s3:ListBucket` 的 Amazon S3 政策是正確的。

## 錯誤：使用 `s3a://` URI 存取 Amazon S3 時發生任務執行失敗
<a name="error-s3a-uri-directory-listing"></a>

如果任務執行傳回錯誤 (像是*無法使用處理常式類別剖析 XML 文件*)，可能是因為使用 ` s3a://` URI 嘗試列出數百個檔案時發生失敗。使用 `s3://` URI 存取資料存放區。以下例外狀況的追蹤會反白錯誤以尋找：

```
1.	com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler
2.	at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:161)
3.	at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseListBucketObjectsResponse(XmlResponsesSaxParser.java:317)
4.	at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:70)
5.	at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:59)
6.	at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62)
7.	at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:31)
8.	at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70)
9.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1554)
10.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1272)
11.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056)
12.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
13.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
14.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
15.	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
16.	at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
17.	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
18.	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4325)
19.	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4272)
20.	at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266)
21.	at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:834)
22.	at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:971)
23.	at org.apache.hadoop.fs.s3a.S3AFileSystem.deleteUnnecessaryFakeDirectories(S3AFileSystem.java:1155)
24.	at org.apache.hadoop.fs.s3a.S3AFileSystem.finishedWrite(S3AFileSystem.java:1144)
25.	at org.apache.hadoop.fs.s3a.S3AOutputStream.close(S3AOutputStream.java:142)
26.	at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:74)
27.	at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:108)
28.	at org.apache.parquet.hadoop.ParquetFileWriter.end(ParquetFileWriter.java:467)
29.	at org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:117)
30.	at org.apache.parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:112)
31.	at org.apache.spark.sql.execution.datasources.parquet.ParquetOutputWriter.close(ParquetOutputWriter.scala:44)
32.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$SingleDirectoryWriteTask.releaseResources(FileFormatWriter.scala:252)
33.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:191)
34.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:188)
35.	at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1341)
36.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:193)
37.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:129)
38.	at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:128)
39.	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
40.	at org.apache.spark.scheduler.Task.run(Task.scala:99)
41.	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
42.	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
43.	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
44.	at java.lang.Thread.run(Thread.java:748)
```

## 錯誤：Amazon S3 服務符記已過期
<a name="error-s3-service-token-expired"></a>

在移動 Amazon Redshift 的資料時，所使用的臨時 Amazon S3 憑證將於 1 小時之後過期。如果您有長時間執行的任務，則可能會失敗。如需如何設定長時間執行任務以便移動 Amazon Redshift 資料的詳細資訊，請參閱[aws-glue-programming-etl-connect-redshift-home](aws-glue-programming-etl-connect-redshift-home)。

## 錯誤：找不到適用於網路介面的私有 DNS
<a name="error-no-private-DNS"></a>

如果任務失敗或開發端點無法佈建，可能是因為網路設定有問題。
+ 如果您使用的是 Amazon 提供的 DNS，`enableDnsHostnames` 的值必須設為 true。如需更多詳細資訊，請參閱 [DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。

## 錯誤：開發端點佈建失敗
<a name="error-development-endpoint-failed"></a>

如果 AWS Glue 無法成功佈建開發端點，可能是因為網路設定發生問題。
+ 定義開發端點時，VPC、子網路和安全群組會經過驗證，以確認其符合特定需求。
+ 如果您提供可選的 SSH 公有金鑰，請確定其是有效的 SSH 公有金鑰。
+ 在 VPC 主控台中，檢查您的 VPC 是否使用有效的 **DHCP 選項集**。如需詳細資訊，請參閱 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
+ 如果叢集仍為 PROVISIONING 狀態，請聯絡 AWS 支援。

## 錯誤：筆記本伺服器 CREATE\$1FAILED
<a name="error-notebook-server-ec2-instance-profile"></a>

如果 AWS Glue 無法為開發端點建立筆記本伺服器，可能是因為下列其中一個問題：
+ AWS Glue 會在設定筆記本伺服器時，將 IAM 角色傳遞給 Amazon EC2。IAM 角色必須與 Amazon EC2 有信任關係。
+ IAM 角色必須有相同名稱的執行個體描述檔。當您在 IAM 主控台建立 Amazon EC2 的角色時，便會自動建立相同名稱的執行個體描述檔。檢查日誌內是否有關於執行個體描述檔名稱 ` iamInstanceProfile.name` 無效的錯誤。如需詳細資訊，請參閱[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。
+ 確認您的角色有許可存取傳送要建立筆記本伺服器之政策內的 `aws-glue*` 儲存貯體。

## 錯誤：本機筆記本無法啟動
<a name="error-local-notebook-fails-to-start"></a>

如果您的本機筆記本無法啟動且回報找不到目錄或資料夾的錯誤，可能是因為下列其中一個問題：
+ 如果您在 Microsoft Windows 上執行，請確定 `JAVA_HOME` 環境變數指向正確的 Java 目錄。無需更新此變數即可更新 Java，如果指向已不存在的資料夾，Jupyter 筆記本將無法啟動。

## 錯誤：爬蟲程式執行失敗
<a name="error-running-crawler-failed"></a>

如果 AWS Glue 無法成功執行爬蟲程式來編目您的資料，可能是因為下列其中一個原因。先檢查看看 AWS Glue 主控台爬蟲程式清單中是否出現錯誤。查看爬蟲程式名稱旁是否有驚嘆號 圖示，並將滑鼠移到圖示上方，查看任何相關的訊息。
+ 檢查在 `/aws-glue/crawlers` 下的 CloudWatch Logs 中的爬蟲程式執行日誌。

## 錯誤：未更新分割區
<a name="error-update-from-job-partitions"></a>

如果您在執行 ETL 任務時，在資料目錄中未更新分割區，在 CloudWatch Logs 中 `DataSink` 類別的下列日誌陳述式可能會有所幫助：
+ "`Attempting to fast-forward updates to the Catalog - nameSpace:`"  —  顯示此任務嘗試修改的資料庫、資料表和 catalogId。如果這裡沒有此陳述式，請檢查 `enableUpdateCatalog` 是否設為 true，並做為 `getSink()` 參數或在 ` additional_options` 中正確傳遞。
+ "`Schema change policy behavior:`"  —  顯示您要傳入的結構描述 ` updateBehavior` 值。
+ "`Schemas qualify (schema compare):`"  —  將會是 true 或 false。
+ "`Schemas qualify (case-insensitive compare):`"  —  將會是 true 或 false。
+ 如果兩者皆為 false，而且您的 `updateBehavior` 未設為 ` UPDATE_IN_DATABASE`，則您的 DynamicFrame 結構描述必須相同，或包含資料目錄資料表結構描述中看到的欄子集。

如需有關更新分割區的詳細資訊，請參閱 [使用 AWS Glue ETL 任務，在 Data Catalog 中更新結構描述並新增新的分區](update-from-job.md)。

## 錯誤：由於版本不相符，任務書籤更新失敗
<a name="error-job-bookmarks-limitation"></a>

您可能正在嘗試將 AWS Glue 任務參數化，以在 Amazon S3 中的不同資料集上套用相同的轉換/邏輯。您希望在提供的位置上追蹤已處理的檔案。當您在同一個來源儲存貯體上執行同一個任務並同時寫入相同/不同的目的地 (並行數 > 1) 時，任務會失敗並出現以下錯誤：

```
py4j.protocol.Py4JJavaError: An error occurred while callingz:com.amazonaws.services.glue.util.Job.commit.:com.amazonaws.services.gluejobexecutor.model.VersionMismatchException: Continuation update failed due to version mismatch. Expected version 2 but found version 3
```

解決方案：將並行設定為 1 或不並行執行任務。

目前 AWS Glue 書籤不支援並行任務執行，遞交將會失敗。

## 錯誤：當任務書籤啟用時，任務會重新處理資料
<a name="error-job-bookmarks-reprocess-data"></a>

在某些情況下，您可能已啟用 AWS Glue 任務書籤，但您的 ETL 任務正在重新處理已在先前執行中處理的資料。請檢查此錯誤的常見原因：

**最大並行數量**  
設定大於預設值 1 的任務並行執行數目上限，可能會干擾任務書籤。當任務書籤檢查物件的上次修改時間以驗證哪些物件需要重新處理時，可能會發生這種情況。如需詳細資訊，請參閱[在 中設定 Spark 任務的任務屬性 AWS Glue](add-job.md)中針對最大並行數量的說明。

**找不到任務物件**  
確認您的任務執行指令碼結尾是否為下列遞交：

```
job.commit()
```

當您包含此物件時， 會 AWS Glue 記錄任務執行的時間戳記和路徑。如果您使用相同的路徑再次執行任務， 只會 AWS Glue 處理新檔案。如果您未包含此物件並啟用任務書籤，任務就會重新處理已處理過的檔案與新的檔案，並在任務的目標資料存放區中建立冗餘項目。

**缺少轉換內容參數**  
轉換細節是 `GlueContext` 類別中的選擇性參數，但如果您未包含此參數，任務書籤就無法運作。若要解決這個錯誤，請在[建立 DynamicFrame](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-glue-context.html#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_catalog) 時新增轉換細節參數，如下所示：

```
sample_dynF=create_dynamic_frame_from_catalog(database, table_name,transformation_ctx="sample_dynF") 
```

**輸入來源**  
如果您使用關聯式資料庫 (JDBC 連線) 做為輸入來源，則只有在資料表的主索引鍵為循序排列時任務書籤才能運作。任務書籤適用於新的資料列，但對更新的資料列無效。這是因為任務書籤會尋找主索引鍵，而主索引鍵已存在。如果您的輸入來源是 Amazon Simple Storage Service (Amazon S3)，則此選項不適用。

**上次修改時間**  
若是 Amazon S3 輸入來源，任務書籤會檢查物件的上次修改時間而不是檔案名稱，以確認哪些物件需要重新處理。如果自上次任務執行之後已修改您的輸入來源資料，則在您重新執行任務時重新處理檔案。

## 錯誤： 中的 VPCs之間的容錯移轉行為 AWS Glue
<a name="vpc-failover-behavior-error-10"></a>

下列程序用於 AWS Glue 5.1 和舊版任務的容錯移轉。

摘要：在提交任務執行時選取 AWS Glue 連線。如果任務執行時遇到一些問題 (缺少 IP 地址、連線至來源、路由問題)，任務執行將會失敗。如果已設定重試， AWS Glue 將使用相同的連線重試。

1. 對於每次執行嘗試， AWS Glue 會依任務組態中列出的順序檢查連線運作狀態，直到找到可使用的連線為止。如果可用區域 (AZ) 發生故障，來自該 AZ 的連線將無法通過檢查並會略過。

1. AWS Glue 會使用下列項目驗證連線：
   + 檢查是否具備有效的 Amazon VPC ID 和子網路。
   + 檢查 NAT 閘道或 Amazon VPC 端點是否存在。
   + 檢查子網路是否具備超過 0 個所分配的 IP 地址。
   + 檢查 AZ 是否狀態良好。

   AWS Glue 無法在提交任務執行時驗證連線。

1. 對於使用 Amazon VPC 的任務，所有驅動程式和執行器都會在同一個 AZ 中建立，並在任務執行提交時選取連線。

1. 如果已設定重試， AWS Glue 將使用相同的連線重試。這是因為我們無法保證此連線在長期運作下不會發生問題。若 AZ 失敗，則該 AZ 中現有的任務執行 (視任務執行的階段而定) 可能會失敗。重試應會偵測 AZ 故障，並為新的執行選擇其他 AZ。

# 編目程式使用 Lake Formation 許可時發生編目程式錯誤
<a name="error-crawler-config-lf"></a>

參考下列資訊診斷及修正各種問題，同時使用 Lake Formation 憑證設定爬蟲程式。

## 錯誤：S3 位置 (s3://examplepath) 尚未註冊
<a name="error-s3-location"></a>

若要使用 Lake Formation 憑證執行爬蟲程式，您需要先設定 Lake Formation 許可。若要解決此錯誤，請向 Lake Formation 註冊目標 Amazon S3 位置。如需詳細資訊，請參閱 [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html) (註冊 Amazon S3 位置)。

## 錯誤：使用者/角色未經授權，無法在資源上執行 lakeformation:GetDataAccess
<a name="error-role-authorization"></a>

請使用 IAM 主控台或 AWS CLI，將 `lakeformation:GetDataAccess` 許可新增至爬蟲程式。有了此許可，Lake Formation 就會授與要求存取資料所需的臨時憑證。請參閱以下政策：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "lakeformation:GetDataAccess"
    ],
    "Resource": "*"
  }
}
```

------

## 錯誤：(資料庫名稱：exampleDatabase，資料表名稱：exampleTable) 上的 Lake Formation 許可不足
<a name="error-permissions"></a>

在 Lake Formation 主控台 ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) 授與爬蟲程式對資料庫 (指定作為輸出資料庫) 的角色存取許可 (` Create`、`Describe`、`Alter`)。您也可以授與資料表的使用許可。如需詳細資訊，請參閱 [Granting database permissions using the named resource method](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-cat-perms-named-resource.html) (使用具名資源方法授與資料庫許可)。

## 錯誤：s3://examplepath 上的 Lake Formation 許可不足
<a name="error-location-permissions"></a>

1.  **跨帳戶網路爬取** 

   1. 使用 Amazon S3 儲存貯體所註冊的帳戶資料 (帳戶 B)，登入 Lake Formation 主控台 ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))。將資料位置許可授與要執行爬蟲程式的帳戶。如此一來，爬蟲程式就能從目標 Amazon S3 位置讀取資料。

   1.  在建立爬蟲程式的帳戶 (帳戶 A) 中，將目標 Amazon S3 位置的資料位置許可授與爬蟲程式執行時所使用的 IAM 角色，以便爬蟲程式可以從 Lake Formation 的目的地讀取資料。如需詳細資訊，請參閱 [Granting data location permissions (external account)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-external.html) (授與資料位置許可 (外部帳戶))。

1. **帳戶內 (爬蟲程式和所註冊的 Amazon S3 位置位於相同帳戶) 網路爬取** ‐ 將資料位置許可授與爬蟲程式於 Amazon S3 位置執行時所使用的 IAM 角色，以便爬蟲程式可以從 Lake Formation 的目標讀取資料。如需詳細資訊，請參閱 [Granting data location permissions (same account)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html) (授與資料位置許可 (相同帳戶))。

## 使用 Lake Formation 憑證設定爬蟲程式的常見問題
<a name="faq-crawler-config-lf"></a>

1.  **如何在 AWS 主控台使用 Lake Formation 憑證設定爬蟲程式，使其能順利執行？** 

   在 AWS Glue 主控台 ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)：//) 中，在設定爬蟲程式時，選取**使用 Lake Formation 登入資料來爬取 Amazon S3 資料來源**的選項。對於跨帳戶爬取，請指定向 Lake Formation 註冊目標 Amazon S3 位置的 AWS 帳戶 ID。對於帳戶內網路爬取，**accountId** 為選填欄位。

1.  **如何在 AWS CLI使用 Lake Formation 憑證設定爬蟲程式，使其能順利執行？** 

   在 `CreateCrawler` API 呼叫期間，新增 `LakeFormationConfiguration`：

   ```
   "LakeFormationConfiguration": {
       "UseLakeFormationCredentials": true,
       "AccountId": "111111111111" (AWS account ID where the target Amazon S3 location is registered with Lake Formation)
     }
   ```

1.  **使用 Lake Formation 憑證的情況下，爬蟲程式支援哪些目標？** 

   使用 Lake Formation 憑證的爬蟲程式僅支援 Amazon S3 (帳戶內和跨帳戶網路爬取)、帳戶內資料目錄目標 (其中的基礎位置為 Amazon S3) 以及 Apache Iceberg 目標。

1.  **可以使用 Lake Formation 憑證，以單一爬蟲程式對多個 Amazon S3 儲存貯體執行網路爬取作業嗎？** 

   不可以。如果使用 Lake Formation 憑證販售對目標執行網路爬取，基礎 Amazon S3 位置必須屬於同一個儲存貯體。舉例來說，客戶可以使用多個目標位置 `(s3://bucket1/folder1, s3://bucket1/folder2)`，但這些位置必須位於同一個儲存貯體 (儲存貯體 1)，不允許指定不同的儲存貯體 (s3://bucket1/folder1、s3://bucket2/folder2)。

# 對日誌 AWS Glue 中的 Ray 錯誤進行故障診斷
<a name="troubleshooting-ray"></a>

**重要**  
AWS Glue for Ray 自 2026 年 4 月 30 日起不再向新客戶開放。如果您想要使用 AWS Glue for Ray，請在該日期之前註冊。現有客戶可以繼續正常使用該服務。如需類似 AWS Glue for Ray 的 功能，請探索 Amazon EKS。如需詳細資訊，請參閱 [AWS Glue 的 Ray 終止支援](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html)。

AWS Glue 可讓您存取 Ray 程序在任務執行期間發出的日誌。如果您在 Ray 任務中遇到錯誤或非預期的行為，請先從日誌中收集資訊，用以判斷失敗的原因。我們還為互動式工作階段提供類似的日誌。工作階段日誌帶有 `/aws-glue/ray/sessions` 字首。

當您的任務執行時，日誌行會即時傳送至 CloudWatch。列印陳述式會在執行完成後附加至 CloudWatch 日誌中。任務執行後，日誌會保留兩週。

## 檢查 Ray 任務日誌
<a name="troubleshooting-ray-log-locations"></a>

如果任務失敗，請收集任務名稱和任務執行 ID。您可以在 AWS Glue 主控台中找到這些項目。瀏覽至任務頁面，然後找到 **Runs** (執行) 索引標籤。Ray 任務日誌會存放在下列專用的 CloudWatch 日誌群組中。
+ `/aws-glue/ray/jobs/script-log/` – 存放 Ray 主指令碼發出的日誌。
+ `/aws-glue/ray/jobs/ray-monitor-log/` – 存放 Ray 自動縮放器程序發出的日誌。這些日誌是針對前端節點產生，而不是針對其他工作節點產生。
+ `/aws-glue/ray/jobs/ray-gcs-logs/`：存放由 GCS (全域控制存放) 程序發出的日誌。這些日誌是針對前端節點產生，而不是針對其他工作節點產生。
+ `/aws-glue/ray/jobs/ray-process-logs/`：存放在前端節點上執行的其他 Ray 程序 (主要是儀表板代理) 發出的日誌。這些日誌是針對前端節點產生，而不是針對其他工作節點產生。
+ ` /aws-glue/ray/jobs/ray-raylet-logs/`：存放每個 raylet 程序發出的日誌。系統會將這些日誌收集在每個工作節點的單一串流中，包括前端節點。
+ `/aws-glue/ray/jobs/ray-worker-out-logs/`：將每個工作者的 `stdout` 日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。
+ `/aws-glue/ray/jobs/ray-worker-err-logs/`：將每個工作者的 `stderr` 日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。
+ `/aws-glue/ray/jobs/ray-runtime-env-log/`：存放有關 Ray 設定程序的日誌。這些日誌會針對每個工作節點 (包括前端節點) 產生。

## 對 Ray 任務錯誤進行故障診斷
<a name="troubleshooting-ray-errors"></a>

若要了解 Ray 日誌群組的組織，並尋找可協助您針對錯誤進行故障診斷的日誌群組，取得 Ray 架構的背景資訊會很有幫助。

在 AWS Glue ETL 中，工作者會對應至執行個體。當您為 AWS Glue 任務設定工作者時，您要設定專用於任務的執行個體類型和數量。Ray 對 *worker* (工作、工作者) 一詞的使用方式有所不同。

Ray 使用*前端節點*和*工作節點*來區分 Ray 叢集中執行個體的責任。Ray 工作節點可以託管多個*執行者*程序，這些程序會執行計算以實現分佈式計算的結果。執行函數複本的執行者稱為*複本*。複本執行者也可以稱為工作者程序。複本也可以在前端節點 (稱為前端) 上執行，因為該節點會執行額外的程序來協調叢集。

參與計算的每個執行者會產生自己的日誌串流。這為我們提供了一些見解：
+ 發出日誌的程序數目可能大於配置給任務的工作者數目。通常，每個執行個體上的每個核心都有一個執行者。
+  Ray 前端節點會發出叢集管理和啟動日誌。相對地，Ray 工作節點只會針對在其上執行的工作發出日誌。

如需有關 Ray 架構的詳細資訊，請參閱 Ray 文件中的 [Architecture Whitepapers]( https://docs.ray.io/en/latest/ray-contribute/whitepaper.html) (架構白皮書)。

### 問題領域：Amazon S3 存取
<a name="troubleshooting-ray-errors-s3"></a>

檢查任務執行的失敗訊息。如果提供的資訊不足，請查閱 `/aws-glue/ray/jobs/script-log/`。

### 問題領域：PIP 相依性管理
<a name="troubleshooting-ray-errors-dependencies"></a>

檢查 `/aws-glue/ray/jobs/ray-runtime-env-log/`。

### 問題領域：檢查主程序中的中繼值
<a name="troubleshooting-ray-errors-main-process"></a>

從主指令碼中寫入 `stderr` 或 `stdout`，並從 `/aws-glue/ray/jobs/script-log/` 擷取日誌。

### 問題領域：檢查子程序中的中繼值
<a name="troubleshooting-ray-errors-worker-process"></a>

從 `remote` 函數寫入 `stderr` 或 `stdout`。然後，從 `/aws-glue/ray/jobs/ray-worker-out-logs/` 或 `/aws-glue/ray/jobs/ray-worker-err-logs/` 擷取日誌。函數可能已在任何複本上執行，因此您可能必須檢查多個日誌才能找到預期的輸出。

### 問題領域：解譯錯誤訊息中的 IP 地址
<a name="troubleshooting-ray-errors-ips"></a>

在某些錯誤情況下，您的任務可能會發出包含 IP 地址的錯誤訊息。這些 IP 地址是暫時的資訊，叢集會用於識別節點並在節點之間進行通訊。節點的日誌會發布至日誌串流，其具有以 IP 地址為基礎的唯一字尾。

在 CloudWatch 中，您可以透過識別此字尾來篩選日誌，以檢查特定於此 IP 地址的日誌。例如，假設為 *FAILED\$1IP* 和 *JOB\$1RUN\$1ID*，您可以透過以下方式識別字尾：

```
filter @logStream like /JOB_RUN_ID/
| filter @message like /IP-/
| parse @message "IP-[*]" as ip
| filter ip like /FAILED_IP/
| fields replace(ip, ":", "_") as uIP
| stats count_distinct by uIP as logStreamSuffix
| display logStreamSuffix
```

# AWS Glue 機器學習例外狀況
<a name="exceptions-machine-learning"></a>

本主題說明與機器學習相關之 AWS Glue 例外狀況的 HTTP 錯誤碼和字串。針對執行操作時可能發生的每個機器學習活動提供了錯誤碼和錯誤字串。此外，您也可以查看是否可能重試導致錯誤的操作。

## CancelMLTaskRunActivity
<a name="exceptions-machine-learning-CancelMLTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到 [taskRunId] 的 ML 任務執行：在帳戶 [accountId] 中，針對轉換 [transformName]。」

  可以重試：否。

## CreateMLTaskRunActivity
<a name="exceptions-machine-learning-CreateMLTransformActivity"></a>

此活動有下列例外狀況：
+ InvalidInputException (400)
  + 「由於未預期的輸入導致內部服務故障。」
  + 「轉換中應該指定 AWS Glue 資料表輸入來源。」
  + 「在目錄中為輸入來源資料行 [columnName] 定義了無效的資料類型。」
  + 「只能提供一個輸入記錄資料表。」
  + 「應該指定資料庫名稱。」
  + 「應該指定資料表名稱。」
  + 「未在轉換上定義結構描述。」
  + 「結構描述應該包含指定的主索引鍵：[primaryKey]。」
  + 「擷取資料目錄結構描述時發生問題：[message]。」
  + 「無法同時設定「最大容量」和「工作者數目/類型」。」
  + 「WorkerType 和 NumberOfWorkers 兩者都應該設定。」
  + 「MaxCapacity 應該是 >= [maxCapacity]。」
  + 「NumberOfWorkers 應該是 >= [maxCapacity]。」
  + 「重試次數上限應該是非負數。」
  +  「尚未設定「尋找符合項目」參數。」
  + 「「尋找符合項目」參數中必須指定主索引鍵。」

  可以重試：否。
+ AlreadyExistsException (400)
  + 「名稱為 [transformName] 的轉換已存在。」

  可以重試：否。
+ IdempotentParameterMismatchException (400)
  + 「轉換 [transformName] 的等冪建立請求具有不相符的參數。」

  可以重試：否。
+ InternalServiceException (500)
  + 「相依性失敗。」

  可以重試：可。
+ ResourceNumberLimitExceededException (400)
  + 「ML 轉換計數 ([count]) 已超過 [limit] 個轉換的限制。」

  可以重試：可。刪除轉換，為這個新的轉換騰出空間即可。

## DeleteMLTransformActivity
<a name="exceptions-machine-learning-DeleteMLTransformActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform」

  可以重試：否。

## GetMLTaskRunActivity
<a name="exceptions-machine-learning-GetMLTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到 [taskRunId] 的 ML 任務執行：在帳戶 [accountId] 中，針對轉換 [transformName]。」

  可以重試：否。

## GetMLTaskRunsActivity
<a name="exceptions-machine-learning-GetMLTaskRunsActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到 [taskRunId] 的 ML 任務執行：在帳戶 [accountId] 中，針對轉換 [transformName]。」

  可以重試：否。

## GetMLTransformActivity
<a name="exceptions-machine-learning-GetMLTransformActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。

## GetMLTransformsActivity
<a name="exceptions-machine-learning-GetMLTransformsActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「帳戶 ID 不可空白。」
  + 「資料行 [column] 不支援排序。」
  + 「[column] 不可空白。」
  + 「由於未預期的輸入導致內部服務故障。」

  可以重試：否。

## GetSaveLocationForTransformArtifactActivity
<a name="exceptions-machine-learning-GetSaveLocationForTransformArtifactActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「不支援的成品類型 [artifactType]。」
  + 「由於未預期的輸入導致內部服務故障。」

  可以重試：否。

## GetTaskRunArtifactActivity
<a name="exceptions-machine-learning-GetTaskRunArtifactActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到 [taskRunId] 的 ML 任務執行：在帳戶 [accountId] 中，針對轉換 [transformName]。」

  可以重試：否。
+ InvalidInputException (400)
  + 「用於發佈的檔案名稱 ‘[fileName]’ 無效。」
  + 「無法擷取 [taskType] 任務類型的成品。」
  + 「無法擷取 [artifactType] 的成品。」
  + 「由於未預期的輸入導致內部服務故障。」

  可以重試：否。

## PublishMLTransformModelActivity
<a name="exceptions-machine-learning-PublishMLTransformModelActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到版本 [version] 的現有模型：帳戶 ID - [accountId] 和轉換 ID - [transformId]。」

  可以重試：否。
+ InvalidInputException (400)
  + 「用於發佈的檔案名稱 ‘[fileName]’ 無效。」
  + 「不帶正負號字串 [string] 有無效的前導負號。」
  + 「[string] 結尾的數字錯誤。」
  +  「字串值 [string] 超過不帶正負號長整數的範圍。」
  + 「由於未預期的輸入導致內部服務故障。」

  可以重試：否。

## PullLatestMLTransformModelActivity
<a name="exceptions-machine-learning-PullLatestMLTransformModelActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「由於未預期的輸入導致內部服務故障。」

  可以重試：否。
+ ConcurrentModificationException (400)
  + 「由於使用不相符的參數競爭插入，導致無法建立要培訓的模型版本。」
  + 「轉換 ID [transformId] 的 ML 轉換模型已過時或正由另一個處理程序更新中；請重試。」

  可以重試：可。

## PutJobMetadataForMLTransformActivity
<a name="exceptions-machine-learning-PutJobMetadataForMLTransformActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「找不到 [taskRunId] 的 ML 任務執行：在帳戶 [accountId] 中，針對轉換 [transformName]。」

  可以重試：否。
+ InvalidInputException (400)
  + 「由於未預期的輸入導致內部服務故障。」
  + 「未知的任務中繼資料類型 [jobType]。」
  +  「必須提供任務執行 ID 才能更新。」

  可以重試：否。

## StartExportLabelsTaskRunActivity
<a name="exceptions-machine-learning-StartExportLabelsTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」
  + 「在帳戶 ID [accountId] 中沒有 transformId [transformId] 的 labelset。」

  可以重試：否。
+ InvalidInputException (400)
  + 「[message]。」
  + 「所提供的 S3 路徑與轉換不在相同區域中。預期區域 - [region]，但得到 - [region]。」

  可以重試：否。

## StartImportLabelsTaskRunActivity
<a name="exceptions-machine-learning-StartExportLabelsTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「[message]。」
  + 「無效的標籤檔案路徑。」
  + 「無法存取位於 [labelPath] 的標籤檔案。[message]。」
  + 「無法使用轉換中提供的 IAM 角色。角色：[role]。」
  + 「標籤檔案大小 0 無效。」
  + 「所提供的 S3 路徑與轉換不在相同區域中。預期區域 - [region]，但得到 - [region]。」

  可以重試：否。
+ ResourceNumberLimitExceededException (400)
  + 「標籤檔案已超過 [limit] MB 的限制。」

  可以重試：否。考慮將您的標籤檔案分成幾個較小的檔案。

## StartMLEvaluationTaskRunActivity
<a name="exceptions-machine-learning-StartMLEvaluationTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「只能提供一個輸入記錄資料表。」
  + 「應該指定資料庫名稱。」
  + 「應該指定資料表名稱。」
  + 「尚未設定「尋找符合項目」參數。」
  + 「「尋找符合項目」參數中必須指定主索引鍵。」

  可以重試：否。
+ MLTransformNotReadyException (400)
  + 「此操作只適用於處於「就緒」狀態的轉換。」

  可以重試：否。
+ InternalServiceException (500)
  + 「相依性失敗。」

  可以重試：可。
+ ConcurrentRunsExceededException (400)
  + 「ML 任務執行計數 [count] 已超過 [limit] 個任務執行的轉換限制。」
  + 「ML 任務執行計數 [count] 已超過 [limit] 個任務執行的限制。」

  可以重試：可。等待任務執行完成後。

## StartMLLabelingSetGenerationTaskRunActivity
<a name="exceptions-machine-learning-StartMLLabelingSetGenerationTaskRunActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「只能提供一個輸入記錄資料表。」
  + 「應該指定資料庫名稱。」
  + 「應該指定資料表名稱。」
  + 「尚未設定「尋找符合項目」參數。」
  + 「「尋找符合項目」參數中必須指定主索引鍵。」

  可以重試：否。
+ InternalServiceException (500)
  + 「相依性失敗。」

  可以重試：可。
+ ConcurrentRunsExceededException (400)
  + 「ML 任務執行計數 [count] 已超過 [limit] 個任務執行的轉換限制。」

  可以重試：可。在任務執行完成後。

## UpdateMLTransformActivity
<a name="exceptions-machine-learning-UpdateMLTransformActivity"></a>

此活動有下列例外狀況：
+ EntityNotFoundException (400)
  + 「在帳戶 [accountId] 中找不到具有控制代碼 [transformName] 的 MLTransform。」

  可以重試：否。
+ InvalidInputException (400)
  + 「另一個名稱為 [transformName] 的轉換已存在。」
  + 「[message]。」
  + 「轉換名稱不可空白。」
  + 「無法同時設定「最大容量」和「工作者數目/類型」。」
  + 「WorkerType 和 NumberOfWorkers 兩者都應該設定。」
  + 「MaxCapacity 應該是 >= [minMaxCapacity]。」
  + 「NumberOfWorkers 應該是 >= [minNumWorkers]。」
  + 「重試次數上限應該是非負數。」
  + 「由於未預期的輸入導致內部服務故障。」
  + 「尚未設定「尋找符合項目」參數。」
  + 「「尋找符合項目」參數中必須指定主索引鍵。」

  可以重試：否。
+ AlreadyExistsException (400)
  + 「名稱為 [transformName] 的轉換已存在。」

  可以重試：否。
+ IdempotentParameterMismatchException (400)
  + 「轉換 [transformName] 的等冪建立請求具有不相符的參數。」

  可以重試：否。

# AWS Glue 配額
<a name="troubleshooting-service-limits"></a>

您可以聯絡 AWS 支援 請求提高 中列出的服務配額*AWS 一般參考*。 [https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)除非另有說明，否則每個配額都是區域特定的。如需詳細資訊，請參閱 [AWS Glue 端點和配額](https://docs.aws.amazon.com/general/latest/gr/glue.html)。