View a markdown version of this page

使用增強型 VPC 路由查詢資料湖資料表 - Amazon Redshift

Amazon Redshift 將不再支援在 2026 年 6 月 30 日之後使用 Python UDFs。我們將開始分階段強制執行。如需 Python 生命週期結束和遷移選項的詳細資訊,請參閱 2025 年 6 月 30 日發佈的部落格文章。

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

使用增強型 VPC 路由查詢資料湖資料表

開啟增強型 VPC 路由時,Amazon Redshift 會透過您的 VPC 路由流量。資料湖資料表將其資料存放在 Amazon S3 中,其中繼資料存放在 中 AWS Glue Data Catalog,兩者都在 VPC 之外。若要讓資料湖查詢成功,您的叢集或工作群組必須能夠連接 Amazon S3 和 AWS Glue。如果您的資料湖資料表是由 AWS Lake Formation 管理,它也必須能夠連線到 Lake Formation。增強型 VPC 路由會影響 Amazon Redshift 存取這些外部資源的方式,因此除非您正確設定 VPC,否則查詢可能會失敗。

在叢集或工作群組執行的 VPC 和子網路中建立下列 VPC 端點,並將它們與適當的路由表建立關聯。整合的資料湖查詢引擎和 Amazon Redshift Spectrum 都需要這些端點:

  • Amazon S3 閘道端點 – 透過 AWS 網路為叢集或工作群組提供路由至 Amazon S3,以讀取資料湖資料檔案。如需步驟,請參閱《Amazon VPC 使用者指南》中的 Amazon S3 的閘道端點。

  • AWS Glue 介面端點 – 為您的叢集或工作群組提供通往 的路由, AWS Glue Data Catalog 以解析資料湖結構描述和資料表。如需步驟,請參閱《Amazon VPC 使用者指南》中的建立介面端點。

  • AWS Lake Formation 介面端點 – 只有在資料湖資料表由 AWS Lake Formation 管理時才需要。為您的叢集或工作群組提供 Lake Formation 的路由。如需步驟,請參閱《Amazon VPC 使用者指南》中的建立介面端點。

無論您如何查詢外部資料表,端點組態都是相同的,但流量路由方式會因查詢引擎而有所不同。下列各節說明 RG 佈建叢集和 Amazon Redshift Serverless 上整合資料湖查詢引擎的行為,以及 RA3 和 DC2 佈建叢集上的 Redshift Spectrum 的行為。

適用於 RG 佈建叢集和 Amazon Redshift Serverless 的整合式資料湖查詢引擎

RG 佈建叢集和 Amazon Redshift Serverless 包含整合式資料湖查詢引擎。此引擎會在您 VPC 內的叢集或工作群組自己的運算資源上執行。開啟增強型 VPC 路由並備妥必要的 VPC 端點時,存取 Amazon S3 並 AWS Glue 來自您的 VPC 內運算,並流經這些 VPC 端點。此流量會保留在您的 VPC 界限和 AWS 網路上。此存取權是根據連接至叢集或工作群組的 IAM 角色進行授權。若要進一步管理此流量,您可以修改 IAM 角色和連接到 Amazon S3 儲存貯體的政策。

適用於 RA3 和 DC2 佈建叢集的 Amazon Redshift Spectrum

Redshift Spectrum 會在 Amazon Redshift 擁有但位於 VPC 外部的 AWS 受管資源上執行。因此,即使開啟增強型 VPC 路由,Redshift Spectrum 傳送至 Amazon S3 的流量也不會通過您的 VPC,但叢集仍需要先前所述的 Amazon S3 和 AWS Glue VPC 端點來執行資料湖查詢。

Redshift Spectrum 和 Amazon S3 之間的流量會透過 AWS 私有網路安全地路由至 VPC 外部。傳輸中的流量是使用 Amazon Signature 第 4 版通訊協定 (SIGv4) 來簽署,並使用 HTTPS 來加密。此流量是根據連接到 Amazon Redshift 叢集的 IAM 角色而獲得授權。若要進一步管理 Redshift Spectrum 流量,您可以修改叢集的 IAM 角色和已連接到 Amazon S3 儲存貯體的政策。

資料湖查詢的許可政策組態

在 Amazon S3 中查詢資料湖資料表時,請考慮下列事項:

Amazon S3 儲存貯體存取政策和 IAM 角色

您可以使用連接到儲存貯體的儲存貯體政策,以及使用連接到佈建叢集的 IAM 角色,來控制 Amazon S3 儲存貯體中資料的存取權。

如果 Amazon S3 儲存貯體使用的儲存貯體政策僅限於存取指定的 VPC 端點,佈建叢集上的 Redshift Spectrum 便無法存取該儲存貯體中儲存的資料。反之,請使用儲存貯體政策,限制只能存取特定委託人,例如特定 AWS 帳戶或特定使用者。啟用增強型 VPC 路由時,RG 佈建叢集和 Amazon Redshift Serverless 上的整合資料湖查詢引擎可以存取此類儲存貯體,因為其 Amazon S3 存取會流經您的 VPC 端點。

對於獲授權存取儲存貯體的 IAM 角色,請使用只允許由 Amazon Redshift 服務主體擔任該角色的信任關係。連接到叢集時,該角色只能用於 Amazon Redshift 的內容中,不能在叢集外共用。如需詳細資訊,請參閱限制對 IAM 角色的存取。服務控制政策 (SCP) 也可用於進一步限制角色,請參閱《AWS Organizations 使用者指南》中的防止 IAM 使用者和角色進行指定變更,且指定的管理員角色除外。

注意

若要使用 Redshift Spectrum,則不能有任何會阻止使用 Amazon S3 預先簽章 URL 的 IAM 政策。Amazon Redshift Spectrum 產生的預先簽章 URL 有效期為 1 小時,如此 Amazon Redshift 就有足夠的時間從 Amazon S3 儲存貯體載入所有檔案。Redshift Spectrum 掃描的每個檔案都會產生唯一的預先簽章 URL。對於包含 s3:signatureAge 動作的儲存貯體政策,請務必將值設定為至少 3,600,000 毫秒。

下列儲存貯體政策範例允許存取 AWS 帳戶 擁有的指定儲存貯體123456789012。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "BucketPolicyForSpectrum", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::123456789012:role/redshift"] }, "Action": [ "s3:GetObject", "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

擔任 IAM 角色的許可

連接到叢集的角色應該具有只允許 Amazon Redshift 服務擔任該角色的信任關係,如下所示。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

如需詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 Redshift Spectrum 的 IAM 政策。

記錄和稽核 Amazon S3 存取

使用 Amazon Redshift 增強型 VPC 路由的一項好處是所有 COPY 和 UNLOAD 流量都記錄在 VPC 流程日誌中。源自 Redshift Spectrum 到 Amazon S3 的流量不會通過 VPC,所以沒有記錄在 VPC 流程日誌中。當 Redshift Spectrum 存取 Amazon S3 中的資料時,它會在 AWS 帳戶內容和個別角色權限中執行這些操作。您可以在 AWS CloudTrail 和 Amazon S3 中使用伺服器存取日誌記錄,以記錄和稽核 Amazon S3。

確定 S3 IP 範圍已新增至您的允許清單。若要進一步了解所需的 S3 IP 範圍,請參閱網路隔離。

AWS CloudTrail 日誌

若要追蹤對 Amazon S3 中的物件的所有存取,包括 Redshift Spectrum 存取,請對 Amazon S3 物件啟用 CloudTrail 記錄。

您可以使用 CloudTrail 來檢視、搜尋、下載、封存、分析和回應整個 AWS 基礎設施的帳戶活動。如需詳細資訊,請參閱 CloudTrail 入門。

根據預設,CloudTrail 只會追蹤儲存貯體層級的動作。若要追蹤物件層級的動作 (例如 GetObject),請對每一個已記錄的儲存貯體啟用資料和管理事件。

Amazon S3 伺服器存取記錄

伺服器存取記錄日誌,應儲存貯體要求,提出的詳細記錄。存取記錄資訊在安全與存取稽核中相當實用。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的如何啟用伺服器存取記錄。

如需詳細資訊,請參閱 AWS 安全部落格文章如何使用儲存貯體政策和套用Defense-in-Depth以協助保護您的 Amazon S3 資料。

存取 AWS Glue 或 Amazon Athena

Redshift Spectrum 和整合的資料湖查詢引擎都會存取 AWS Glue 或 Athena 中的資料目錄。另一個選項是使用專用的 Hive 中繼存放區來處理資料目錄。

到達 的建議方法是為 AWS Glue Data Catalog 建立介面 VPC 端點 (AWS PrivateLink) AWS Glue。當您使用 VPC 介面端點時,VPC 和 之間的通訊 AWS Glue 會在 AWS 網路中路由。如需詳細資訊,請參閱建立界面端點。

或者,若要連接 AWS Glue 和 Athena 的公有端點,請使用網際網路閘道或 NAT 閘道設定您的 VPC,並設定您的 VPC 安全群組以允許這些公有端點的傳出流量。您可以在 VPC 中設定下列路徑:

  • 網際網路閘道 – 若要連線至 VPC 以外的 AWS 服務,您可以將網際網路閘道連接至 VPC 子網路,如 Amazon VPC 使用者指南中所述。若要使用網際網路閘道,佈建叢集必須有公有 IP 位址,才能讓其他服務與其進行通訊。

  • NAT 閘道 – 若要連線至另一個 AWS 區域中的 Amazon S3 儲存貯體或網路中的 AWS 其他服務,請設定網路位址轉譯 (NAT) 閘道,如 Amazon VPC 使用者指南中所述。您也可以使用此組態來存取 AWS 網路外的主機執行個體。