删除 Amazon S3 上的文件 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

删除 Amazon S3 上的文件

本页介绍如何在 Amazon MWAA 环境的 Amazon S3 存储桶中进行版本控制,以及删除 DAG、plugins.ziprequirements.txt 文件的步骤。

先决条件

在完成本页上的步骤之前,您需要具备以下条件。

  • 权限 — Amazon 账户必须已获得管理员授权,访问适用于环境的 AmazonMWAAFullConsoleAccess 访问控制策略。此外,执行角色必须允许 Amazon MWAA 环境访问环境所使用的 Amazon 资源。

  • 访问权限-如果您需要访问公共存储库才能直接在 Web 服务器上安装依赖项,则必须将环境配置为具有公共网络 Web 服务器访问权限。有关更多信息,请参阅 Apache Airflow 访问模式

  • Amazon S3 配置 — 用于存储 DAG 的 Amazon S3 存储桶、在 plugins.zip 中的自定义插件和在 requirements.txt 中的 Python 依赖项必须配置为已阻止公共访问已启用版本控制

版本控制概览

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

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

工作原理

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

只有当 Amazon MWAA 使用自定义插件和 Python 依赖项为 Fargate 容器构建新的 Airflow 映像时,在环境更新之后,plugins.ziprequirements.txt 文件才会发生更改。如果您删除了 requirements.txtplugins.zip 文件的当前版本,然后在没有为已删除文件提供新版本的情况下更新环境,则更新将失败,并显示一条错误消息,例如“无法读取 {file} 文件的 {version} 版本”。

删除 Amazon S3 上的 DAG

DAG 文件(.py)没有版本控制,可以直接在 Amazon S3 控制台上删除。以下步骤描述如何删除 Amazon S3 桶中的 DAG。

要删除 DAG,请执行以下操作
  1. 在 Amazon MWAA 控制台上打开环境页面

  2. 选择环境。

  3. S3 中的 DAG 代码窗格中选择 S3 存储桶链接,在 Amazon S3 控制台上打开存储桶。

  4. 选择 dags 文件夹。

  5. 选择 DAG,点击删除

  6. 删除对象?下 ,键入 delete

  7. 请选择 Delete objects(删除对象)。

注意

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

从环境中移除 “当前”的 requirements.txt 或 plugins.zip

目前,没有办法在添加 plugins.zip 或 requirements.txt 后将其从环境中删除,但我们正在努力解决这个问题。在此期间,变通方法是分别指向空文本或 zip 文件。

删除“非当前”(之前)的 requirements.txt 或 plugins.zip 版本

在 Amazon MWAA 上,Amazon S3 存储桶中的 requirements.txtplugins.zip 文件受到版本控制。如果您想完全删除 Amazon S3 存储桶中的这些文件,则必须检索对象(例如 plugins.zip)的当前版本(121212),删除该版本,然后移除文件(所有)版本的删除标记

您也可以在 Amazon S3 控制台上删除所有“非当前”(先前)文件版本;但是,您仍需要使用以下选项之一删除删除标记

使用生命周期删除所有“非当前”(先前)版本并自动删除标记

您可以为 Amazon S3 存储桶配置生命周期策略,以便在一定天数后删除 Amazon S3 存储桶中的 plugins.zip 和 requirements.txt 文件的所有“非当前”(先前)版本,或者移除过期对象的删除标记。

  1. 在 Amazon MWAA 控制台上打开环境页面

  2. 选择环境。

  3. Amazon S3 的 DAG 代码下,选择 Amazon S3 存储桶。

  4. 选择创建生命周期规则

删除 requirements.txt 所有“非当前”版本并自动删除标记的生命周期策略示例

以下示例说明如何创建生命周期规则,该规则将在三十天后永久删除 requirements.txt 文件的所有“非当前”版本及其删除标记。

  1. 在 Amazon MWAA 控制台上打开环境页面

  2. 选择环境。

  3. Amazon S3 的 DAG 代码下,选择 Amazon S3 存储桶。

  4. 选择创建生命周期规则

  5. 生命周期规则名称中,键入 Delete previous requirements.txt versions and delete markers after thirty days

  6. 前缀中,选择要求

  7. 生命周期规则操作中,选择永久删除对象的所有先前版本删除过期的删除标记或未完成的分段上传

  8. 对象变为先前版本后的天数中,键入 30

  9. 过期对象删除标记中,选择删除过期对象删除标记,对象将在 30 天后永久删除

接下来做什么?

  • 要详细了解 Amazon S3 删除标记,请参阅管理删除标记

  • 要了解有关 Amazon S3 生命周期的更多信息,请参阅过期对象