46

特定のプレフィックスが指定されたオブジェクトの有効期限ルールを使用して S3 バケット内のオブジェクトを期限切れにする方法を知っていますが、私の目的のために、オブジェクトごとにプログラムで有効期限を設定したいと考えています。

Java SDK にはsetExpirationTimeメソッドがあるため、これが可能であることを示しているようですが、このメソッドを使用して有効期限を設定しても、何も起こらず、オブジェクトが期限切れになることはありません。さらに、aws コンソールからオブジェクトのプロパティを見ると、有効期限が設定されていないようです。

ファイルごとの有効期限はサポートされていませんか? / 動作させるために必要な追加の手順はありますか? / ファイルごとの有効期限がサポートされていない場合、有効期限プレフィックスに一致するファイルを期限切れから除外することは可能ですか?

前もって感謝します!

4

6 に答える 6

16

オブジェクトごとの有効期限がサポートされているようには見えませんが、構成ごとに最大 100 のルールを持つバケットごとのライフサイクル構成がサポートされているようです。

バケットには 1 つのライフサイクル構成があります。ライフサイクル構成には、最大 100 個のルールを含めることができます。

有効期間の値は、ゼロ以外の正の整数でなければなりません。Amazon S3 は、ルールで指定された有効期限をオブジェクトの作成時刻に加算し、結果の時刻を翌日の午前 0 時 (UTC) に丸めて有効期限を計算します。

ファイルごとの有効期限がサポートされていない場合、有効期限プレフィックスに一致するファイルを期限切れから除外することはできますか?

ルールも重複できないようです。

ルールが重複しないように注意してください。たとえば、次のライフサイクル構成には、接頭辞が「ドキュメント」のオブジェクトを 30 日後に失効するように設定するルールがあります。この構成には、接頭辞「documents/2011」を持つオブジェクトを 365 日後に失効するように設定する別のルールもあります。この場合、Amazon S3 はエラー メッセージを返します。

于 2012-08-29T20:45:42.513 に答える
9

一部の状況で機能する代替アプローチを次に示します。

バケットのライフサイクルを設定して、短い日数 (1 日、7 日など) 後にオブジェクトを失効させることができます。次に、各オブジェクトの有効期限が切れる前に、そのオブジェクトをまだ期限切れにしたくない場合は、プログラムで有効期限を延長します。

ストレージ クラスを現在と同じクラスに変更する命令を使用して、オブジェクトをそれ自体に「コピー」することで、S3 オブジェクトのタイムスタンプをリセットできます。これは基本的に、Linux/Unix の「touch」コマンドのように機能する「noop」です。

これを行う方法を示す aws-cli コマンドの例を紹介する記事を書きました: http://alestic.com/2013/09/s3-lifecycle-extend

于 2013-09-11T00:36:55.857 に答える
1

s3cmd コマンドを使用してオブジェクトをそれ自体にコピーすることにより、有効期限を延長しました。それは基本的に「タッチ」のように機能しました。

s3cmd cp s3://バケット名/ファイル.txt s3://バケット名/ファイル.txt

于 2016-08-22T06:52:03.647 に答える