

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

# 故障診斷分佈問題
<a name="troubleshooting-distributions"></a>

使用此處的資訊協助診斷和修復使用 Amazon CloudFront 分佈來設定網站或應用程式時可能遇到的憑證錯誤、存取遭拒問題或其他常見問題。

**Topics**
+ [CloudFront 傳回 Access Denied 錯誤](#access-denied)
+ [當我嘗試新增替代網域名稱時，CloudFront 傳回 InvalidViewerCertificate 錯誤](#troubleshooting-distributions-certificates)
+ [當我嘗試新增 CNAME 時，CloudFront 會傳回 DNS 記錄設定不正確的錯誤](#troubleshoot-incorrectly-configured-DNS-record-error)
+ [我無法在我的分佈中檢視檔案](#troubleshooting-web-distribution)
+ [錯誤訊息：Certificate: <certificate-id> is being used by CloudFront](#troubleshooting-certificate-error)

## CloudFront 傳回 Access Denied 錯誤
<a name="access-denied"></a>

如果您使用 Amazon S3 儲存貯體做為 CloudFront 分佈的原始伺服器，您可能會在下列範例中看到存取遭拒 (403) 錯誤訊息。

**Contents**
+ [您從 Amazon S3 原始伺服器指定遺失的物件](#missing-object-in-s3-bucket)
+ [您的 Amazon S3 原始伺服器缺少 IAM 許可](#access-denied-origin-missing-iam-permissions)
+ [您使用的憑證無效或沒有足夠的許可](#access-denied-missing-iam-permissions)

### 您從 Amazon S3 原始伺服器指定遺失的物件
<a name="missing-object-in-s3-bucket"></a>

驗證您儲存貯體中請求的物件是否存在。物件名稱區分大小寫。輸入無效的物件名稱可能會傳回存取遭拒錯誤碼。

例如，如果您遵循 [CloudFront 教學課程](GettingStarted.SimpleDistribution.md)來建立基本分佈，您可以建立 Amazon S3 儲存貯體做為原始伺服器並上傳範例 `index.html` 檔案。

在 Web 瀏覽器中，如果您輸入 `https://d111111abcdef8.cloudfront.net/INDEX.HTML` 而不是 `https://d111111abcdef8.cloudfront.net/index.html`，您可能會看到類似訊息，因為 URL 路徑中的 `index.html` 檔案區分大小寫。

```
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>22Q367AHT7Y1ABCD</RequestId>
<HostId>
ABCDE/Vg+7PSNa/d/IfFQ8Fb92TGQ0KH0ZwG5iEKbc6+e06DdMS1ZW+ryB9GFRIVtS66rSSy6So=
</HostId>
</Error>
```

### 您的 Amazon S3 原始伺服器缺少 IAM 許可
<a name="access-denied-origin-missing-iam-permissions"></a>

確認您已選取正確的 Amazon S3 儲存貯體做為原始網域和名稱。原始伺服器 (Amazon S3) 必須具有正確的許可。

如果您未指定正確的許可，檢視器可能會出現 `AccessDenied` 訊息。

當您從 Amazon S3 分發內容，而且也使用 AWS Key Management Service (AWS KMS) 服務端加密 (SSE-KMS) 時，您需要為 KMS 金鑰和 Amazon S3 儲存貯體指定額外的 IAM 許可。您的 CloudFront 分佈需要這些許可才能使用 KMS 金鑰，用於加密原始伺服器 Amazon S3 儲存貯體。

Amazon S3 儲存貯體政策的組態允許 CloudFront 分佈擷取加密物件以進行內容交付。

**驗證您的 Amazon S3 儲存貯體和 KMS 金鑰許可**

1. 確認您使用的 KMS 金鑰與您的 Amazon S3 儲存貯體用於預設加密的金鑰相同。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[搭配 AWS KMS (SSE-KMS) 使用伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)。

1. 確認儲存貯體中的物件已使用相同的 KMS 金鑰加密。您可以從 Amazon S3 儲存貯體中選取任何物件，並檢查伺服器端加密設定以驗證 KMS 金鑰 ARN。

1. 編輯 Amazon S3 儲存貯體政策，以授予 CloudFront 從 Amazon S3 儲存貯體呼叫 `GetObject` API 操作的許可。如需使用原始存取控制的 Amazon S3 儲存貯體政策範例，請參閱 [授予 CloudFront 存取 S3 儲存貯體的許可](private-content-restricting-access-to-s3.md#oac-permission-to-access-s3)。

1. 編輯 KMS 金鑰政策，以授予 CloudFront 對 `Encrypt`、`Decrypt` 和 `GenerateDataKey*` 執行動作的許可。若要符合最低權限許可，請指定 `Condition` 元素，允許只有指定的 CloudFront 分佈可以執行列出的動作。您可以自訂現有政策 AWS KMS 的政策。如需 KMS 金鑰政策的範例政策，請參閱 [SSE-KMS](private-content-restricting-access-to-s3.md#oac-permissions-sse-kms)。

如果您使用的是原始存取身分 (OAI) 而非 OAC，Amazon S3 儲存貯體的許可會略有不同，因為您授與身分的許可，而不是 AWS 服務。如需詳細資訊，請參閱[授予原始存取身分的許可，以讀取 Amazon S3 儲存貯體中的檔案](private-content-restricting-access-to-s3.md#private-content-granting-permissions-to-oai)。

如果您仍然無法檢視分佈中的檔案，請參閱 [我無法在我的分佈中檢視檔案](#troubleshooting-web-distribution)。

### 您使用的憑證無效或沒有足夠的許可
<a name="access-denied-missing-iam-permissions"></a>

如果您使用不正確或過期的 AWS SCT 憑證 (存取金鑰和私密金鑰)，或 IAM 角色或使用者缺少在 CloudFront 資源上執行動作所需的許可，則可能會出現存取遭拒錯誤訊息。如需存取遭拒錯誤訊息的詳細資訊，請參閱《*IAM 使用者指南*》中的[對拒絕存取錯誤訊息進行疑難排解](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_access-denied.html)。

如需有關 IAM 如何與 CloudFront 搭配使用的詳細資訊，請參閱 [適用於 Amazon CloudFront 的 Identity and Access Management](security-iam.md)。

## 當我嘗試新增替代網域名稱時，CloudFront 傳回 InvalidViewerCertificate 錯誤
<a name="troubleshooting-distributions-certificates"></a>

若 CloudFront 在您嘗試新增替代網域名稱 (CNAME) 到分佈時傳回 `InvalidViewerCertificate` 錯誤，請檢閱以下資訊來協助針對問題進行故障診斷。此錯誤可指出必須解決以下其中一個問題，才能成功新增替代網域名稱。

以下錯誤會根據 CloudFront 檢查授權以新增替代網域名稱的順序列出。這可協助您根據 CloudFront 傳回的錯誤，針對問題進行故障診斷；您可以得知哪些驗證檢查已成功完成。

**沒有將憑證連接到您的分佈。**  
若要新增替代網域名稱 (CNAME)，您必須將信任、有效的憑證連接到您的分佈。請檢閱需求、取得足以滿足需求的有效憑證、將它連接到您的分佈，然後再試一次。如需詳細資訊，請參閱 [使用備用網域名稱的需求](CNAMEs.md#alternate-domain-names-requirements)。

**您已連接憑證的憑證鏈結中有太多憑證。**  
您在憑證鏈結中最多只能有五個憑證。請減少鏈結中的憑證數，然後再試一次。

**憑證鏈結中包含一或多個在目前日期無效的憑證。**  
您已新增憑證的憑證鏈結中有一或多個無效憑證，可能是因為憑證尚未有效或已過期。請檢查您憑證鏈結中憑證內的 **Not Valid Before** (生效日期) 和 **Not Valid After** (失效日期) 欄位，確保根據您所列出的日期，所有憑證都是有效的。

**您已連接的憑證沒有經過信任的憑證授權單位 (CA) 簽章。**  
您連接到 CloudFront 以驗證您替代網域名稱的憑證不能是自我簽章憑證。它必須經過信任 CA 的簽章。如需詳細資訊，請參閱 [使用備用網域名稱的需求](CNAMEs.md#alternate-domain-names-requirements)。

**您連接的憑證格式不正確**  
包含在憑證中的網域名稱和 IP 位址格式，以及憑證本身的格式必須遵循憑證的標準。

**發生 CloudFront 內部錯誤。**  
CloudFront 因內部問題遭到封鎖，無法進行憑證的驗證檢查。在此情況下，CloudFront 會傳回 HTTP 500 狀態碼，指出 CloudFront 連接憑證時發生內部問題。請等待幾分鐘，然後再次嘗試新增替代網域名稱和憑證。

**您已連接的憑證並未涵蓋您嘗試新增的替代網域名稱。**  
針對每個您新增的替代網域名稱，CloudFront 需要您連接來自信任憑證授權單位 (CA) 的有效 SSL/TLS 憑證，且該憑證必須涵蓋網域名稱，以驗證您已獲得授權使用它。請更新您的憑證，以包含能涵蓋您嘗試新增之 CNAME 的網域名稱。如需搭配萬用字元使用網域名稱的詳細資訊和範例，請參閱[使用備用網域名稱的需求](CNAMEs.md#alternate-domain-names-requirements)。

## 當我嘗試新增 CNAME 時，CloudFront 會傳回 DNS 記錄設定不正確的錯誤
<a name="troubleshoot-incorrectly-configured-DNS-record-error"></a>

當您有指向 CloudFront 分佈的現有萬用字元 DNS 項目時，如果您嘗試新增具有更特定名稱的新 CNAME，可能會遇到下列錯誤：

```
One or more aliases specified for the distribution includes an incorrectly configured DNS record that points to another CloudFront distribution. You must update the DNS record to correct the problem. 
```

發生此錯誤是因為 CloudFront 針對 CNAME 查詢 DNS，且萬用字元 DNS 項目解析為另一個分佈。

若要解決此問題，請先建立另一個分佈，然後建立指向新分佈的 DNS 項目。最後，新增更具體的 CNAME。如需如何新增 CNAME 的詳細資訊，請參閱 [新增替代網域名稱](CreatingCNAME.md)。

## 我無法在我的分佈中檢視檔案
<a name="troubleshooting-web-distribution"></a>

如果無法查看 CloudFront 分佈裡的檔案，請參閱下列一些常見解決方案的主題。

### 您是否同時註冊 CloudFront 和 Amazon S3？
<a name="Troubleshooting.SigningUp"></a>

若要將 Amazon CloudFront 與 Amazon S3 原始伺服器搭配使用，您必須同時註冊 CloudFront 和 Amazon S3。如需註冊 CloudFront 和 Amazon S3 的詳細資訊，請參閱 [設定您的 AWS 帳戶](setting-up-cloudfront.md)。

### Amazon S3 儲存貯體與物件許可是否設定正確？
<a name="Troubleshooting.Permissions"></a>

如果使用的是有 Amazon S3 原始伺服器的 CloudFront，則內容的原始版本會存放在 S3 儲存貯體。若要將內容提供給檢視器，建議您使用 CloudFront Origin Access Control (OAC) 來保護 Amazon S3 儲存貯體存取。這表示您的 S3 儲存貯體只能透過 CloudFront 存取。OAC 會透過 CloudFront 控制檢視器存取和安全交付。如需 OAC 的詳細資訊，請參閱 [限制對 Amazon S3 原始伺服器的存取](private-content-restricting-access-to-s3.md)。

如需管理儲存貯體存取的詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[封鎖對 Amazon S3 儲存體的公開存取權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)。

物件屬性與儲存貯體屬性無關。您必須明確授予 Amazon S3 儲存貯體中每個物件的權限。物件不會從儲存貯體繼承屬性，必須獨立於儲存貯體設定物件屬性。

### 替代網域名稱 (CNAME) 是否正確設定？
<a name="Troubleshooting.CNAME"></a>

如果網域名稱已有現有的 CNAME 記錄，請更新該記錄或將其替換為指向分佈網域名稱的新記錄。

此外，請確保 CNAME 記錄指向分佈的網域名稱，而不是 Amazon S3 儲存貯體。可確認 DNS 系統中的 CNAME 記錄指向分佈的網域名稱。若要執行此作業，請使用像 **dig** 這樣的 DNS 工具。

以下範例顯示了一個名為`images.example.com` 的網域名稱的 dig 請求和回應的相關部分。在 `ANSWER SECTION`，查看包含 `CNAME` 的列。如果 CNAME 右側的值為 CloudFront 分佈的網域名稱，則網域名稱的 CNAME 記錄設定正確。如果是 Amazon S3 原始伺服器儲存貯體或某些其他網域名稱，則 CNAME 記錄設定便不正確。

```
 1. [prompt]> dig images.example.com
 2. 
 3. ; <<> DiG 9.3.3rc2 <<> images.example.com
 4. ;; global options:	printcmd
 5. ;; Got answer:
 6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917
 7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0
 8. ;; QUESTION SECTION:
 9. ;images.example.com.		 IN		A
10. ;; ANSWER SECTION:
11. images.example.com. 10800 IN	CNAME	d111111abcdef8.cloudfront.net.
12. ...
13. ...
```

如需 CNAME 的詳細資訊，請參閱[透過新增備用網域名稱 (CNAME) 使用自訂 URL](CNAMEs.md)。

### 是否參考了適用於 CloudFront 分佈的正確 URL？
<a name="Troubleshooting.URL"></a>

確保參照的 URL 使用 CloudFront 分佈的網域名稱 (或 CNAME)，而不是 Amazon S3 儲存貯體或自訂原始伺服器。

### 是否需要協助故障診斷自訂原始伺服器？
<a name="Troubleshooting.CustomOrigin"></a>

如果您需要 AWS 協助您對自訂原始伺服器進行故障診斷，我們可能需要檢查請求中的`X-Amz-Cf-Id`標頭項目。如果尚未記錄這些項目，可能要考慮未來的記錄。如需詳細資訊，請參閱 [使用 Amazon EC2 (或其他自訂原始伺服器)](DownloadDistS3AndCustomOrigins.md#concept_CustomOrigin)。如需進一步協助，請參閱 [AWS 支援中心](https://console.aws.amazon.com/support/home?#/)。

## 錯誤訊息：Certificate: <certificate-id> is being used by CloudFront
<a name="troubleshooting-certificate-error"></a>

**問題：**嘗試從 IAM 憑證存放區刪除 SSL/TLS 憑證，您會取得訊息「Certificate: <certificate-id> is being used by CloudFront.」。

**解決方案：**每個 CloudFront 分佈皆必須與預設 CloudFront 憑證或自訂 SSL/TLS 憑證相關聯。在刪除 SSL/TLS 憑證之前，您必須輪換憑證 (將目前的自訂 SSL/TLS 憑證替換成另一個自訂 SSL/TLS 憑證)，或從使用自訂 SSL/TLS 憑證還原為使用預設 CloudFront 憑證。若要進行修復，請完成以下其中一個程序中的步驟：
+ [輪換 SSL/TLS 憑證](cnames-and-https-rotate-certificates.md)
+ [從自訂 SSL/TLS 憑證還原到預設 CloudFront 憑證](cnames-and-https-revert-to-cf-certificate.md)