5

Amazon S3 Java API を使用して移動操作を実装しようとしています。

私が抱えている問題はCopyObjectResult、メソッドによって返されたオブジェクトがAmazonS3Client.copyObject、操作が成功したかどうかについて明確な指標を持っていないように見えることです。

この操作の後、ファイルを削除することになるので、操作が成功したことを確認したいと思います。

助言がありますか?

4

3 に答える 3

5

これが私がやったことです。

def s3 = createS3Client(credentials)
def originalMeta = s3.getObjectMetadata(originalBucketName, key)
s3.copyObject(originalBucketName, key, newBucketName, newKey)
def newMeta = s3.getObjectMetadata(newBucketName, newKey)

// check that md5 matches to confirm this operation was successful
return originalMeta.contentMD5 == newMeta.contentMD5

これは Groovy コードですが、Java コードの動作と非常によく似ていることに注意してください。

メタデータをチェックするために 2 つの追加操作を行わなければならないのは好きではないので、これをより効率的に行う方法があれば教えてください。

于 2013-07-11T14:59:34.790 に答える
1

CopyObjectResult オブジェクトのgetETag メソッドを使用して、作成後に CopyObjectRequest setETag メソッドで行われたように有効な ETag があることを確認できると確信しています。

getETag

public String getETag()関連する CopyObjectRequest で作成された新しいオブジェクトの ETag 値を取得します。戻り値: 新しいオブジェクトの ETag 値。関連項目: setETag(String) setETag

public void setETag(String etag) 関連するコピー オブジェクト要求から作成された新しいオブジェクトの ETag 値を設定します。パラメータ: etag - 新しいオブジェクトの ETag 値。関連項目: getETag()

常にデータを信頼してください。

数年前に Amazon PhP SDK で同様の機能を実行してから 1 年が経ちましたが、機能するはずです。

于 2013-07-10T22:01:42.593 に答える