適用於 Amazon S3 的 AWS PrivateLink
透過 AWS PrivateLink for Amazon S3,您可以在 Virtual Private Cloud (VPC) 中佈建介面 VPC 端點 (介面端點)。可以從 VPN 和 AWS Direct Connect 的內部部署或 VPC 對等互連上的不同 AWS 區域 的應用程式中,直接存取這些端點。
介面端點由一個或多個彈性網路介面 (ENI) 來表示,這些是在 VPC 的子網路中指派的私有 IP 地址。透過界面端點傳送到 Amazon S3 的請求會保留在 Amazon 網路。您也可以透過 AWS Direct Connect 或 AWS Virtual Private Network (AWS VPN),從內部部署應用程式存取 VPC 中的介面端點。如需有關如何將 VPC 與內部部署網路連線的詳細資訊,請參閱AWS Direct Connect《 使用者指南》和AWS Site-to-Site VPN《 使用者指南》。
如需有關介面端點的一般資訊,請參閱《AWS PrivateLink 指南》中的介面 VPC 端點 (AWS PrivateLink)。
主題
適用於 Amazon S3 的 VPC 端點類型
您可以使用兩種類型的 VPC 端點來存取 Amazon S3:閘道端點和界面端點 (使用 AWS PrivateLink)。閘道端點是您在路由表中指定的閘道,用於透過 AWS 網路從您的 VPC 存取 Amazon S3。界面端點使用私有 IP 地址,將請求從您的 VPC 內部、內部部署或使用 VPC 對等互連或 AWS Transit Gateway 在其他 AWS 區域 的 VPC 路由至 Amazon S3,來擴展閘道端點的功能。如需詳細資訊,請參閱什麼是 VPC 對等互連?和 Transit Gateway 與 VPC 對等互連。
介面端點與閘道端點相容。如果 VPC 中具有現有的閘道端點,則可以在同一 VPC 中使用兩種類型的端點。
適用於 Amazon S3 的閘道端點 |
適用於 Amazon S3 的介面端點 |
---|---|
在這兩種情況下,您的網路流量都保留在 AWS 網路上。 |
|
使用 Amazon S3 公有 IP 地址 |
使用 VPC 中的私有 IP 地址來存取 Amazon S3 |
使用相同的 Amazon S3 DNS 名稱 |
|
不允許從內部部署存取 |
允許從內部部署存取 |
不允許從其他 AWS 區域 存取 |
允許使用 VPC 對等互連或 AWS Transit Gateway 從另一個 AWS 區域 的 VPC 存取 |
不計費 |
計費 |
如需有關閘道端點的詳細資訊,請參閱《AWS PrivateLink 指南》中的閘道 VPC 端點。
適用於 Amazon S3 之 AWS PrivateLink 的約束和限制
VPC 限制適用於 Amazon S3 的 AWS PrivateLink。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的界面端點考量事項和 AWS PrivateLink 配額。此外,適用下列限制。
適用於 Amazon S3 的 AWS PrivateLink 不支援下列項目:
-
在不同 AWS 區域 的儲存貯體之間使用 CopyObject 或 UploadPartCopy。
-
Transport Layer Security (TLS) 1.1
建立一個 VPC 端點
如要建立 VPC 介面端點,請參閱《AWS PrivateLink 指南》中的建立 VPC 端點。
存取 Amazon S3 介面端點
在您建立介面端點時,Amazon S3 會產生兩種類型的端點特定 S3 DNS 名稱:區域和地區。
-
區域 DNS 名稱包含唯一的 VPC 端點 ID、服務 ID、AWS 區域 及其名稱中的
vpce.amazonaws.com
。例如,針對 VPC 端點 ID
,產生的 DNS 名稱可能類似於vpce-1a2b3c4d
。vpce-1a2b3c4d-5e6f
.s3.us-east-1.vpce.amazonaws.com -
地區 DNS 名稱包含可用區域,例如
。如果您的架構可隔離可用區域,則可以使用此選項。例如,您可以將其用於故障遏止或降低區域資料傳輸成本。vpce-1a2b3c4d-5e6f
-us-east-1a.s3.us-east-1.vpce.amazonaws.com
端點特定 S3 DNS 名稱可以從 S3 公有 DNS 網域解析。
私有 DNS
VPC 界面端點的私有 DNS 選項會簡化透過 VPC 端點的 S3 流量路由,並協助您利用應用程式可用成本最低的網路路徑。您可以使用私有 DNS 選項路由區域 S3 流量,而無需更新 S3 用戶端,以使用界面端點的端點特定 DNS 名稱或管理 DNS 基礎設施。啟用私有 DNS 名稱後,區域 S3 DNS 查詢會針對下列端點解析 AWS PrivateLink 的私有 IP 地址:
-
區域儲存貯體端點 (例如,
s3.us-east-1.amazonaws.com
) -
控制端點 (例如,
s3-control.us-east-1.amazonaws.com
) -
存取點端點 (例如,
s3-accesspoint.us-east-1.amazonaws.com
)
AWS PrivateLink for Amazon S3 不支援使用 Amazon S3 雙堆疊端點。如果您使用 S3 雙堆疊 DNS 名稱作為私有 DNS 名稱,您的 IPv6 流量可能會遭到捨棄;如果您的虛擬私有雲端 (VPC) 具有網際網路閘道,您的 IPv6 流量將透過 VPC 中的網際網路閘道路由。
若您的 VPC 中有閘道端點,您可以在界面端點,透過現有 S3 閘道端點和內部部署請求,自動路由 VPC 內請求。這種方法可讓您免費使用 VPC 內流量的閘道端點,針對 VPC 內流量來最佳化網路成本。您的內部部署應用程式可以在傳入 Resolver 端點的協助下使用 AWS PrivateLink。Amazon 會為您的 VPC 提供 DNS 伺服器,名為 Route 53 Resolver。傳入 Resolver 端點會將 DNS 查詢從內部部署網路轉送至 Route 53 Resolver。
重要
只有支援閘道端點的服務才能使用僅針對輸入端點啟用私有 DNS 選項。
如需詳細了解使用僅針對輸入端點啟用私有 DNS建立的 VPC 端點,請參閱《AWS PrivateLink 指南》中的建立界面端點。
使用 VPC 主控台
在主控台中,您有兩個選項:啟用 DNS 名稱和僅針對輸入端點啟用私有 DNS。啟用 DNS 名稱是由 AWS PrivateLink 支援的選項。透過使用啟用 DNS 名稱選項,您可以使用 Amazon 與 Amazon S3 的私有連線,同時向預設公有端點 DNS 名稱傳送請求。啟用此選項後,客戶可以利用其應用程式可用的最低成本網路路徑。
在 Amazon S3 的現有或新 VPC 界面端點上啟用私有 DNS 名稱時,根據預設,系統會選取僅針對輸入端點啟用私有 DNS 選項。如果選取此選項,針對內部部署流量,您的應用程式只會使用界面端點。此 VPC 內流量會自動使用成本較低的閘道端點。或者,您可以清除僅針對傳入端點啟用私有 DNS,以透過界面端點路由所有 S3 請求。
使用 AWS CLI
如果您不指定 PrivateDnsOnlyForInboundResolverEndpoint
的值,則會預設為 true
。但是,在 VPC 套用您的設定之前,會先執行檢查以確定 VPC 中存在閘道端點。如果 VPC 中存在閘道端點,則表示呼叫成功。若無,您看到以下錯誤訊息:
若要將 PrivateDnsOnlyForInboundResolverEndpoint 設為 true,VPC
vpce_id
必須針對服務擁有閘道端點。
針對新的 VPC 界面端點
使用 private-dns-enabled
和 dns-options
屬性透過命令列啟用私有 DNS。dns-options
屬性中的 PrivateDnsOnlyForInboundResolverEndpoint
選項必須設定為 true
。以您自己的資訊取代
。user input placeholders
aws ec2 create-vpc-endpoint \ --region
us-east-1
\ --service-names3-service-name
\ --vpc-idclient-vpc-id
\ --subnet-idsclient-subnet-id
\ --vpc-endpoint-type Interface \ --private-dns-enabled \ --ip-address-typeip-address-type
\ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \ --security-group-idsclient-sg-id
針對現有 VPC 端點
如果您想對現有 VPC 端點使用私有 DNS,請使用下列範例命令,並以您自己的資訊取代
。user input placeholders
aws ec2 modify-vpc-endpoint \ --region
us-east-1
\ --vpc-endpoint-idclient-vpc-id
\ --private-dns-enabled \ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=false
如果您想要更新現有 VPC 端點,以僅針對傳入 Resolver 啟用私有 DNS,請使用下列範例,並以您自己的值取代範例值。
aws ec2 modify-vpc-endpoint \ --region
us-east-1
\ --vpc-endpoint-idclient-vpc-id
\ --private-dns-enabled \ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=true
從 S3 界面端點存取儲存貯體、存取點和 Amazon S3 控制 API 操作
您可以使用 AWS CLI 或 AWS SDK,透過 S3 界面端點來存取儲存貯體、S3 存取點和 Amazon S3 控制 API 操作。
下圖顯示了 VPC 主控台詳細資訊標籤,您可以在其中找到 VPC 端點的 DNS 名稱。在此範例中,VPC 端點 ID (vpce-id) 為 vpce-0e25b8cdd720f900e
,DNS 名稱為 *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
。

使用 DNS 名稱存取資源時,請以適當的值取代 *
。取代 *
的適當值如下:
-
bucket
-
accesspoint
-
control
例如,若要存取儲存貯體,請使用類似以下的 DNS 名稱:
bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
如需相關範例,了解如何使用 DNS 名稱存取儲存貯體、存取點和 Amazon S3 控制 API 操作,請參閱以下 AWS CLI 範例 和 AWS SDK 範例 章節。
如需如何檢視端點特定 DNS 名稱的詳細資訊,請參閱《VPC 使用者指南》中的檢視端點服務私有 DNS 名稱組態。
AWS CLI 範例
使用 --region
和 --endpoint-url
參數,可透過AWS CLI 命令的 S3 界面端點來存取 S3 儲存貯體、S3 存取點或 Amazon S3 控制 API 操作。
範例:使用端點 URL 列出儲存貯體中的物件
在下列範例中,將儲存貯體名稱
、區域 my-bucket
和 VPC 端點 ID us-east-1
的 DNS 名稱取代為您自己的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
aws s3 ls s3://
my-bucket
/ --regionus-east-1
--endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
範例:使用端點 URL 從存取點列出物件
-
方法 1 — 搭配使用存取點的 Amazon Resource Name (ARN) 與存取點端點
將 ARN
、區域us-east-1:123456789012:accesspoint/accesspointexamplename
和 VPC 端點 IDus-east-1
取代為您的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
aws s3api list-objects-v2 --bucket arn:aws:s3:
us-east-1:123456789012:accesspoint/accesspointexamplename
--regionus-east-1
--endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
如果無法順利執行命令,請更新 AWS CLI 至最新版本,然後再試一次。如需更新相關指示,請參閱《AWS Command Line Interface 使用者指南》中的安裝或更新 AWS CLI 的最新版本。
-
方法 2 — 將存取點的別名與區域儲存貯體端點搭配使用
在下列範例中,將存取點別名
、區域accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias
和 VPC 端點 IDus-east-1
取代為您的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
aws s3api list-objects-v2 --bucket
accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias
--regionus-east-1
--endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
-
方法 3 — 將存取點的別名與存取點端點搭配使用
首先,若要使用包含在主機名稱中的儲存貯體來建構 S3 端點,請將
aws s3api
的地址樣式設定為virtual
以供使用。如需AWS configure
相關資訊,請參閱《AWS Command Line Interface 使用者指南》中的組態和憑證檔案設定。aws configure set default.s3.addressing_style virtual
接著,在下列範例中,將存取點別名
、區域accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias
和 VPC 端點 IDus-east-1
取代為您的資訊。如需存取點別名的詳細資訊,請參閱針對您的 S3 儲存貯體存取點使用儲存貯體樣式別名。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
aws s3api list-objects-v2 --bucket
accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias
--regionus-east-1
--endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
範例:使用端點 URL 列出具有 S3 控制 API 操作的任務
在下列範例中,將區域
、VPC 端點 ID us-east-1
和 帳戶 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
取代為您的資訊。12345678
aws s3control --region
us-east-1
--endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
list-jobs --account-id12345678
AWS SDK 範例
若要在使用 AWS SDK 時,透過 S3 界面端點來存取儲存貯體、S3 存取點和 Amazon S3 控制 API 操作,請更新您的 SDK 至最新版本。接著,設定您的用戶端使用端點 URL,以透過 S3 界面端點來存取儲存貯體、存取點或 Amazon S3 控制 API 操作。
更新內部部署 DNS 組態
使用端點特定 DNS 名稱來存取 Amazon S3 的介面端點時,您不必更新內部部署 DNS 解析器。您可以使用公有 Amazon S3 DNS 網域中介面端點的私有 IP 地址,來解析端點特定的 DNS 名稱。
使用介面端點來存取 Amazon S3,而不需要 VPC 中的閘道端點或網際網路閘道
VPC 中的介面端點可以透過 Amazon 網路,將 VPC 內應用程式和內部部署應用程式路由至 Amazon S3,如下圖所示。

此圖展示了以下要點:
-
您的內部部署網路會使用 AWS Direct Connect 或 AWS VPN 連線到 VPC A。
-
您的內部部署和 VPC A 中的應用程式使用端點特定的 DNS 名稱,透過 S3 介面端點存取 Amazon S3。
-
內部部署應用程式在 VPC 中透過 AWS Direct Connect (或 AWS VPN) 傳送資料至介面端點。AWS PrivateLink 會透過 AWS 網路將資料從介面端點移至 Amazon S3。
-
VPC 內應用程式也會傳送流量至介面端點。AWS PrivateLink 會透過 AWS 網路將資料從介面端點移至 Amazon S3。
在同一 VPC 中使用閘道端點和介面端點來存取 Amazon S3
您可以建立介面端點,並將現有的閘道端點保留在同一 VPC 中,如下圖所示。使用這個方式,您可以允許 VPC 內應用程式繼續透過閘道端點來存取 Amazon S3,而無需支付費用。然後,只有您的內部部署應用程式才會使用控制 API 端點來存取 Amazon S3。若要以這種方式存取 Amazon S3,您必須更新內部部署應用程式,以使用 Amazon S3 端點特定 DNS 名稱。

此圖展示了以下要點:
-
內部部署應用程式在 VPC 中透過 AWS Direct Connect (或 AWS VPN) 使用端點特定的 DNS 名稱傳送資料至介面端點。AWS PrivateLink 會透過 AWS 網路將資料從介面端點移至 Amazon S3。
-
VPC 內應用程式使用預設區域 Amazon S3 名稱,將資料傳送至透過 AWS 網路連線至 Amazon S3 的閘道端點。
如需有關閘道端點的詳細資訊,請參閱《VPC 使用者指南》中的閘道 VPC 端點。
為 Amazon S3 建立 VPC 端點政策
您可以將端點政策連接至控制 Amazon S3 存取權的 VPC 端點。此政策會指定下列資訊:
-
可執行動作的 AWS Identity and Access Management (IAM) 委託人
-
可執行的動作
-
可在其中執行動作的資源
您還可以利用 Amazon S3 儲存貯體政策,使用儲存貯體政策中的 aws:sourceVpce
條件,來限制特定 VPC 端點對特定儲存貯體的存取。下列範例顯示了限制儲存貯體或端點存取權的政策。
範例:限制從 VPC 端點對特定儲存貯體的存取
您可以建立端點政策,以限制只存取特定 Amazon S3 儲存貯體。如果您在 VPC 中具有使用儲存貯體的其他 AWS 服務,這個政策類型會十分有用。下列儲存貯體政策限制只存取
。若要使用此端點政策,請將 amzn-s3-demo-bucket1
取代為您的儲存貯體名稱。amzn-s3-demo-bucket1
{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*"] } ] }
amzn-s3-demo-bucket1
範例:限制從 VPC 端點對特定帳戶中儲存貯體的存取
您可以建立端點政策,限制僅存取特定 AWS 帳戶 中的 S3 儲存貯體。若要防止 VPC 內的用戶端存取您未擁有的儲存貯體,請在端點政策中使用下列陳述式。下列範例陳述式會建立政策,限制對單一 AWS 帳戶 ID
所擁有資源的存取。111122223333
{ "Statement": [ { "Sid": "Access-to-bucket-in-specific-account-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": "
111122223333
" } } } ] }
注意
您可以使用 IAM 政策中的 aws:ResourceAccount
或 s3:ResourceAccount
金鑰,來指定正在受存取的資源 AWS 帳戶 ID。不過請注意,有些 AWS 服務 仰賴 AWS 受管儲存貯體的存取。因此,在 IAM 政策使用 aws:ResourceAccount
或者 s3:ResourceAccount
金鑰也可能影響對這些資源的存取。
範例:限制對 S3 儲存貯體政策中特定 VPC 端點的存取
範例:限制對 S3 儲存貯體政策中特定 VPC 端點的存取
下列 Amazon S3 儲存貯體政策允許僅從 VPC 端點
存取特定儲存貯體 vpce-1a2b3c4d
。如果未使用指定的端點,政策會拒絕所有對儲存貯體的存取。amzn-s3-demo-bucket2
aws:sourceVpce
條件會指定端點,且不需要 VPC 端點資源的 Amazon Resource Name (ARN),只需要端點 ID。若要使用此儲存貯體政策,請將
和 amzn-s3-demo-bucket2
取代為您的儲存貯體名稱與端點。vpce-1a2b3c4d
重要
-
套用下列 Amazon S3 儲存貯體政策以將存取限制為特定 VPC 端點時,您可能會意外封鎖對儲存貯體的存取。來自您 VPC 端點,旨在特別限制儲存貯體存取連線的儲存貯體政策,可能會封鎖所有對儲存貯體的連線。如需有關如何修復此問題的資訊,請參閱我的儲存貯體政策有錯誤的 VPC 或 VPC 端點 ID。我該如何修復政策,讓我可以存取儲存貯體?(位於
支援 知識中心)。 -
使用下列範例政策之前,請以適合您使用案例的適當值取代 VPC 端點 ID。否則,您將無法存取儲存貯體。
-
此政策會停用對指定儲存貯體的主控台存取,因為主控台要求不是來自指定的 VPC 端點。
{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket2
"], "Condition": {"StringNotEquals": {"aws:sourceVpce": "
amzn-s3-demo-bucket2
/*vpce-1a2b3c4d
"}} } ] }
如需更多政策範例,請參閱《VPC 使用者指南》中的適用於 Amazon S3 的端點。
如需 VPC 連線能力的詳細資訊,請參與 AWS 白皮書 Amazon Virtual Private Cloud 連線能力選項中的網路至 VPC 連線能力選項。