はじめに
別の記事で記載したICOS上のアーカイブされたオブジェクトの復元について、高速アーカイブの場合についても確認してみました。
確認した環境
- アーカイブ・ルールが設定されたICOSバケット
- 高速アーカイブを設定
- ライター以上の権限を持つ資格情報のAPIキー
- (Python実行環境としての) Watson Studio
- Python 3.10
アーカイブされたオブジェクトの状態
通常のアーカイブされたオブジェクトの属性を見ると、StorageClass
がGLACIER
となっていましたが、高速アーカイブされたオブジェクトは、ここがACCELERATED
となっていて、通常のアーカイブされたオブジェクトを復元させたのと同じリクエストではエラーになってしまいました。
対応方法
こちらに解決策が記載されていました。
復元ツール改善版
別の記事に記載したツールについて、最後のセルを以下のように修正することで、通常と高速の双方のアーカイブに対応出来るようになりました。
# 取得した一覧のアーカイブを復旧
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')