web-dev-qa-db-ja.com

APIを使用してプログラムでAmazon S3からGlacierに、またはその逆にファイルを移動する

AmazonのS3および氷河サービスを使用して、PHPベースのWebアプリケーションを作成しています。

ここで、サイトユーザーに任意のファイルを選択してアーカイブ(S3からGlacierにファイルを移動する)とアーカイブ解除(GlacierからS3にファイルを移動する)の機能を提供する機能を提供したいと思います。

私はいくつかの調査を行ったが、AmazonのAPIを使用して可能な方法を見つけられなかった。

[〜#〜]問題[〜#〜]

APIを使用してS3と氷河の間でファイルを移動するにはどうすればよいですか?

12
Irfan DANISH

Glacier APIを使用してファイルをGlacierボールトにアップロードすることもできますが、お勧めしません。以前のバージョンの backup app がそれを行いました。ファイルをアップロードすると、ランダムに割り当てられた名前が付けられます。ファイルのメタデータにファイル名を追加することもできますが、Glacierボールトにあるもののリストが必要な場合は、クエリを実行して、リストが表示されるまで3〜5時間待つ必要があります。

ライフサイクルポリシーは、Glacierを使用するもう1つの方法です。現在のバージョンのArqはそれらを使用します。各オブジェクトはS3オブジェクトのように見えます(ランダムなオブジェクト名、オブジェクトリストの取得の遅延はない)が、オブジェクトの内容はGlacierストレージにあるためです。唯一の違いは、オブジェクトのコンテンツの取得が2段階のプロセスであることです。APIを呼び出して、オブジェクトをダウンロード可能にするよう要求する オブジェクトをダウンロード可能にするよう要求する ;準備ができたら、 ダウンロード できます。また、オブジェクトを非常に速い速度でダウンロード可能にするように要求する場合に、「ピーク時給リクエスト料金」がかかります。 Amazon Glacierの料金 は複雑です。

オブジェクトが「Glacierストレージクラス」になったら、「標準ストレージクラス」に戻す方法はありません。 「標準ストレージクラス」であるオブジェクトのコピーを作成し、Glacierオブジェクトを削除する必要があります。

したがって、問題の簡単な解決策は次のとおりです。

  1. S3の「標準」と「氷河」の2つの「フォルダー」にデータを保存します。
  2. ライフサイクルポリシーを設定 「glacier」フォルダ内のすべてのオブジェクトをGlacierデータストレージにできるだけ早くプッシュします。
  3. オブジェクトを標準から氷河に移動する場合は、 コピーする を氷河フォルダに移動し、標準フォルダ内のオブジェクトを削除します(「移動」APIはありません)。
  4. オブジェクトを氷河から標準に移動する場合は、 復元するPOSTリクエスト を実行します。復元したら、標準フォルダにコピーし、氷河フォルダから削除します。
25
Stefan

APIを使用して、Amazon S3からAmazon Glacierにファイルをアーカイブするライフサイクルルールを定義し、APIを使用してGlacierにアーカイブされたファイルの一時的なコピーを取得できます。ただし、APIを使用してAmazon S3に特定のファイルをGlacierに移動するように指示することはできません。

Amazon Glacierを使用するには2つの方法があります。

  1. Glacierボールトとの間でアーカイブをアップロード/ダウンロードできるGlacier APIを介して直接
  2. Amazon S3からAmazon GlacierにデータをアーカイブするAmazon S3ライフサイクルルール経由

Glacier APIを介して直接接続すると、アーカイブを長期保存用に保存でき、多くの場合、テープの代わりとして使用されます。 Glacier APIを介して保存されたデータも、Glacier APIを介して取得する必要があります。これは通常、通常のエンタープライズバックアップソフトウェア、または Cloudberry Backup (Windows)または Arq (Mac)などの軽量製品でも実行されます。

Amazon S3ライフサイクルルールを使用すると、Amazon S3にデータを保存し、データを長期保存のためにGlacierにアーカイブするタイミングを決定するルールを定義できます。たとえば、作成から90日後にデータをアーカイブできます。データ転送は lifecycle rules によって管理され、これは毎日のバッチベースで動作します。ルールは、putBucketLifecycle API呼び出しを介して設定できます(PHP SDKで利用可能) )、ただしこれはルールを定義するだけです-S3に特定のファイルをGlacierにアーカイブするように指示するAPI呼び出しを行うことはできません。

Amazon S3には RestoreObject API呼び出し (PHP SDK)で復元可能)がありますGlacierからS3にアーカイブされたデータの一時的なコピー。Glacierからのデータの復元には3-5時間かかることに注意してください。

6
John Rotenstein