我写了一个小的.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,以便上传文件仅消耗该网络,而我通常面向互联网的网络不受影响?
答案 0 :(得分:0)
无法在“亚马逊服务之间”配置“专用网络”。
最接近的此类功能是使用Amazon EC2激活 EBS优化。这提供了额外的网络容量,仅用于与Elastic Block Store(EBS)服务进行通信。
Amazon EC2实例之外的网络带宽因实例大小而异。小实例的带宽比大实例少。为了进行比较,我在m1.xlarge实例(带宽较大)上复制了3GB的数据,并使用多部分上传通过AWS命令行界面(CLI)花了30秒。
在正常情况下,您的网络堆栈应该允许多个通信通道(而不仅仅是将文件发送到S3),但发送50GB文件肯定会占用大部分带宽。