使用. net AWSSDK在Amazon S3中删除文件时出现Access Denied Exception

本文关键字:Access Exception Denied 文件 删除 AWSSDK net Amazon S3 使用 | 更新日期: 2023-09-27 18:19:13

我正在尝试使用amazon 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时删除文件?

使用. net AWSSDK在Amazon S3中删除文件时出现Access Denied Exception

我不确定问题的根源是什么。可能是安全规则,但也可能是一些非常简单的桶配置。您可以使用S3 Organizer Firefox插件,使用AWS管理网站或任何其他管理工具来检查它们。我还推荐使用请求-响应日志记录——它对我的不同调查有很大帮助。AWSSDK有很多很好的日志示例—所以您只需要复制粘贴它们,一切就都可以工作了。如果您有发送到Amazon的实际请求,您可以将它们与文档进行比较。请检查您的deleterrequest

的AccessKeyId