LoginSignup
1
0

ICOS上のアーカイブされたファイルをまとめて復元する(高速アーカイブの場合)

Posted at

はじめに

別の記事で記載したICOS上のアーカイブされたオブジェクトの復元について、高速アーカイブの場合についても確認してみました。

確認した環境

  • アーカイブ・ルールが設定されたICOSバケット
    • 高速アーカイブを設定
    • ライター以上の権限を持つ資格情報のAPIキー
  • (Python実行環境としての) Watson Studio
    • Python 3.10

アーカイブされたオブジェクトの状態

通常のアーカイブされたオブジェクトの属性を見ると、StorageClassGLACIERとなっていましたが、高速アーカイブされたオブジェクトは、ここがACCELERATEDとなっていて、通常のアーカイブされたオブジェクトを復元させたのと同じリクエストではエラーになってしまいました。

対応方法

こちらに解決策が記載されていました。

Archiving and accessing cold data - Using the REST API and SDKs - Temporarily restore an archived object

復元ツール改善版

別の記事に記載したツールについて、最後のセルを以下のように修正することで、通常と高速の双方のアーカイブに対応出来るようになりました。

# 取得した一覧のアーカイブを復旧
for item in contents:
    print(item['Key'])
    # StorageClassがGLACIERの場合、通常アーカイブされていると見なして復旧実施 (復旧済みの場合は期限が延長される)
    if item['StorageClass'] == 'GLACIER':
        try:
            print(cosclient.restore_object(Bucket=bucket, Key=item['Key'], RestoreRequest={'Days': duration_days, 'GlacierJobParameters': {'Tier': 'Bulk'}}))
        except Exception as e:
            print(str(e))
    # StorageClassがACCELERATEDの場合、高速アーカイブされていると見なして復旧実施 (復旧済みの場合は期限が延長される)
    elif item['StorageClass'] == 'ACCELERATED':
        try:
            print(cosclient.restore_object(Bucket=bucket, Key=item['Key'], RestoreRequest={'Days': duration_days, 'GlacierJobParameters': {'Tier': 'Accelerated'}}))
        except Exception as e:
            print(str(e))
    else:
        print('Not archived')
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0