web-dev-qa-db-fra.com

Amazon Glacier peut-il refléter un compartiment Amazon S3?

Je voudrais refléter un seau S3 avec Amazon Glacier.

Le Glacier FAQ indique:

Amazon S3 fournit désormais une nouvelle option de stockage qui vous permet d’utiliser le service de stockage très économique d’Amazon Glacier pour l’archivage des données. Vous pouvez définir des règles de cycle de vie S3 pour archiver automatiquement des ensembles d'objets Amazon S3 dans Amazon Glacier afin de réduire vos coûts de stockage. Vous pouvez en apprendre davantage en visitant la rubrique Gestion du cycle de vie des objets dans le Guide du développeur Amazon S3.

Ceci est proche, mais je voudrais mirror . Je ne veux pas supprimer le contenu sur S3, je ne le copie que sur Glacier.

Est-ce possible d'installer automatiquement avec AWS?

Ou bien cette mise en miroir doit-elle être téléchargée manuellement sur Glacier?

33
Justin Tanner

Il est maintenant possible d'obtenir un miroir "S3 à Glacier" en créant d'abord un compartiment de réplication entre régions sur Amazon S3 (ce compartiment de réplication sera un miroir de votre compartiment d'origine - voir http: //docs.aws.Amazon .com/AmazonS3/latest/dev/crr.html ), puis définition d’une règle de cycle de vie (permettant de déplacer les données vers Glacier) depuis le réplication bucket. 

17
Jordan Magnuson

Amazon n'offre pas cette fonctionnalité via son API. Nous avons eu le même problème et avons résolu le problème en exécutant un travail quotidien de chargement périodique qui télécharge à nouveau des fichiers sur Glacier.

Voici un extrait de code que vous pouvez exécuter à l'aide de Python et boto pour copier un fichier dans un coffre-fort Glacier. Notez qu'avec le code ci-dessous, vous devez télécharger le fichier localement à partir de S3 avant de pouvoir l'exécuter (vous pouvez utiliser s3cmd, par exemple) - le code suivant est utile pour télécharger le fichier local sur Glacier.

import boto

# Set up your AWS key and secret, and vault name
aws_key = "AKIA1234"
aws_secret = "ABC123"
glacierVault = "someName"

# Assumption is that this file has been downloaded from S3
fileName = "localfile.tgz"

try: 
  # Connect to boto
  l = boto.glacier.layer2.Layer2(aws_access_key_id=aws_key, aws_secret_access_key=aws_secret)

  # Get your Glacier vault
  v = l.get_vault(glacierVault)

  # Upload file using concurrent upload (so large files are OK)
  archiveID = v.concurrent_create_archive_from_file(fileName)

  # Append this archiveID to a local file, that way you remember what file
  # in Glacier corresponds to a local file. Glacier has no concept of files.
  open("glacier.txt", "a").write(fileName + " " + archiveID + "\n")
except:
  print "Could not upload gzipped file to Glacier"
4
Suman

Cela se fait via Lifecycle policy , mais l'objet n'est plus disponible dans S3. Vous pouvez le dupliquer dans un compartiment séparé pour le conserver.

3
Ahmed Al Hafoudh

Si vous activez d'abord la gestion des versions sur votre compartiment S3, les règles de cycle de vie peuvent être appliquées aux versions précédentes. Cela aboutira à un résultat très similaire, sauf qu'il n'y aura pas de sauvegarde de la version actuelle.

0
Phil