在将文件上载到Amazon S3时使用专用网络

时间:2015-06-17 10:37:08

标签: c# amazon-web-services amazon-ec2 amazon-s3 amazon

我写了一个小的.NET代码,每天从Amazon EC2实例上传几个文件(每个大约50 GB)到Amazon S3。

仅供参考,这是片段:

public static bool UploadFiles(string s3bucket, IEnumerable<string> filesToUpload)
{
    TransferUtility FileTransferUtility = new TransferUtility(S3Client);
    bool bSuccess = true;
    foreach (string fileToUpload in filesToUpload)
    {
        try
        {
            FileTransferUtility.Upload(fileToUpload, s3bucket);
        }
        catch (Exception ex)
        {
            bSuccess = false;
            Mailer.SendMail("Cannot upload " + fileToUpload + " to " + s3bucket, GetFullStackTrace(ex));
        }
    }
    return bSuccess;
}

我目前面临的问题是,在上传过程中网络被用于最大化,因为我的服务器提供的其他服务已中断。

是否可以在亚马逊服务之间建立专用网络:EC2和S3,以便上传文件仅消耗该网络,而我通常面向互联网的网络不受影响?

1 个答案:

答案 0 :(得分:0)

无法在“亚马逊服务之间”配置“专用网络”。

最接近的此类功能是使用Amazon EC2激活 EBS优化。这提供了额外的网络容量,仅用于与Elastic Block Store(EBS)服务进行通信。

Amazon EC2实例之外的网络带宽因实例大小而异。小实例的带宽比大实例少。为了进行比较,我在m1.xlarge实例(带宽较大)上复制了3GB的数据,并使用多部分上传通过AWS命令行界面(CLI)花了30秒。

在正常情况下,您的网络堆栈应该允许多个通信通道(而不仅仅是将文件发送到S3),但发送50GB文件肯定会占用大部分带宽。