本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定網站存取許可
當您將儲存貯體作為靜態網站時,如果您希望您的網站是公開的,則可以授予公開讀取權限。為使得儲存貯體能為公眾讀取,您必須停用儲存貯體的封鎖公開存取設定,並編寫授予公開存取權限的儲存貯體政策。如果您的儲存貯體包含不屬於儲存貯體擁有者的物件,可能也需要新增物件存取控制清單 (ACL),以授予所有人這些物件的讀取存取權。
如果您不想停用儲存貯體的封鎖公開存取設定,但仍希望網站公開,您可以建立 Amazon CloudFront 分發來為您的靜態網站提供服務。如需詳細資訊,請參閱 Amazon R oute 53 開發人員指南中的加快您的網站與 Amazon CloudFront或使用 Amazon CloudFront 分發服務靜態網站。
注意
在網站端點上,若使用者請求的物件不存在,Amazon S3 會傳回 HTTP 回應碼 404 (Not Found)
。若物件存在,但您未授予其讀取許可,網站端點會傳回 HTTP 回應碼 403 (Access Denied)
。使用者可以使用回應碼推斷特定物件是否存。若不希望有此行為,請勿啟用儲存貯體的網站支援。
步驟 1:編輯 S3 封鎖公有存取設定
若要將現有的儲存貯體配置為具有公有存取權的靜態網站,您必須編輯該儲存貯體的封鎖公有存取配置。您可能還必須編輯帳戶層級的「封鎖公開存取」設定。Amazon S3 會套用儲存貯體層級和帳戶層級「封鎖公開存取」設定中限制性最高的組合。
例如,如果允許儲存貯體的公有存取,但封鎖帳戶層級的所有公有存取,則 Amazon S3 會繼續封鎖對該儲存貯體的公有存取。如果是這種情況,您就必須編輯自己的儲存貯體層級和帳戶層級封鎖公有存取設定。如需詳細資訊,請參閱「封鎖對 Amazon S3 儲存體的公開存取權」。
根據預設,Amazon S3 會封鎖對帳戶和儲存貯體的公開存取。如想要使用儲存貯體託管靜態網站,您可使用這些步驟編輯封鎖公有存取設定:
警告
在完成此步驟之前,請檢閱 封鎖對 Amazon S3 儲存體的公開存取權 以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時,網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。
-
開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
選擇已設定為靜態網站的儲存貯體名稱。
-
選擇 Permissions (許可)。
-
在 Block public access (bucket settings) (封鎖公開存取 (儲存貯體設定)) (封鎖公開存取 (儲存貯體設定)) 下,選擇 Edit (編輯)。
-
清除 Block all public access (封鎖所有公開存取),然後選擇 Save changes (儲存變更)。
警告
在完成此步驟之前,請檢閱 封鎖對 Amazon S3 儲存體的公開存取權 以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時,網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。
Amazon S3 會關閉儲存貯體的封鎖公開存取設定。若要建立公開的靜態網站,在新增儲存貯體原則之前,可能還需要針對您的帳戶編輯封鎖公開存取設定。如果帳戶的封鎖公開存取設定目前已開啟,您在 封鎖公開存取 (儲存貯體設定) 下會看到附註。
步驟 2:新增儲存貯體政策
若要讓儲存貯體中的物體能為公眾讀取,您必須編寫儲存貯體政策,授予所有人 s3:GetObject
許可。
編輯 S3 封鎖公用存取設定之後,您可以新增儲存貯體政策,以授予儲存貯體的公用讀取權限。當您授予公有讀取權限時,網際網路上的任何人都可以存取您的儲存貯體。
重要
以下政策僅為範例,允許完整存取您儲存貯體的內容。繼續執行此步驟之前,請檢閱如何保護 Amazon S3 儲存貯體中的檔案?
-
在 Buckets(儲存貯體) 下方,選擇儲存貯體的名稱。
-
選擇 Permissions (許可)。
-
在 Bucket Policy (儲存貯體政策) 下方,選擇 Edit (編輯)。
-
若要授予您網站的公開讀取存取權,請複製以下儲存貯體政策,並將它貼上至 Bucket policy editor (儲存貯體政策編輯器)。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
Bucket-Name
/*" ] } ] } -
將
Resource
更新為您的儲存貯體名稱。在上述範例儲存貯體政策中,
Bucket-Name
是儲存貯體名稱的預留位置。若要使用此儲存貯體策略與您自己的儲存貯體搭配,您必須更新此名稱以符合您的儲存貯體名稱。 -
選擇 Save changes (儲存變更)。
顯示的訊息指出已成功新增儲存貯體原則。
如果您看到指出
Policy has invalid resource
的錯誤,請確認儲存貯體政策中的儲存貯體名稱與您的儲存貯體名稱相符。如需有關新增儲存貯體原則的資訊,請參閱如何新增 S3 儲存貯體原則?如果您收到錯誤訊息且無法儲存貯體原則,請檢查您的帳戶和儲存貯體的封鎖公開存取設定,以確認您允許公開存取儲存貯體。
物件存取控制清單
您可以使用儲存貯體政策,授予您物件的公有讀取許可。但是,儲存貯體政策僅適用於儲存貯體擁有者所擁有的物件。若您的儲存貯體包含不屬於儲存貯體擁有者的物件,建議儲存貯體擁有者使用物件存取控制清單 (ACL) 授予這些物件的公有 READ 許可。
S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,您可以用來同時控制上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL。根據預設,物件擁有權設定為「儲存貯體擁有者強制執行」設定,而且所有 ACL 都會停用。停用 ACL 時,儲存貯體擁有者會擁有儲存貯體中的所有物件,並使用存取管理政策專門管理對這些物件的存取。
Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保持停用狀態,除非在異常情況下必須個別控制每個物件的存取。停用 ACL 後,您可以使用政策來控制對儲存貯體中所有物件的存取,無論是誰將物件上傳到您的儲存貯體。如需詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL。
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
若使用 ACL 將物件設為可供大眾讀取,請將 READ 許可授予 AllUsers
群組,如下列授予元素所示。將此授予元素新增到物件 ACL。如需如何管理 ACL 的資訊,請參閱「存取控制清單 (ACL) 概觀」。
<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant>