

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

# 針對 Amazon S3 生命週期問題進行疑難排解
<a name="troubleshoot-lifecycle"></a>

以下資訊有助於針對 Amazon S3 生命週期規則的常見問題進行疑難排解。

**Topics**
+ [我在儲存貯體上執行了清單操作，並看到以為已逾期或由生命週期規則轉換的物件。](#troubleshoot-lifecycle-1)
+ [如何監控生命週期規則採取的動作？](#troubleshoot-lifecycle-2)
+ [即使在啟用版本控制的儲存貯體上設定生命週期規則之後，我的 S3 物件計數仍會增加。](#troubleshoot-lifecycle-3)
+ [如何使用生命週期規則清空 S3 儲存貯體？](#troubleshoot-lifecycle-4)
+ [將物件轉換為成本較低的儲存體類別之後，我的 Amazon S3 計費增加了。](#troubleshoot-lifecycle-5)
+ [我已更新儲存貯體政策，但我的 S3 物件仍被過期的生命週期規則刪除。](#troubleshoot-lifecycle-6)
+ [是否可以復原「S3 生命週期」規則使其過期的 S3 物件？](#troubleshoot-lifecycle-7)
+ [為什麼我的到期和轉換生命週期動作都沒有發生？](#troubleshoot-lifecycle-failures)
+ [如何從生命週期規則中排除字首？](#troubleshoot-lifecycle-8)
+ [如何在生命週期規則中包含多個字首？](#troubleshoot-lifecycle-9)

## 我在儲存貯體上執行了清單操作，並看到以為已逾期或由生命週期規則轉換的物件。
<a name="troubleshoot-lifecycle-1"></a>

S3 生命週期[物件轉換](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)和[物件逾期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)為非同步操作。因此，在物件符合過期或轉移資格的時間與其實際轉換或過期的時間之間，可能會有延遲。只要滿足生命週期規則，就會套用計費，即使動作尚未完成也是一樣。此行為的例外狀況為，如果您擁有轉換至 S3 Intelligent-Tiering 儲存類別的生命週期規則集。在此情況下，直到物件轉換至 S3 Intelligent-Tiering 儲存類別後，才會發生計費變更。如需計費中變更的詳細資訊，請參閱[在儲存貯體上設定生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

**注意**  
Amazon S3 不會將小於 128 KB 的物件從「S3 Standard」或「S3 Standard-IA」儲存體類別轉換為「S3 Intelligent-Tiering」、「S3 Standard-IA」或「S3 One Zone-IA」儲存體類別。

## 如何監控生命週期規則採取的動作？
<a name="troubleshoot-lifecycle-2"></a>

若要監控生命週期規則所採取的動作，您可以使用下列功能：
+ **S3 事件通知** - 您可以設定 [S3 事件通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html)，以便獲得任何 S3 生命週期過期或轉換事件的通知。
+ **S3 伺服器存取日誌** - 您可以啟用 S3 儲存貯體的伺服器存取日誌，以擷取 S3 生命週期動作，例如物件轉換到另一個儲存類別和物件過期。如需詳細資訊，請參閱[生命週期和記錄](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging)。

若要每天檢視生命週期動作導致的儲存體變更，建議您使用 [S3 Storage Lens 儀表板](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_basics_metrics_recommendations.html#storage_lens_basics_dashboards)，而不是使用 Amazon CloudWatch 指標。您可以在 Storage Lens 儀表板中檢視下列指標，這些指標會監控物件計數或大小：
+ **目前版本位元組**
+ **目前版本物件計數**
+ **非目前版本位元組**
+ **非目前版本物件計數**
+ **刪除標記物件計數**
+ **刪除標記儲存體位元組**
+ **未完成分段上傳位元組**
+ **未完成分段上傳物件計數**

## 即使在啟用版本控制的儲存貯體上設定生命週期規則之後，我的 S3 物件計數仍會增加。
<a name="troubleshoot-lifecycle-3"></a>

在[啟用版本控制的儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html#versioning-states)中的物件過期時，系統不會從儲存貯體中完全刪除該物件。相反地，建立[刪除標記](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)作為物件的最新版本。刪除標記仍會計為物件。因此，如果建立生命週期規則，僅使目前版本過期，則 S3 儲存貯體中的物件計數實際上會增加，而不是下降。

例如，假設 S3 儲存貯體已啟用 100 個物件的版本控制，而生命週期規則設定為使物件的目前版本在 7 天後過期。第七天之後，物件計數會增加到 200，因為除了 100 個原始物件 (現在為非目前版本) 之外，還建立了 100 個刪除標記。如需啟用版本控制的儲存貯體之「S3 生命週期」組態規則動作的詳細資訊，請參閱[在儲存貯體上設定生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

若要永久移除物件，請新增其他生命週期組態，以刪除先前版本的物件、過期的刪除標記，以及未完成的分段上傳。如需如何建立新生命週期規則的指示，請參閱[在儲存貯體上設定生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

**注意**  
Amazon S3 會將物件的轉換或過期日期四捨五入到隔天的午夜 UTC。  
在評估適用於物件的生命週期動作時，Amazon S3 會使用 UTC 格式的物件建立時間。例如，請考慮具有生命週期規則的未啟用版本控制儲存貯體，該生命週期規則設定為在一天後使物件過期。假設物件是在太平洋夏令時間 (PDT) 1 月 1 日 17:05 建立，其對應至 UTC 1 月 2 日 00:05。該物件會在 UTC 1 月 3 日 00:05 時變成存在一天的物件，當 S3 生命週期在 UTC 1 月 4 日 00:00 評估物件時，該物件就符合過期資格。  
因為 Amazon S3 生命週期動作會以非同步方式發生，所以生命週期規則中指定的日期與物件的實際實體轉換之間，可能會存在一些延遲。如需詳細資訊，請參閱[轉換或過期延遲](how-to-set-lifecycle-configuration-intro.md#lifecycle-action-delay)。  
如需詳細資訊，請參閱[生命週期規則：依據物件的存在時間](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-number-of-days)。
對於受「物件鎖定」保護的 S3 物件，不會永久刪除目前的版本。相反地，會將刪除標記新增至物件，使其成為非目前版本。然後會保留非目前版本，且永久不會過期。

## 如何使用生命週期規則清空 S3 儲存貯體？
<a name="troubleshoot-lifecycle-4"></a>

S3 生命週期規則是[清空 S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)與其數百萬個物件的有效工具。若要從 S3 儲存貯體刪除大量物件，請務必使用以下兩對生命週期規則：
+ **使物件的目前版本到期**和**永久刪除物件的先前版本**
+ **刪除過期的刪除標記**和**刪除未完成的分段上傳**

如需如何建立生命週期組態規則的步驟，請參閱[在儲存貯體上設定生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

**注意**  
對於受「物件鎖定」保護的 S3 物件，不會永久刪除目前的版本。相反地，會將刪除標記新增至物件，使其成為非目前版本。然後會保留非目前版本，且永久不會過期。

## 將物件轉換為成本較低的儲存體類別之後，我的 Amazon S3 計費增加了。
<a name="troubleshoot-lifecycle-5"></a>

有數個原因，在將物件轉換為成本較低的儲存體類別之後，您的帳單可能會增加：
+ 小型物件的 S3 Glacier 額外費用

  對於轉換為 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 的每個物件，總共有額外的 40 KB 與此儲存體更新相關聯。作為額外 40 KB 的一部分，8 KB 用來存放中繼資料和物件的名稱。此 8 KB 是根據「S3 標準」費率收費。剩餘的 32 KB 用於索引編製和相關中繼資料。此 32 KB 是根據 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 定價收費。

  因此，如果您要儲存許多小型物件，我們不建議使用生命週期轉換。相反地，若要降低任何額外費用，請將多個小型物件彙總為少量的大型物件，然後再將它們存放在 Amazon S3 中。如需成本考量的詳細資訊，請參閱[轉換為 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 儲存體類別 (物件封存)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#before-deciding-to-archive-objects)。
+ 最低儲存費用

  某些 S3 儲存體類別有最短儲存持續時間需求。在滿足最短持續時間之前，從這些類別中刪除、覆寫或轉換的物件，會被收取按比例分配的提前轉換或刪除費用。這些最短儲存持續時間需求如下：
  + S3 Standard-IA 和 S3 One Zone-IA - 30 天
  + S3 Glacier Flexible Retrieval 和 S3 Glacier Instant Retrieval - 90 天
  + S3 Glacier Deep Archive - 180 天

  如需這些需求的詳細資訊，請參閱[使用 S3 生命週期轉移物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)的*限制*一節。如需一般 S3 定價資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)和 [AWS 定價計算機](https://calculator.aws/#/addService/S3)。
+ 生命週期轉換成本

  每次透過生命週期規則將物件轉換為不同的儲存體類別時，Amazon S3 就會將該轉換計為一個轉換請求。這些轉換請求的成本不包括在這些儲存體類別的成本。如果打算轉換大量物件，建議在轉換為較低成本方案時將請求成本納入考慮。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 我已更新儲存貯體政策，但我的 S3 物件仍被過期的生命週期規則刪除。
<a name="troubleshoot-lifecycle-6"></a>

儲存貯體政策中的 `Deny` 陳述式不會防止生命週期規則中定義的物件過期。生命週期動作 (例如轉換或過期) 不會使用 S3 `DeleteObject` 操作。相反地，使用內部 S3 端點來執行「S3 生命週期」動作。(如需詳細資訊，請參閱[生命週期和記錄](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging)。) 

若要防止生命週期規則採取任何動作，您必須編輯、刪除或[停用規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex2)。

## 是否可以復原「S3 生命週期」規則使其過期的 S3 物件？
<a name="troubleshoot-lifecycle-7"></a>

若要復原由「S3 生命週期」使其過期的物件，唯一方法就是透過版本控制，而在物件符合過期資格之前，版本控制必須已就位。您無法復原生命週期規則所執行的過期操作。如果物件是由既定的「S3 生命週期」規則永久刪除，則無法復原這些物件。若要在儲存貯體上啟用版本控制，請參閱 [使用 S3 版本控制保留多個版本的物件](Versioning.md)。

如果您已將版本控制套用至儲存貯體，且物件的非目前版本仍保持完整不變，則可以[還原過期物件的先前版本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RestoringPreviousVersions.html)。如需「S3 生命週期」規則動作之行為和版本控制狀態的詳細資訊，請參閱[描述生命週期動作的元素](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#non-current-days-calculations)中的*生命週期動作和儲存貯體版本控制狀態*表格。

**注意**  
如果 S3 儲存貯體受 [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/s3-backups.html) 或 [S3 複寫](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)保護，您也可以使用這些功能來復原過期的物件。

## 為什麼我的到期和轉換生命週期動作都沒有發生？
<a name="troubleshoot-lifecycle-failures"></a>

對於已啟用或暫停版本控制的儲存貯體，Amazon S3 處理到期作業時會考慮以下因素：
+ 物件過期只適用於物件的目前版本 (其對非目前的物件版本沒有影響)。
+ 當有一或多個物件版本，且刪除標記為目前的版本時，Amazon S3 不會採取任何動作。
+ Amazon S3 不對已套用 S3 物件鎖定的非目前版本物件採取任何動作。
+ 對於具有 `PENDING`或 `FAILED`複寫狀態的物件，Amazon S3 不會對物件的目前或非目前版本採取任何動作。

生命週期儲存體方案轉換有下列限制：
+ 根據預設，小於 128 KB 的物件不會轉換為任何儲存類別。
+ 物件必須儲存至少 30 天，才能轉換為 S3 Standard-IA 或 S3 One Zone-IA。
+ 對於已啟用版本控制或暫停版本控制儲存貯體，無法轉換具有 `PENDING`或 `FAILED`複寫狀態的物件。

## 如何從生命週期規則中排除字首？
<a name="troubleshoot-lifecycle-8"></a>

S3 生命週期不支援排除規則中的字首。反之，您可以使用標籤來標記您想要包含在規則中的所有物件。如需在生命週期規則中使用標籤的詳細資訊，請參閱[在建立後一天內封存所有物件](lifecycle-configuration-examples.md#lifecycle-config-ex1)。

## 如何在生命週期規則中包含多個字首？
<a name="troubleshoot-lifecycle-9"></a>

S3 生命週期不支援在您的規則中包含多個字首。反之，您可以使用標籤來標記您想要包含在規則中的所有物件。如需在生命週期規則中使用標籤的詳細資訊，請參閱[在建立後一天內封存所有物件](lifecycle-configuration-examples.md#lifecycle-config-ex1)。

不過，如果您有一或多個字首以相同的字元開頭，您可以在篩選條件中指定沒有尾斜線 (`/`) 的部分字首，以在規則中包含這些字首。例如，假設您有這些字首：

```
sales1999/
sales2000/
sales2001/
```

若要在規則中包含所有三個字首，請在生命週期規則中指定 `<Prefix>sales</Prefix>`。