LambdaによるFSxのバックアップ削除

0

Lambda(python3)でFSxのバックアップを経過日数に絞って削除できるのでしょうか。

NK39
質問済み 10ヶ月前397ビュー
1回答
1

AWS BackupではなくFSxで管理された手動バックアップのことでしょうか?
Lambdaで削除するのは可能だと思います。
以下のdescribe_backupsではバックアップを作成した日付 ('CreationTime') が確認できます。
datetime.now() で今日の値を取得して'CreationTime'と比較します。
比較した内容が削除したい日数を超えている場合にdelete_backupを使用して削除するといったコードにすることで可能だと思いました。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/fsx/client/describe_backups.html
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/fsx/client/delete_backup.html#

profile picture
エキスパート
回答済み 10ヶ月前
  • ご回答いただきありがとうございます

    AWS BackupではなくFSxで管理された手動バックアップのことでしょうか? FSxで管理された手動バックアップです。

    また、バックアップの2世代まで保持することも可能でしょうか?

  • また、バックアップの2世代まで保持することも可能でしょうか?

    こちらも可能だと思います。 describe_backupsのパラメータにフィルターをかけるものがあります。 BackupIdでフィルターをかけて現在のバックアップの個数が2個よりも多く残っていたらCreationTimeで削除したい日数以上経過していたらdelete_backupで削除すればよいと思います。

  • それっぽいコードを作ってみました。(動かしてはいないので動作するかは不明です) 重要なのは下の方にあるif文です。 ここでバックアップが作成されてから指定された日数 (period) 以上経過していた場合でかつバックアップの数が2個よりも多くある場合に削除するようなコードです。

    import boto3
    from datetime import datetime, timedelta
    
    period = 7
    max_generations = 2
    
    fsx = boto3.client('fsx')
    
    def lambda_handler(event, context):
        delete_date = datetime.now() - timedelta(days=period)
        response = fsx.describe_backups()
    
        for backup in response['Backups']:
            backup_id = backup['BackupId']
            create_time = backup['CreationTime']
    
            if create_time < delete_date:
                response = fsx.describe_file_systems(BackupIds=[backup_id])
                if len(response['FileSystems']) < max_generations:
                    fsx.delete_backup(BackupId=backup_id)
    
  • ご回答いただきありがとうございます また、コードもご共有いただきありがとうございます。 こちらの方でもテストしてみます。

  • 取得するバックアップ名をプレフィックスで絞りたいのですが、可能でしょうか また、下記のコードですが、ファイルシステムを取得しているように見えるのですが、こちらは必要な処理なのでしょうか? response = fsx.describe_file_systems(BackupIds=[backup_id])

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ