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

0

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

NK39
gefragt vor einem Jahr420 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor einem Jahr
  • ご回答いただきありがとうございます

    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])

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen