

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

# 刪除 Amazon S3 上的檔案
<a name="working-dags-delete"></a>

此頁面說明版本控制如何在 Amazon Managed Workflows for Apache Airflow 環境的 Amazon S3 儲存貯體中運作，以及刪除 DAG`plugins.zip`、 或 `requirements.txt` 檔案的步驟。

**Contents**
+ [先決條件](#working-dags-delete-prereqs)
+ [版本控制概觀](#working-dags-delete-overview)
+ [運作方式](#working-dags-delete-how)
+ [在 Amazon S3 上刪除 DAG](#working-dags-s3-dag-delete)
+ [從環境移除 "current" requirements.txt 或 plugins.zip](#working-dags-s3-delete-version-c)
+ [刪除「非目前」（先前的） requirements.txt 或 plugins.zip 版本](#working-dags-s3-delete-version-p)
+ [使用生命週期自動刪除 "non-current" （先前的） 版本和刪除標記](#working-dags-s3-delete-lifecycle)
+ [自動刪除 requirements.txt "non-current" 版本和刪除標記的生命週期政策範例](#working-dags-s3-delete-lifecycle-ex)
+ [後續步驟？](#working-dags-s3-delete-next-up)

## 先決條件
<a name="working-dags-delete-prereqs"></a>

您將需要下列項目，才能完成此頁面上的步驟。
+ **許可** — 您的管理員 AWS 帳戶 必須已授予您環境的 [AmazonMWAAFullConsoleAccess](access-policies.md#console-full-access) 存取控制政策的存取權。此外，您的[執行角色](mwaa-create-role.md)必須允許 Amazon MWAA 環境，才能存取環境所使用的 AWS 資源。
+ **存取** — 如果您需要存取公有儲存庫，才能直接在 Web 伺服器上安裝相依性，您的環境必須設定**公有網路** Web 伺服器存取。如需詳細資訊，請參閱 [Apache Airflow 存取模式](configuring-networking.md)。
+ **Amazon S3 組態** — 用於在 中存放 DAGs、自訂外掛程式`plugins.zip`和 Python 相依性的 [Amazon S3 儲存貯](mwaa-s3-bucket.md)體`requirements.txt`必須設定為啟用*公開存取封鎖*和*版本控制*。

## 版本控制概觀
<a name="working-dags-delete-overview"></a>

Amazon S3 儲存貯`plugins.zip`體中的 `requirements.txt`和 已進行版本控制。為物件啟用 Amazon S3 儲存貯體版本控制，並從 Amazon S3 儲存貯體刪除成品 （例如 plugins.zip) 時，檔案不會完全刪除。每當在 Amazon S3 上刪除成品時，就會建立新的檔案複本，該檔案為 404 （找不到物件） 錯誤/0k 檔案，其中顯示 `I'm not here`。Amazon S3 將此稱為*刪除標記*。刪除標記是檔案的「null」版本，其金鑰名稱 （或金鑰） 和版本 ID 與任何其他物件相同。

建議您定期刪除檔案版本和刪除標記，以降低 Amazon S3 儲存貯體的儲存成本。若要完全刪除「非目前」（先前的） 檔案版本，您必須刪除檔案版本，然後刪除該版本的*刪除標記*。

## 運作方式
<a name="working-dags-delete-how"></a>

Amazon MWAA 每 30 秒在您的 Amazon S3 儲存貯體上執行一次同步操作。這會導致 Amazon S3 儲存貯體中的任何 DAG 刪除同步到 Fargate 容器的 Airflow 映像。

對於 `plugins.zip`和 `requirements.txt` 檔案，只有當 Amazon MWAA 使用自訂外掛程式和 Python 相依性建置 Fargate 容器的新 Airflow 映像時，才會在環境更新之後發生變更。如果您刪除任何 `requirements.txt`或 `plugins.zip` 檔案的*目前*版本，然後更新環境而不為已刪除的檔案提供新版本，則更新會失敗並顯示錯誤訊息，例如 `Unable to read version {version number} of file {file name}`。

## 在 Amazon S3 上刪除 DAG
<a name="working-dags-s3-dag-delete"></a>

DAG 檔案 (`.py`) 未進行版本控制，可直接在 Amazon S3 主控台上刪除。下列步驟說明如何刪除 Amazon S3 儲存貯體上的 DAG。

**刪除 DAG**

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 在 **S3 ** 窗格中的 **DAG 程式碼中選取 S3** 儲存貯體連結，以在主控台中開啟儲存貯體。

1. 選擇 `dags` 資料夾。

1. 選取 DAG、**刪除**。

1. 在**刪除物件？**下，輸入 `delete`。

1. 選擇 **Delete objects** (刪除物件)。

**注意**  
Apache Airflow 會保留歷史 DAG 執行。在 Apache Airflow 中執行 DAG 之後，無論檔案狀態為何，它都會保留在 Airflow DAGs清單中，直到您在 Apache Airflow 中刪除它為止。若要刪除 Apache Airflow 中的 DAG，請選擇**連結欄中的**紅色「刪除」按鈕。

## 從環境移除 "current" requirements.txt 或 plugins.zip
<a name="working-dags-s3-delete-version-c"></a>

目前，您無法在環境新增 plugins.zip 或 requirements.txt 之後將其移除，但我們正在處理此問題。在此期間，解決方法是分別指向空白文字或 zip 檔案。

## 刪除「非目前」（先前的） requirements.txt 或 plugins.zip 版本
<a name="working-dags-s3-delete-version-p"></a>

Amazon S3 儲存貯體中的 `requirements.txt`和 `plugins.zip` 檔案會在 Amazon MWAA 上進行版本控制。如果您想要完全刪除 Amazon S3 儲存貯體上的這些檔案，您必須擷取物件的目前版本 (121212) （例如 plugins.zip)、刪除版本，然後移除檔案版本的*刪除標記*。

您也可以在 Amazon S3 主控台中刪除「非目前」（先前的） 檔案版本；不過，您仍然需要使用下列其中一個選項刪除*刪除標記*。
+ 若要擷取物件版本，請參閱《*Amazon S3 指南》中的*[從已啟用版本控制的儲存貯體擷取物件版本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RetrievingObjectVersions.html)。
+ 若要刪除物件版本，請參閱《*Amazon S3 指南》中的*[從已啟用版本控制的儲存貯體刪除物件版本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html)。
+ 若要移除刪除標記，請參閱《*Amazon S3 指南》中的*[管理刪除標記](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManagingDelMarkers.html)。

## 使用生命週期自動刪除 "non-current" （先前的） 版本和刪除標記
<a name="working-dags-s3-delete-lifecycle"></a>

您可以設定 Amazon S3 儲存貯體的生命週期政策，在特定天數後刪除 Amazon S3 儲存貯體中的 Plugins.zip 和 requirements.txt 檔案的「非目前」版本，或移除過期物件的刪除標記。

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 在 **Amazon S3 中的 DAG 程式碼**下，選擇您的 Amazon S3 儲存貯體。

1. 選擇**建立生命週期規則**。

## 自動刪除 requirements.txt "non-current" 版本和刪除標記的生命週期政策範例
<a name="working-dags-s3-delete-lifecycle-ex"></a>

使用下列範例建立生命週期規則，該規則會在三十天後永久刪除 requirements.txt 檔案的「非最新版本」版本及其刪除標記。

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 在 **Amazon S3 中的 DAG 程式碼**下，選擇您的 Amazon S3 儲存貯體。

1. 選擇**建立生命週期規則**。

1. 在**生命週期規則名稱**中，輸入 `Delete previous requirements.txt versions and delete markers after thirty days`。

1. 在**字首**中，**要求**。

1. 在**生命週期規則動作**中，選擇**永久刪除舊版本的物件**，並**刪除過期的刪除標記或未完成的分段上傳**。

1. 在**物件成為先前版本的天數中**，輸入 `30`。

1. 在**過期物件刪除標記**中，選擇**刪除過期物件刪除標記，物件會在 30 天後永久刪除**。

## 後續步驟？
<a name="working-dags-s3-delete-next-up"></a>
+ 進一步了解管理刪除標記中的 Amazon S3 刪除標記。 [https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html)
+ 進一步了解[即將過期物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)中的 Amazon S3 生命週期。