使用.Net AWSSDK在Amazon S3中删除文件时获取访问权限被拒绝

时间:2012-01-03 10:51:13

标签: c# amazon-s3

我正在尝试使用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时,为什么我能够删除文件?

1 个答案:

答案 0 :(得分:1)

我不确定问题的根源是什么。可能是安全规则,但对于您的存储桶配置可能非常简单。您可以使用AWS管理网站或任何其他管理工具使用S3 Organizer Firefox plugin进行检查。此外,我建议请求 - 响应日志 - 这对我来说有很多不同的调查帮助。 AWSSDK有很多很好的日志记录 - 所以你只需要复制粘贴它们就可以了。如果您有实际请求发送到亚马逊,您可以将它们与documentation进行比较。请检查deleteRequest

的AccessKeyId