amazon S3とC#を使用して単純なファイルIOを実行しようとしています。Amazon S3で.Net AWSSDKを使用してファイルを削除する際にアクセス拒否例外が発生する
これまでのところ、ファイルを作成してリストすることができました。私はバケツの所有者であり、完全なアクセス権が必要です。 CloudBerryでは、バケット内のファイルを作成および削除できます。私のコードでは、ファイルを削除しようとするとアクセスが拒否されました。
これは私の試験方法である:コードの実行後
var request = new DeleteObjectRequest()
{
BucketName = bucketName,
Key = fileKey
};
S3Response response = client.DeleteObject(request);
response.Dispose();
:ファイルを削除する
var request = new PutObjectRequest();
request.WithBucketName(bucketName);
request.WithKey(fileName);
request.WithContentBody("");
S3Response response = client.PutObject(request);
response.Dispose();
マイ方法:ファイルを追加する
[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));
}
マイ方法ファイルはCloudBerryに表示され、そこから削除できます。
私はAmazon S3の経験がほとんどないので、何がうまくいかないのか分かりません。作成またはアップロードするファイルに何らかのパーミッションを付けるべきですか?自分のプログラムに提供されているのと同じ資格情報を使ってCloudBerryにログインしているときに、ファイルを削除できるのはなぜですか?
お返事ありがとうございます。私はルーキーミスを犯し、コンストラクタでクライアントを作成し、ヘルパークラス全体で使用することによってロックを引き起こしていたことが判明しました。私は、各メソッドで "using(clientCreatedInConstructor){}"ブロックを使用しましたが、クライアントを毎回(Amazon.AWSClientFactory.CreateAmazonS3Client()){}を使用して作成することで問題を解決しました。あなたの助けなしにそれを理解するために私を長く取っていたでしょうか。ありがとう。 –