2012-01-03 17 views
0

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にログインしているときに、ファイルを削除できるのはなぜですか?

答えて

0

問題の原因がわかりません。可能性としてはセキュリティルールですが、バケット設定では非常に単純なものかもしれません。 S3 Organizer Firefox pluginを使用して、AWS管理サイトまたはその他の管理ツールを使用して確認できます。また、リクエストレスポンスロギングをお勧めします。これは、私のためにさまざまな調査をするのに多くの助けとなりました。 AWSSDKにはロギングの良いexmamplesがたくさんあるので、コピー・ペーストするだけですべてが機能します。 Amazonへの実際のリクエストがある場合は、documentationと比較することができます。あなたのAccessKeyIdを確認してくださいdeleteRequest

+0

お返事ありがとうございます。私はルーキーミスを犯し、コンストラクタでクライアントを作成し、ヘルパークラス全体で使用することによってロックを引き起こしていたことが判明しました。私は、各メソッドで "using(clientCreatedInConstructor){}"ブロックを使用しましたが、クライアントを毎回(Amazon.AWSClientFactory.CreateAmazonS3Client()){}を使用して作成することで問題を解決しました。あなたの助けなしにそれを理解するために私を長く取っていたでしょうか。ありがとう。 –

関連する問題