本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS PrivateLink for Amazon S3,您可以在虛擬私有雲端 (VPC) 中佈建介面 VPC 端點 (介面端點)。這些端點可直接透過 VPN 和內部部署的應用程式存取 AWS Direct Connect,或 AWS 區域 是透過 VPC 對等互連的不同應用程式存取。
介面端點由一個或多個彈性網路介面 (ENI) 來表示,這些是在 VPC 的子網路中指派的私有 IP 地址。透過界面端點傳送到 Amazon S3 的請求會保留在 Amazon 網路。您也可以透過 AWS Direct Connect 或 AWS Virtual Private Network (),從內部部署應用程式存取 VPC 中的介面端點AWS VPN。如需有關如何將 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 對等互連 或 從另一個 VPC 將請求路由至 Amazon S3, AWS 區域 藉此擴充閘道端點的功能 AWS Transit Gateway。如需詳細資訊,請參閱什麼是 VPC 對等互連?和 Transit Gateway 與 VPC 對等互連。
介面端點與閘道端點相容。如果 VPC 中具有現有的閘道端點,則可以在同一 VPC 中使用兩種類型的端點。
適用於 Amazon S3 的閘道端點 |
適用於 Amazon S3 的介面端點 |
---|---|
在這兩種情況下,您的網路流量都會保留在 AWS 網路上。 |
|
使用 Amazon S3 公有 IP 地址 |
使用 VPC 中的私有 IP 地址來存取 Amazon S3 |
使用相同的 Amazon S3 DNS 名稱 |
|
不允許從內部部署存取 |
允許從內部部署存取 |
不允許從另一個 存取 AWS 區域 |
AWS 區域 使用 VPC 對等互連或 允許從另一個 VPC 存取 AWS Transit Gateway |
不計費 |
計費 |
如需有關閘道端點的詳細資訊,請參閱《AWS PrivateLink 指南》中的閘道 VPC 端點。
適用於 Amazon S3 AWS PrivateLink 的限制
適用於 Amazon S3 AWS PrivateLink 的 VPC 限制適用於 。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的界面端點考量事項和 AWS PrivateLink 配額。此外,適用下列限制。
AWS PrivateLink for Amazon S3 不支援下列項目:
-
在不同的 儲存貯體UploadPartCopy之間使用 CopyObject或 AWS 區域
-
Transport Layer Security (TLS) 1.1
建立一個 VPC 端點
如要建立 VPC 介面端點,請參閱《AWS PrivateLink 指南》中的建立 VPC 端點。
存取 Amazon S3 介面端點
在您建立介面端點時,Amazon S3 會產生兩種類型的端點特定 S3 DNS 名稱:區域和地區。
-
區域 DNS 名稱在名稱
vpce.amazonaws.com
中包含唯一的 VPC 端點 ID、服務識別符 AWS 區域、 和 。例如,針對 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 內流量來最佳化網路成本。您的內部部署應用程式可以在傳入解析程式端點的協助 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 SDKs 透過 S3 介面端點存取儲存貯體、S3 存取點和 Amazon S3S3 Control 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 範例
若要透過 AWS CLI 命令中的 S3 介面端點存取 S3 儲存貯體、S3 存取點或 Amazon S3 S3 Control API 操作,請使用 --region
和 --endpoint-url
參數。
範例:使用端點 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
取代為您的資訊。如需存取點別名的詳細資訊,請參閱存取點別名。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 SDKs 時透過 S3 介面端點存取 S3 儲存貯體、S3 存取點或 Amazon S3 Control API 操作,請將 SDKs更新至最新版本。 S3 接著,設定您的用戶端使用端點 URL,以透過 S3 界面端點來存取儲存貯體、存取點或 Amazon S3 控制 API 操作。
範例:使用端點 URL 存取 S3 儲存貯體
在下列範例中,將區域
和 VPC 端點 ID us-east-1
取代為您的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
s3_client = session.client(
service_name='s3',
region_name='us-east-1
',
endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
'
)
範例:使用端點 URL 存取 S3 存取點
在下列範例中,將區域
和 VPC 端點 ID us-east-1
取代為您的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
ap_client = session.client(
service_name='s3',
region_name='us-east-1
',
endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
'
)
範例:使用端點 URL 存取 Amazon S3 控制 API
在下列範例中,將區域
和 VPC 端點 ID us-east-1
取代為您的資訊。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
control_client = session.client(
service_name='s3control',
region_name='us-east-1
',
endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
'
)
更新內部部署 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。
-
內部部署應用程式會透過 AWS Direct Connect (或 AWS VPN) 將資料傳送至 VPC 中的介面端點。 會透過 AWS 網路將資料從介面端點 AWS PrivateLink 移至 Amazon S3。
-
內部 VPC 應用程式也會將流量傳送至介面端點。 會透過 AWS 網路將資料從介面端點 AWS PrivateLink 移至 Amazon S3。
在同一 VPC 中使用閘道端點和介面端點來存取 Amazon S3
您可以建立介面端點,並將現有的閘道端點保留在同一 VPC 中,如下圖所示。使用這個方式,您可以允許 VPC 內應用程式繼續透過閘道端點來存取 Amazon S3,而無需支付費用。然後,只有您的內部部署應用程式才會使用控制 API 端點來存取 Amazon S3。若要以這種方式存取 Amazon S3,您必須更新內部部署應用程式,以使用 Amazon S3 端點特定 DNS 名稱。

此圖展示了以下要點:
-
內部部署應用程式使用端點特定的 DNS 名稱,透過 AWS Direct Connect (或 AWS VPN) 將資料從介面端點 AWS PrivateLink 移動到Amazon S3 AWS 網路中的介面端點。
-
使用預設的區域 Amazon S3 名稱,VPC 內應用程式會將資料傳送至透過 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:::amzn-s3-demo-bucket1
",
"arn:aws:s3:::amzn-s3-demo-bucket1
/*"]
}
]
}
範例:限制從 VPC 端點對特定帳戶中儲存貯體的存取
您可以建立端點政策,限制存取特定 中的 S3 儲存貯體 AWS 帳戶。若要防止 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
"
}
}
}
]
}
注意
若要指定要存取的資源 AWS 帳戶 ID,您可以使用 aws:ResourceAccount
或 IAM 政策中的s3:ResourceAccount
金鑰。不過,請注意,有些 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:::amzn-s3-demo-bucket2
",
"arn:aws:s3:::amzn-s3-demo-bucket2
/*
"],
"Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d
"}}
}
]
}
如需更多政策範例,請參閱《VPC 使用者指南》中的適用於 Amazon S3 的端點。
如需 VPC 連線的詳細資訊,請參閱 AWS Network-to-VPC 連線選項 Amazon Virtual Private Cloud。