Les données de journal sont stockées quotidiennement dans S3 comme `` bucket / log / 20201 '', et les journaux après une certaine période de temps ont été déplacés de S3 vers Glacier, mais les données de journal de Glacier sont nécessaires pendant plusieurs mois. , Je devais le restaurer.
Restaurer l'archive S3 Glacier avec le dossier \ -Qiita ―― Je n'ai pas utilisé cet outil cette fois car l'installation était assez difficile.
One-liner pour le retour de Glacier à S3 tous ensemble \ -Qiita ――Si la quantité de données est petite, je pense qu'un seul liner convient, mais dans le cas des données pendant plusieurs mois cette fois, il a fallu une heure pour restaurer un jour. (Cela peut être différent s'il existe des options asynchrones, etc.)
J'ai décidé d'utiliser les opérations par lots S3 parce que j'ai effectué une opération appelée restauration pour un grand nombre d'objets dans S3.
Les opérations par lots S3 sont approximativement exécutées dans les étapes suivantes. --Création d'un fichier manifeste
bucket, object_key
. Ici, créez un CSV qui décrit le compartiment et la clé de l'objet de données de journal que vous souhaitez restaurer.target_date_range = Date.parse(config['START_DATE'])..Date.parse(config['END_DATE'])
target_date_range.each do |date|
#Obtenir une liste des objets dans le répertoire où les données de journal à restaurer sont enregistrées
s3_objects = s3_list_object_content(config['BUCKET'], "#{config['S3_KEY']}/#{date.strftime('%Y%m%d')}")
#Transformez la liste d'objets acquis en fichier manifeste au format CSV
s3_objects.each do |object|
CSV.open(file_name, 'a') { |f| f << [config['BUCKET'], object.key] }
end
end
confirmation_required: false
, le travail sera exécuté en même temps qu'il est créé. S'il est défini sur «true», le travail sera créé et doit être exécuté séparément.
job_id = Aws::S3Control::Client.new.create_job(
account_id: config['AWS_ACCOUNT_ID'],
confirmation_required: false,
operation: {
s3_initiate_restore_object: {
expiration_in_days: 10,
glacier_job_tier: config['GLACIER_JOB_TIER'],
},
},
report: {
bucket: "arn:aws:s3:::#{config['MANIFEST_BUCKET']}",
format: 'Report_CSV_20180820',
enabled: true,
prefix: 'report',
report_scope: 'AllTasks',
},
client_request_token: SecureRandom.uuid,
manifest: {
spec: {
format: 'S3BatchOperations_CSV_20180820',
fields: ['Bucket', 'Key'],
},
location: {
object_arn: "#{manifest_bucket_arn}/#{manifes_file_name}",
etag: etag,
},
},
description: 'restore',
priority: 10,
role_arn: config['ROLE_ARN'],
tags: config['TAGS'],
)
puts job_id