7

あるバケットから別のバケットにファイルを複製しようとしていますが、コピー先のバケットで新しいファイルを確認できません。

私はまったくエラーが発生していません...

リクエスト:

ここに画像の説明を入力

応答:

<?xml version="1.0" encoding="UTF-8"?>
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <LastModified>2012-04-08T11:26:36.000Z</LastModified
    <ETag>&quot;a5f9084078981b64737b57dbf1735fcf&quot;</ETag>
</CopyObjectResult>

しかし、S3 で最終更新日を確認し続けていますが、この新しいファイルに関する情報が見つかりません。直接アクセスすることもできます

http://jk-v20.s3.amazonaws.com/PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

私は何を間違っていますか?


方法:

public void DuplicateFileInCloud(string original, string destination)
{
    try
    {
        CopyObjectRequest request = new CopyObjectRequest();

        if (original.StartsWith("http"))
        {
            // could be from other bucket, URL will show all data
            // example: http://jk-v30.s3.amazonaws.com/PredefinedFiles/Favicons/002.ico
            string bucket = getBucketNameFromUrl(original), // jk-v30
                    key = getKeyFromUrl(original);          // PredefinedFiles/Favicons/002.ico

            request.WithSourceBucket(bucket);
            request.WithSourceKey(key);
        }
        else
        {
            // same bucket: copy/paste operation
            request.WithSourceBucket(this.bucketName);
            request.WithSourceKey(original);
        }

        request.WithDestinationBucket(this.bucketName);
        request.WithDestinationKey(destination);
        request.CannedACL = S3CannedACL.PublicRead;

        using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(this.accessKey, this.secretAccessKey))
        {
            S3Response response = client.CopyObject(request);
            response.Dispose();
        }
    }
    catch (AmazonS3Exception s3Exception)
    {
        throw s3Exception;
    }
}
4

3 に答える 3

5

http://jk-v20.s3.amazonaws.com//PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

ファイルの場所です。(二重スラッシュに注意してください。// ..) この URL にアクセスすると、ico ファイルが表示されます。したがって、ツールセットによって自動的に追加される可能性のある先頭のスラッシュと関係があります。

于 2012-04-16T21:49:55.287 に答える
0

フィドラーのようなものでキャプチャされたリクエストを(ヘッダー付きで)投稿できますか?

ドキュメントには、ソースパスがスラッシュで始まる(つまり、完全修飾されている)必要があることが示されていますが、それを試しましたか?

x-amz-copy-source: /source_bucket/sourceObject

たぶんフレームワークがあなたのためにそれをします、しかしあなたの目的地は先頭のスラッシュを持っているので多分...

于 2012-04-15T16:38:51.727 に答える
0

コードは正しいように見えます。作業中のアプリケーションで同様のものを使用しています。

バックグラウンドで何が起こっているかを理解するために、s3 バケットでサーバー アクセス ログを有効にすると役立つ場合があります ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/ServerLogs.html ) 。

于 2012-04-16T13:30:17.933 に答える