

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 删除 Amazon S3 上的文件
<a name="working-dags-delete"></a>

本页介绍如何在 Amazon MWAA 环境的 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)
+ [从环境中移除 “当前”的 requirements.txt 或 plugins.zip](#working-dags-s3-delete-version-c)
+ [删除“非当前”（之前）的 requirements.txt 或 plugins.zip 版本](#working-dags-s3-delete-version-p)
+ [使用生命周期删除所有“非当前”（先前）版本并自动删除标记](#working-dags-s3-delete-lifecycle)
+ [删除 requirements.txt 所有“非当前”版本并自动删除标记的生命周期策略示例](#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 配置** — 用于存储 DAG 的 [Amazon S3 存储桶](mwaa-s3-bucket.md)、在 `plugins.zip` 中的自定义插件和在 `requirements.txt` 中的 Python 依赖项必须配置为*已阻止公共访问*和*已启用版本控制*。

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

您 Amazon S3 存储桶中的 `plugins.zip` 和 `requirements.txt` 已进行版本控制。当对象启用 Amazon S3 存储桶版本控制并且从 Amazon S3 存储桶中删除构件（例如 plugins.zip）时，该文件不会被完全删除。每当在 Amazon S3 上删除构件时，都会创建该文件的新副本，该副本是 404（未找到对象）错误/“`I'm not here`”的 0k 文件。Amazon S3 称此为*删除标记*。与任何其他对象一样，删除标记是带有键名（或键）和版本 ID 的“空”文本。

我们建议定期删除文件版本并删除标记，以降低 Amazon S3 存储桶的存储成本。要完全删除“非当前”（以前的）文件版本，必须删除（这些）文件的所有版本，然后删除该版本的*删除标记*。

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

Amazon MWAA 每三十秒钟对 Amazon S3 存储桶运行一次同步操作。这会导致 Amazon S3 存储桶中删除的任何 DAG 同步到 Fargate 容器的 Airflow 镜像。

只有当 Amazon MWAA 使用自定义插件和 Python 依赖项为 Fargate 容器构建新的 Airflow 映像时，在环境更新之后，`plugins.zip` 和 `requirements.txt` 文件才会发生更改。如果您删除了 `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. 选择**删除对象**。

**注意**  
Apache Airflow 保留了历史上的 DAG 运行。在 Apache Airflow 中运行 DAG 后，无论文件状态如何，它都会保留在 Apache Airflow 列表中，直到您在 Apache Airflow 中将其删除。要删除 Apache Airflow 中的 DAG，请选择**链接**列中的红色“删除”按钮。

## 从环境中移除 “当前”的 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 MWAA 上，Amazon S3 存储桶中的 `requirements.txt` 和 `plugins.zip` 文件受到版本控制。如果您想完全删除 Amazon S3 存储桶中的这些文件，则必须检索对象（例如 plugins.zip）的当前版本 (121212)，删除该版本，然后移除文件版本的*删除标记*。

您也可以在 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)。

## 使用生命周期删除所有“非当前”（先前）版本并自动删除标记
<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 所有“非当前”版本并自动删除标记的生命周期策略示例
<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)。
+ 要了解有关 Amazon S3 生命周期的更多信息，请参阅[过期对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)。