1

大きなファイルを Amazon S3 にアップロードしようとしています。最初に を使用しましたPutObjectが、問題なく動作しましたが、2 GB のファイルをアップロードするのに約 5 時間かかりました。そこで、オンラインの提案をいくつか読んで、TransferUtility.

タイムアウトを増やしましたが、この TransferUtility API は常に"The request was aborted. The request was canceled."エラーになります。

コードサンプル:

public void UploadWithMultiPart(string BucketName, string s3_key, string fileName)
{
    var fileTransferUtility = new Amazon.S3.Transfer.TransferUtility(_accessKey, _secretKey);
    var request = new Amazon.S3.Transfer.TransferUtilityUploadRequest()
        .WithBucketName(BucketName)
        .WithKey(s3_key)
        .WithFilePath(fileName)
        .WithTimeout(60*60*1000*100)
        .WithPartSize(1024 * 1024 * 100)
        .WithCannedACL(S3CannedACL.PublicRead)
        .WithStorageClass(S3StorageClass.ReducedRedundancy);

    request.Timeout = 60*60*1000*100;

    fileKey = s3_key;

    request.UploadProgressEvent += new EventHandler<UploadProgressArgs>(uploadRequest_UploadPartProgressEvent);

    //.with = 30000
    // .AddHeader("x-amz-acl", "public-read")

    fileTransferUtility.Upload(request);
}

public void Upload(string BucketName, string s3_key, string fileName)
{
    Amazon.S3.Model.PutObjectRequest request = new Amazon.S3.Model.PutObjectRequest();
    request.WithBucketName(BucketName);
    request.WithKey(s3_key);
    request.WithFilePath(fileName);
    request.Timeout = -1;
    request.ReadWriteTimeout = 30000;
    request.AddHeader("x-amz-acl", "public-read"); 

    s3Client.PutObject(request);
}
4

1 に答える 1