

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

# 設定網站存取許可
<a name="WebsiteAccessPermissionsReqd"></a>

當您將儲存貯體作為靜態網站時，如果您希望您的網站是公開的，則可以授予公開讀取權限。為使得儲存貯體能為公眾讀取，您必須停用儲存貯體的封鎖公開存取設定，並編寫授予公開存取權限的儲存貯體政策。如果您的儲存貯體包含不屬於儲存貯體擁有者的物件，可能也需要新增物件存取控制清單 (ACL)，以授予所有人這些物件的讀取存取權。

如果不想停用儲存貯體的封鎖公開存取設定，但仍希望網站公開，則可以建立 Amazon CloudFront 分發設定來為靜態網站提供服務。如需詳細資訊，請參閱《Amazon Route 53 開發人員指南》**中的 [使用 Amazon CloudFront 加速您的網站](website-hosting-cloudfront-walkthrough.md) 或[使用 Amazon CloudFront 分發來為靜態網站提供服務](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started-cloudfront-overview.html)。

**注意**  
在網站端點上，若使用者請求的物件不存在，Amazon S3 會傳回 HTTP 回應碼 `404 (Not Found)`。若物件存在，但您未授予其讀取許可，網站端點會傳回 HTTP 回應碼 `403 (Access Denied)`。使用者可以使用回應碼推斷特定物件是否存。若不希望有此行為，請勿啟用儲存貯體的網站支援。

**Topics**
+ [步驟 1：編輯 S3 封鎖公有存取設定](#block-public-access-static-site)
+ [步驟 2：新增儲存貯體政策](#bucket-policy-static-site)
+ [物件存取控制清單](#object-acl)

## 步驟 1：編輯 S3 封鎖公有存取設定
<a name="block-public-access-static-site"></a>

若要將現有的儲存貯體配置為具有公有存取權的靜態網站，您必須編輯該儲存貯體的封鎖公有存取配置。您可能還必須編輯帳戶層級的「封鎖公開存取」設定。Amazon S3 會套用儲存貯體層級和帳戶層級「封鎖公開存取」設定中限制性最高的組合。

例如，如果允許儲存貯體的公有存取，但封鎖帳戶層級的所有公有存取，則 Amazon S3 會繼續封鎖對該儲存貯體的公有存取。如果是這種情況，您就必須編輯自己的儲存貯體層級和帳戶層級封鎖公有存取設定。如需詳細資訊，請參閱「[封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)」。

根據預設，Amazon S3 會封鎖對帳戶和儲存貯體的公開存取。如想要使用儲存貯體託管靜態網站，您可使用這些步驟編輯封鎖公有存取設定：

**警告**  
完成這些步驟之前，請檢閱[封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)以確保您了解並接受允許公開存取所涉及的風險。當您關閉封鎖公開存取設定以公開儲存貯體時，網際網路上的任何人都可以存取您的儲存貯體。我們建議您封鎖對儲存貯體的所有公用存取權。

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 選擇已設定為靜態網站的儲存貯體名稱。

1. 選擇 **Permissions** (許可)。

1. 在 **Block public access (bucket settings) (封鎖公開存取 (儲存貯體設定))** (封鎖公開存取 (儲存貯體設定)) 下，選擇 **Edit** (編輯)。

1. 清除 **Block *all* public access** (封鎖所有公開存取)，然後選擇 **Save changes** (儲存變更)。  
![Amazon S3 主控台，顯示封鎖公開存取儲存貯體設定。](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 會關閉儲存貯體的封鎖公開存取設定。若要建立公有靜態網站，在新增儲存貯體原則之前，可能還需要針對您的帳戶[編輯封鎖公開存取設定](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html)。如果目前已開啟帳戶的封鎖公開存取設定，您會在**封鎖公開存取 (儲存貯體設定)** 下看到附註。

## 步驟 2：新增儲存貯體政策
<a name="bucket-policy-static-site"></a>

若要讓儲存貯體中的物體能為公眾讀取，您必須編寫儲存貯體政策，授予所有人 `s3:GetObject` 許可。

編輯 S3 封鎖公用存取設定之後，您可以新增儲存貯體政策，以授予儲存貯體的公用讀取權限。當您授予公有讀取權限時，網際網路上的任何人都可以存取您的儲存貯體。

**重要**  
以下政策僅為範例，允許完整存取您儲存貯體的內容。繼續執行此步驟之前，請檢閱[如何保護 Amazon S3 儲存貯體中的檔案？](https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/)，以確保您瞭解 S3 儲存貯體中檔案保護的最佳實務，以及授予公開存取權所涉及的風險。

1. 在 **Buckets**(儲存貯體) 下方，選擇儲存貯體的名稱。

1. 選擇 **Permissions** (許可)。

1. 在 **Bucket Policy** (儲存貯體政策) 下方，選擇 **Edit** (編輯)。

1. 若要授予您網站的公開讀取存取權，請複製以下儲存貯體政策，並將它貼上至 **Bucket policy editor (儲存貯體政策編輯器)**。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PublicReadGetObject",
               "Effect": "Allow",
               "Principal": "*",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::{{Bucket-Name}}/*"
               ]
           }
       ]
   }
   ```

1. 將 `Resource` 更新為您的儲存貯體名稱。

   在上述範例儲存貯體政策中，{{Bucket-Name}} 是儲存貯體名稱的預留位置。若要使用此儲存貯體策略與您自己的儲存貯體搭配，您必須更新此名稱以符合您的儲存貯體名稱。

1. 選擇 **Save changes** (儲存變更)。

   顯示的訊息指出已成功新增儲存貯體原則。

   如果您看到指出 `Policy has invalid resource` 的錯誤，請確認儲存貯體政策中的儲存貯體名稱與您的儲存貯體名稱相符。如需有關新增儲存貯體原則的資訊，請參閱[如何新增 S3 儲存貯體原則？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)

   如果您收到錯誤訊息且無法儲存貯體原則，請檢查您的帳戶和儲存貯體的封鎖公開存取設定，以確認您允許公開存取儲存貯體。

## 物件存取控制清單
<a name="object-acl"></a>

您可以使用儲存貯體政策，授予您物件的公有讀取許可。但是，儲存貯體政策僅適用於儲存貯體擁有者所擁有的物件。若您的儲存貯體包含不屬於儲存貯體擁有者的物件，建議儲存貯體擁有者使用物件存取控制清單 (ACL) 授予這些物件的公有 READ 許可。

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，您可以用來同時控制上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL。根據預設，物件擁有權設定為「儲存貯體擁有者強制執行」設定，而且所有 ACL 都會停用。停用 ACL 時，儲存貯體擁有者會擁有儲存貯體中的所有物件，並使用存取管理政策專門管理對這些物件的存取。

 Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保持停用狀態，除非是在必須個別控制每個物件存取的情況。停用 ACL 後，您可以使用政策來控制對儲存貯體中所有物件的存取，無論是誰將物件上傳到您的儲存貯體。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

**重要**  
如果您的一般用途儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定，則您必須使用政策將存取權授予一般用途儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下，請求設定存取控制清單 (ACL) 或更新 ACL 失敗，並傳回 `AccessControlListNotSupported` 錯誤碼。仍支援讀取 ACL 的請求。

若使用 ACL 將物件設為可供大眾讀取，請將 READ 許可授予 `AllUsers` 群組，如下列授予元素所示。將此授予元素新增到物件 ACL。如需如何管理 ACL 的資訊，請參閱「[存取控制清單 (ACL) 概觀](acl-overview.md)」。

```
1. <Grant>
2.   <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.           xsi:type="Group">
4.     <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
5.   </Grantee>
6.   <Permission>READ</Permission>
7. </Grant>
```