Amazon S3 でファイルの削除
このページでは、Amazon Managed Workflows for Apache Airflow 環境の Amazon S3 バケットでのバージョニングの仕組みと、DAG、plugins.zip または requirements.txt ファイルを削除する手順について説明します。
目次
前提条件
このページのステップを完了するには、以下のものが必要です。
-
アクセス許可 — AWS アカウント には、管理者から、ご使用の環境の AmazonMWAAFullConsoleAccess アクセスコントロールポリシーへのアクセス権限が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリソースへのアクセスを 実行ロール で許可されている必要があります。
-
アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワーク のウェブサーバーアクセスが環境に設定されている必要があります。詳細については、Apache Airflow のアクセスモード を参照してください。
-
Amazon S3 設定 —
plugins.zipで DAG、カスタムプラグイン、およびrequirements.txtで Python の依存関係を保存するために使用される Amazon S3 バケット は、Public Access Blocked と Versioning Enabled で構成する必要があります。
バージョン管理の概要
Amazon S3 バケット内の requirements.txt および plugins.zip はバージョニングされています。オブジェクトの Amazon S3 バケットバージョニングが有効になっていて、アーティファクト (plugins.zip など) が Amazon S3 バケットから削除されても、ファイルは完全には削除されません。Amazon S3 でアーティファクトが削除されるたびに、I'm not here という404 (オブジェクトが見つかりません) エラー/0k ファイルのファイルの新しいコピーが作成されます。Amazon S3 では、これ 削除マーカー と呼んでいます。削除マーカーは、他のオブジェクトと同じように、キー名 (またはキー) とバージョン ID を持つファイルの「ヌル」バージョンです。
Amazon S3 バケットのストレージコストを削減するために、ファイルバージョンと削除マーカーを定期的に削除することをお勧めします。「最新でない」(以前の) ファイルバージョンを完全に削除するには、ファイルのバージョンを削除し、そのバージョンの 削除マーカー を削除する必要があります。
仕組み
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 を削除する
DAG ファイル (.py) はバージョン管理されていないため、Amazon S3 コンソールで直接削除できます。次のステップでは、Amazon S3 バケット内の DAG を削除する方法について説明します。
DAG を削除するには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
コンソールの DAG コード in S3 ペインで S3 バケット リンクを選択して、ストレージバケットを開きます。
-
dagsフォルダを選択します。 -
DAG を選択し、削除 します。
-
オブジェクトを削除 する場合、
deleteを入力してください。 -
オブジェクトの削除 を選択します。
注記
Apache Airflow は DAG の実行履歴を保存します。Apache Airflow で DAG を実行した後は、Apache Airflow で削除するまで、ファイルのステータスに関係なく、Airflow DAG リストに残ります。Apache Airflow 内の DAG を削除するには、リンク 列の下にある赤い「削除」ボタンを選択します。
「現在の」requirements.txt または plugins.zip を環境から削除する
現在、plugins.zip や requirements.txt を追加した後に環境から削除する方法はありませんが、現在対応中です。当面の回避策は、それぞれ空のテキストまたは zip ファイルを指すことです。
「最新でない」(以前の) requirements.txt または plugins.zip バージョンを削除する
Amazon S3 バケット内の requirements.txt および plugins.zip ファイルは、Amazon MWAA でバージョニングされています。Amazon S3 バケット上のこれらのファイルを完全に削除する場合は、オブジェクトの現在のバージョン (121212) (plugins.zip など) を取得し、バージョンを削除してから、ファイルバージョンの 削除マーカー を削除する必要があります。
Amazon S3 コンソールで「最新でない」(以前の) ファイルバージョンを削除することもできますが、それでも以下のオプションのいずれかを使用して 削除マーカー を削除する必要があります。
-
オブジェクトバージョンを取得するには、Amazon S3 ガイド の バージョニングが有効なバケットからのオブジェクトバージョンの取得 を参照してください。
-
オブジェクトバージョンを削除するには、Amazon S3 ガイド の バージョニングが有効なバケットからのオブジェクトバージョンの削除 を参照してください。
-
削除マーカーを削除するには、Amazon S3 ガイド の 削除マーカーの管理 を参照してください。
ライフサイクルを使用して「最新ではない」(以前の) バージョンを削除し、マーカーを自動的に削除する
Amazon S3 バケットのライフサイクルポリシーを設定して、Amazon S3 バケット内の「最新でない」(以前の) バージョンの plugins.zip ファイルと requirements.txt ファイルを特定の日数が経過した後に削除するか、期限切れのオブジェクトの削除マーカーを削除できます。
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
Amazon S3 内の DAG コード で、Amazon S3 バケットを選択します。
-
ライフサイクルルールを作成 を選択します。
requirements.txt の「最新でない」バージョンを削除してマーカーを自動的に削除するライフサイクルポリシーの例
次の例を使用して、「最新ではない」バージョンの requirements.txt ファイルとその削除マーカーを 30 日後に完全に削除するライフサイクルルールを作成します。
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
Amazon S3 内の DAG コード で、Amazon S3 バケットを選択します。
-
ライフサイクルルールを作成 を選択します。
-
ライフサイクルルール の名前に
Delete previous requirements.txt versions and delete markers after thirty daysを入力してください。 -
プレフィックス では、要件。
-
ライフサイクルルールアクション で、以前のバージョンのオブジェクトを完全に削除する と 期限切れの削除マーカーまたは不完全なマルチパートアップロードを削除 を選択します。
-
オブジェクトが前のバージョンになるまでの日数 に、
30を入力してください。 -
期限切れオブジェクト削除マーカー で 期限切れオブジェクト削除マーカーを削除 を選択します。オブジェクトは 30 日後に完全に削除されます。
次のステップ
-
Amazon S3 削除マーカーの詳細については、削除マーカーの管理 を参照してください。
-
Amazon S3 ライフサイクルの詳細については、期限切れオブジェクト を参照してください。