Python
 Computer >> コンピューター >  >> プログラミング >> Python

Boto3を使ってAWS Glueデータカタログからワークフローを削除する方法を解説

AWS Glueのデータカタログ上で管理しているワークフローは、Pythonのboto3ライブラリを使えば簡単に削除できます。本記事では、実際のコード例とともに、その手順をわかりやすく解説します。

やりたいこと

ユーザーがAWSデータカタログからワークフローを削除したいケースを想定します。

例:自分のアカウントから「test」という名前のワークフローを削除する。

課題:Pythonのboto3ライブラリを使用して、アカウント内に存在するワークフローを削除すること。

解決のための手順・アルゴリズム

ステップ1:例外処理のために、boto3およびbotocore.exceptionsをインポートします。

ステップ2:AWS Glue Catalogから削除したいワークフローの名前(workflow_name)をパラメータとして渡せるようにします。

ステップ3:boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを指定する必要があります。

ステップ4:Glue用のAWSクライアントを作成します。

ステップ5:delete_workflowを呼び出し、Nameパラメータとしてworkflow_nameを渡します。

ステップ6:これによりワークフローが削除され、レスポンスメタデータが返されます。なお、対象のワークフローがAWSデータカタログに存在しない場合でも、例外はスローされない点に注意してください。

ステップ7:処理中に何らかの問題が発生した場合に備えて、汎用例外のハンドリングを行います。

サンプルコード

以下のコードを使用すると、アカウント内に登録されているワークフローを削除できます。

import boto3
from botocore.exceptions import ClientError

def delete_a_workflow(workflow_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.delete_workflow(Name=workflow_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in delete_a_workflow: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in delete_a_workflow: " + e.__str__())

print(delete_a_workflow("test"))

実行結果

コードを実行すると、以下のようなレスポンスが返されます。HTTPStatusCodeが200であれば、ワークフローが正常に削除されたことを意味します。

{'Name': 'test', 'ResponseMetadata': {'RequestId': '……………-…………………-59a9bc817e0f', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 21 Feb 2021 05:37:11 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '35', 'connection': 'keep-alive', 'x-amzn-requestid': …………………-59a9bc817e0f'}, 'RetryAttempts': 0}}

まとめ

boto3のglueクライアントに対してdelete_workflowメソッドを呼び出すだけで、AWS Glueデータカタログ上のワークフローを簡単に削除できます。削除対象が存在しない場合でもエラーにはならないため、冪等性のあるスクリプトとして安心して利用できるのが特徴です。ただし、削除操作は元に戻せないため、本番環境で実行する前には対象のワークフロー名を十分に確認することをおすすめします。

  1. Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法

    本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため

  2. PythonのBoto3ライブラリを使ってAWS S3からオブジェクトを削除する方法

    この記事では、PythonのBoto3ライブラリを使用して、AWS S3バケットからオブジェクトを削除する方法を解説します。例: S3の「Bucket_1/testfolder」から「test.zip」を削除します。解決のためのアプローチとアルゴリズムステップ1 − boto3とbotocoreの例外処理モジュール(ClientError)をインポートします。ステップ2 − 関数の引数としてS3ファイルパス(s3_files_path)を受け取ります。ステップ3 − 渡されたパスが「s3://bucket_name/key」というAWS形式に準拠しているかどうかを検証します。ステップ4 − b