技術周りのあれこれ

主に自分用のメモです。技術的なことや個人的にやってみたことを書いてます。

RDSのスナップショット一覧を100個以上取得する(LambdaのPython編)

RDSスナップショットを取得するのに、
describe_db_snapshots()
をすると100個までしかデフォルトでは取得できません。

もし手動でスナップショットを取得して100個以上になった場合は、
describe_db_snapshots()
をする際に"Marker"という値が発行されるので、そいつを引数として渡してやる必要があります。

今回はLambdaを使って発動するように作ります。
言語はPythonです。

※取得部分だけ記載します。

# 100個の生データを取得します。  
rds = boto3.client('rds')  
row_snps = rds.describe_db_snapshots()  
  
# スナップショット一覧のみ取り出します。  
snapshots = row_snps['DBSnapshots']  
  
# 生データを取得した項目にMarkerのキーがあれば、取得し続けるように回します。  
while "Marker" in row_snps:  
  
    # Markerの値を保存します。   
    mark = row_snps['Marker']

    # Markerの値を使って次の100個の生データ一覧を取得します。
    row_snps = rds.describe_db_snapshots(Marker=mark)

    # 初回のスナップショット一覧に今回取得したスナップショットのデータを結合します。
    snapshots = snapshots + row_snps['DBSnapshots']

これでsnapshotsに100個以上全てのスナップショット一覧が格納されます。