Move files between amazon S3 to Glacier and vice versa programmatically using API

前端 未结 2 1172
感动是毒
感动是毒 2021-02-05 15:07

I am creating a PHP based web application using Amazon\'s S3 and glacier services.

Now I want to give my site users a feature that they can choose any file and make it a

2条回答
  •  执笔经年
    2021-02-05 15:25

    You could use the Glacier API to upload a file to a Glacier vault, but I don't recommend it. The previous version of our backup app did that. When you upload a file it gets a randomly-assigned name. You can add put your filename in the metadata of the file, but if you want a list of what's in the Glacier vault you have to query and then wait 3-5 hours for the list.

    Lifecycle policies are the other way to use Glacier. The current version of Arq uses them because each object still looks like an S3 object (no random object names, no delays in getting object lists), but the object contents are in Glacier storage. The only difference is that getting the object contents is a 2-step process: you have to make an API call to request that the object be made downloadable; when it's ready, you can download it. Also there's a "peak hourly request fee" that comes into play if you request objects be made downloadable at too fast a rate. Amazon Glacier pricing is complex.

    Once an object is "Glacier storage class" there's no way to change it back to "Standard storage class". You have to make a copy of the object that's "Standard storage class" and delete the Glacier object.

    So maybe a simple solution to your problem is:

    1. Store the data in 2 "folders" in S3, "standard" and "glacier".
    2. Set a lifecycle policy to push all objects in the "glacier" folder to Glacier data storage ASAP.
    3. When you want to move an object from standard to glacier, copy it to the glacier folder and delete the object in the standard folder (there's no "move" API).
    4. When you want to move an object from glacier to standard, do a POST request to restore it; when it's restored, copy it to the standard folder and delete it from the glacier folder.

提交回复
热议问题