本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS PrivateLink 適用於 Amazon S3
使用 AWS PrivateLink for Amazon S3,您可以在虛擬私有雲端 (VPC) 中佈建介面 Word 端點 (介面端點)VPC。這些端點可直接透過 VPN 和 內部部署的應用程式存取 AWS Direct Connect,也可以 AWS 區域 透過 VPC 對等方式存取。
介面端點由一或多個彈性網路介面 (ENIs) 表示,這些介面會從 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 內部、內部部署,或使用 Word 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 不支援下列項目:
-
使用 CopyObject 或 UploadPartCopy 不同 中的儲存貯體之間 AWS 區域
-
Transport Layer Security (TLS) 1.1
建立 VPC 端點
若要建立 VPC 介面端點,請參閱 AWS PrivateLink 指南中的建立 VPC 端點。
存取 Amazon S3 介面端點
當您建立介面端點時,Amazon S3 會產生兩種端點特有的 S3 DNS名稱:區域和區域。
-
區域 DNS 名稱包含唯一的 VPC 端點 ID、服務識別符 AWS 區域、 和
vpce.amazonaws.com
名稱。例如,對於 VPC 端點 ID
,產生的 DNS 名稱可能與 類似vpce-1a2b3c4d
。vpce-1a2b3c4d-5e6f
.s3.us-east-1.vpce.amazonaws.com -
Zonal 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網路成本。您的內部部署應用程式可以在傳入 Resolver 端點的 AWS PrivateLink 協助下使用。Amazon 為您的 DNS 提供名為 Route 53 Resolver 的 VPC 伺服器。傳入 Resolver 端點會將 DNS 查詢從內部部署網路轉送至 Route 53 Resolver。
重要
若要在僅針對傳入端點使用啟用私有 DNS 時利用最低成本的網路路徑,閘道端點必須存在於您的 VPC 中。選取僅針對傳入端點啟用私有 DNS 選項時,閘道端點的存在有助於確保VPC內流量一律透過 AWS 私有網路路由。當您選取僅針對傳入端點啟用私有 DNS 選項時,您必須維護此閘道端點。如果您想要刪除閘道端點,您必須先清除僅針對傳入端點啟用私有 DNS。
如果您想要僅針對傳入端點將現有介面端點更新為啟用私有 DNS,請先確認您的 VPC 具有 S3 閘道端點。如需有關閘道端點和管理私有 DNS 名稱的詳細資訊,請參閱 AWS PrivateLink 指南中的閘道 VPC 端點和管理 DNS 名稱。
僅針對傳入端點啟用私有 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 Interface 端點
使用 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 端點
如果您想要將私有 DNS 用於現有的 VPC 端點,請使用下列範例命令,並以
您自己的資訊取代 。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 端點,以僅針對傳入解析程式啟用私有 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 Control API 操作
您可以使用 AWS CLI or AWS SDKs 透過 S3 介面端點存取儲存貯體、S3 存取點和 Amazon S3 Control API 操作。
下圖顯示 VPC 主控台詳細資訊索引標籤,您可以在其中找到 DNS 端點的 VPC 名稱。在此範例中,VPC 端點 ID (vpce-id) 為 vpce-0e25b8cdd720f900e
,Word 名稱為 *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
。 DNS
使用 DNS 名稱存取資源時,請取代 *
具有適當的值。取代 *
的適當值如下:
-
bucket
-
accesspoint
-
control
例如,若要存取儲存貯體,請使用如下所示的 DNS 名稱:
bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
如需如何使用 DNS 名稱存取儲存貯體、存取點和 Amazon S3 Control API 操作的範例,請參閱 AWS CLI 範例和 的下列章節AWS SDK範例。
如需有關如何檢視端點特定 DNS 名稱的詳細資訊,請參閱 DNS 使用者指南中的檢視端點服務私有 Word 名稱組態。 VPC
AWS CLI 範例
若要透過 AWS CLI 命令中的 S3 介面端點存取 S3 儲存貯體、S3 存取點或 Amazon S3 Control API 操作,請使用 --region
和 --endpoint-url
參數。
範例:使用端點 URL 列出儲存貯體中的物件
在下列範例中,將 DNS 端點 ID 的儲存貯體名稱
、us-east-1
區域 和 VPC 名稱取代my-bucket
為您自己的資訊。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 端點 ID 取代us-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 端點 ID 取代us-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 端點 ID 取代us-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範例
若要在使用 S3API 時透過 S3 介面端點存取 S3 儲存貯體、S3 存取點或 Amazon S3 Control AWS SDKs 操作,請將您的 SDKs 更新至最新版本。然後將用戶端設定為使用端點 URL,透過 S3 介面端點存取儲存貯體、存取點或 Amazon S3 Control API 操作。
更新內部部署 DNS 組態
使用端點特定的 DNS 名稱來存取 Amazon S3 的介面端點時,您不需要更新內部部署 DNS 解析程式。您可以從公有 Amazon S3 DNS 網域使用介面端點的私有 IP 地址解析端點特定的 DNS 名稱。
使用介面端點存取 Amazon S3,而不需要 VPC 中的閘道或網際網路閘道
VPC 中的介面端點可以透過 Amazon 網路將 VPC 內應用程式和內部部署應用程式路由至 Amazon S3,如下圖所示。 Amazon S3
此圖展示了以下要點:
-
您的內部部署網路會使用 AWS Direct Connect 或 AWS VPN 連線到 VPC A。
-
您的內部部署和 VPC A 應用程式會使用端點特定的 DNS 名稱,透過 Amazon S3 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,而閘道端點不會計費。然後,只有內部部署應用程式會使用介面端點來存取 Amazon S3。若要以這種方式存取 Amazon S3,您必須更新內部部署應用程式,才能使用 Amazon S3 的端點特定 DNS 名稱。
此圖展示了以下要點:
-
內部部署應用程式使用端點特定的 DNS 名稱,透過 VPC AWS Direct Connect (或 AWS VPN) 將資料從介面端點 AWS PrivateLink 移至 AWS Amazon S3。
-
使用預設的區域 Amazon S3 名稱,VPC 內應用程式會將資料傳送至透過 AWS 網路連線至 Amazon S3 的閘道端點。
如需閘道端點的詳細資訊,請參閱 VPC 使用者指南中的閘道 Word 端點。 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 端點存取特定帳戶中的儲存貯體
您可以建立端點政策,以限制對特定 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 端點 存取特定儲存貯體 amzn-s3-demo-bucket2
。如果未使用指定的端點,政策會拒絕所有對儲存貯體的存取。vpce-1a2b3c4d
aws:sourceVpce
條件會指定端點,而且不需要 VPC 端點資源的 Amazon Resource Name (ARN),只需要端點 ID。若要使用此儲存貯體政策,請將
和 amzn-s3-demo-bucket2
取代為您的儲存貯體名稱與端點。vpce-1a2b3c4d
重要
-
套用下列 Amazon S3 儲存貯體政策以限制對特定 VPC 端點的存取時,您可以封鎖對儲存貯體的存取,而不打算這麼做。旨在專門限制儲存貯體存取來自 VPC 端點之連線的儲存貯體政策,可能會封鎖所有與儲存貯體的連線。如需有關如何修正此問題的資訊,請參閱我的儲存貯體政策的 VPC 或 VPC 端點 ID 錯誤。我該如何修復政策,讓我可以存取儲存貯體?(位於
AWS Support 知識中心)。 -
使用下列範例政策之前,請將 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 Connectivity Options 中的 Network-to-VPC 連線選項。 Amazon Virtual Private Cloud