[英]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.