簡體   English   中英

使用.Net AWSSDK在Amazon S3中刪除文件時獲取訪問被拒絕異常

[英]Getting Access Denied Exception when deleting a file in Amazon S3 using the .Net AWSSDK

我正在嘗試使用亞馬遜S3和C#做一些簡單的文件IO。

到目前為止,我已經能夠創建文件並列出它們。 我是存儲桶所有者,應該具有完全訪問權限。 在CloudBerry中,我可以創建和刪除存儲桶中的文件。 在我的代碼中,當我嘗試刪除文件時,出現拒絕訪問的異常。

這是我的測試方法:

[Test]
public void TestThatFilesCanBeCreatedAndDeleted()
{
    const string testFile = "test.txt";

    var awsS3Helper = new AwsS3Helper();

    awsS3Helper.AddFileToBucketRoot(testFile);
    var testList = awsS3Helper.ListItemsInBucketRoot();
    Assert.True(testList.ContainsKey(testFile)); // This test passes
    awsS3Helper.DeleteFileFromBucket(testFile); // Access denied exception here
    testList = awsS3Helper.ListItemsInBucketRoot();
    Assert.False(testList.ContainsKey(testFile)); 

}

我添加文件的方法:

var request = new PutObjectRequest();
        request.WithBucketName(bucketName);
        request.WithKey(fileName);
        request.WithContentBody("");
        S3Response response = client.PutObject(request);
        response.Dispose();

我刪除文件的方法:

var request = new DeleteObjectRequest()
        {
            BucketName = bucketName,
            Key = fileKey
        };
        S3Response response = client.DeleteObject(request);
        response.Dispose();

運行代碼后,該文件在CloudBerry中可見,我可以從那里刪除它。

我對Amazon S3的經驗很少,所以我不知道可能會出什么問題。 我應該對創建或上傳的任何文件賦予某種權限嗎? 使用我提供給程序的相同憑據登錄CloudBerry時,為什么能刪除文件?

我不確定問題的根源是什么。 可能是安全規則,但對於您的存儲桶配置來說可能非常簡單。 您可以使用S3 Organizer Firefox插件 ,AWS管理站點或任何其他管理工具來檢查它們。 我也建議請求響應日志記錄-這對我的其他調查工作大有幫助。 AWSSDK具有很多很好的日志記錄示例-因此您只需要復制粘貼即可,一切正常。 如果您有實際的請求發送到Amazon,則可以將其與文檔進行比較。 請檢查AccessKeyId以獲取您的deleteRequest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM