0

私はこれを研究しようとしていましたが、答えが見つからないようです。.NET(VB.NET)では、AmazonS3でオブジェクトを削除するための次のコードがあります。

client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey, RegionEndpoint.USEast1)
    Dim request As DeleteObjectRequest = New DeleteObjectRequest
    With request
        .BucketName = bucketName
        .Key = keyToDelete
    End With
    Try
        Dim resp As DeleteObjectResponse = client.DeleteObject(request)
        Dim headers As WebHeaderCollection = resp.Headers
        For Each key As String In headers.Keys
            Return "Response Header: " + key + "Value: " + headers.Get(key)
        Next
    Catch ex As AmazonS3Exception
        Return "Not Deleted"
    End Try
    Return "Deleted"

私が理解できないのは、オブジェクトが正常に削除されたことをどうやって知ることができるかということです。例外がスローされると思いましたが、そうではありません。存在しないキーを渡すことができますが、それでも問題なく動作します。

4

1 に答える 1

1

このスレッドhttps://forums.aws.amazon.com/thread.jspa?threadID=60081によると、関数が例外をスローしない限り、オブジェクトは正常に削除されました。ただし、ドキュメントhttp://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/M_Amazon_S3_AmazonS3_DeleteObject.htmは、オブジェクトが存在しない場合に正常に返される動作を確認しています。存在しないオブジェクトは削除されるというのが理論だと思います。

削除する前に、オブジェクトが存在するかどうかを確認する必要がある場合があります。このスレッドhttps://forums.aws.amazon.com/message.jspa?messageID=219046には、いくつかのメソッドがあります。オブジェクトが存在する場合、削除に失敗すると例外がスローされます。

于 2012-11-28T19:39:27.740 に答える