我的 AWS Glue 工作失敗,並收到錯誤「JobRunId:jr_xx failed to execute with exception VPC S3 endpoint validation failed for SubnetId.Reason: Could not find S3 endpoint or NAT gateway for subnetId」。或者,我的 AWS Glue 編目程式失敗,並收到錯誤「VPC S3 endpoint validation failed for SubnetId.Reason: Could not find S3 endpoint or NAT gateway for subnetId」。
簡短描述
當下列條件為 true 時,您會收到此項錯誤:
- 您正在使用 AWS Glue 工作或 AWS Glue 編目程式的 AWS Glue 連線。
- 為 AWS Glue 連線設定的子網路沒有設定 Amazon Simple Storage Service (Amazon S3) 虛擬私有雲端 (VPC) 端點或 NAT 閘道。
AWS Glue 會在 AWS Glue 連線中指定的子網路中建立彈性網路介面。這些彈性網路介面會用來連線到您的資料來源和 Amazon S3。彈性網路介面會從指定子網路內的 IP 位址範圍指定私有 IP 位址。因為沒有使用公有 IP 位址,所以 AWS Glue 無法直接使用網際網路連線到資料來源或 VPC 內的 Amazon S3。如需詳細資訊,請參閱設定資料存放區的網路存取權。
解決方案
確保為 AWS Glue 連線設定的子網路具有 Amazon S3 VPC 閘道端點或子網路路由表中 NAT 閘道的路由。如需詳細資訊,請參閱錯誤: 無法在 VPC 中找到子網路 ID 的 S3 端點或 NAT 閘道。如果您的 AWS Glue 工作必須存取公有網際網路,請檢查並確認子網路已使用 NAT 閘道設定。
設定 S3 VPC 閘道端點
若要設定 S3 VPC 閘道端點,請遵循下列步驟:
- 開啟 Amazon VPC 主控台。
- 在導覽窗格中,選擇端點。
- 選擇建立端點。
- 對於服務名稱,選取 com.amazonaws.us-east-1.s3。確定「類型」資料欄會指出**閘道。
注意事項:**確定將 us-east-1 取代為您選擇的 AWS 區域。
- 對於 VPC,選取您想要在其中建立端點的 VPC。
- 對於設定路由表,系統會自動新增 S3 VPC 端點的路由。
- 對於政策,保留預設選項完整存取權。
- 選擇建立端點。
如需詳細資訊,請參閱閘道端點。
如果您要設定更具限制性的政策,請務必允許 AWS Glue 工作或 AWS Glue 編目程式的 AWS Identity and Access Management (IAM) 角色存取所需的 S3 儲存貯體和物件。
設定 NAT 閘道
注意事項: 建立彈性 IP 位址是設定 NAT 閘道的先決條件。如需配置的詳細資訊,請參閱配置彈性 IP 位址。
若要設定 NAT 閘道,請執行下列動作:
注意事項: 確定用於 AWS Glue 連線的 VPC 至少具有一個公有子網路。如需詳細資訊,請參閱具有公有和私有子網路 (NAT) 的 VPC。
- 開啟 Amazon VPC 主控台。
- 在導覽窗格中,選擇 NAT 閘道。
- 選擇建立 NAT 閘道。
- 對於名稱,輸入您想要建立的閘道名稱。
- 對於子網路,在您於 AWS Glue 連線中指定的 VPC 中選取公有子網路。
- 對於連線功能類型,您可以保留預設選項公有來建立公有 NAT 閘道。
- 選擇建立 NAT 閘道。
設定閘道之後,您必須執行下列動作:
- 修改與 AWS Glue 連線中指定的子網路相關聯的路由表。
- 將路由新增至建立的 NAT 閘道。
若要修改路由表並將路由新增至 NAT 閘道,請執行下列動作:
- 在導覽窗格中,選擇路由表。
- 選取與您想要修改的子網路相關聯的路由表。
- 選擇動作,然後選擇編輯路由。
- 在編輯路由頁面中,選擇新增路由。
- 在出現的新路由中,執行下列動作:
對於目的地,輸入 0.0.0.0/0。
對於目標,選取 NAT 閘道,然後選取您建立的 NAT 閘道。**注意事項:**您必須選取這些選項,以確保所有子網路流量 (例如網際網路連結流量) 都會傳送到 NAT 閘道。
- 選擇儲存變更。
在子網路中設定 S3 VPC 端點或 NAT 閘道後,測試各自的 AWS Glue 連線。測試連線成功後,重新執行 AWS Glue 工作或 AWS Glue 編目程式。
相關資訊
Amazon S3 的 Amazon VPC 端點