2016-10-28 75 views
0

上传文件上传DeviceFarm S3 url时出现错误代码:ECONNRESET。AWS DeviceFarm将URL上传到S3导致错误:读取ECONNRESET?

这是我的代码:

var AWS = require('aws-sdk'); 
var fs = require('fs'); 
var req = require('request'); 
var devicefarm = new AWS.DeviceFarm(); 
AWS.config.loadFromPath('C:/Users/Abin.mathew/AWSdata/config.json'); 
var apkPath= "D:/DTS/APKs/TPLegacyPlugin-googleplaystore-debug-rc_16.2.15.apk"; 
var stats = fs.statSync(apkPath); 
var url= "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A594587224081%3Aproject%3Ade07f584-7c64-4748-aebd-ec965ab107cf/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A594587224081%3Aupload%3Ade07f584-7c64-4748-aebd-ec965ab107cf/5dd627eb-4eb2-4f2d-a300-0fde0720bde4/MyAppiumPythonUpload?AWSAccessKeyId"; 

fs.createReadStream(apkPath).pipe(req({ 
    method: 'PUT', 
    url: url, 
    headers: { 
    'Content-Length': stats['size'] 
    } 
}, function (err, res, body) { 
    console.log(body); 
    console.log(res); 
    console.log(err); 
})); 
+0

请张贴您的代码。 –

回答

1

您的网址不正确。它代表Appium测试包,但您正尝试上传APK。您是否重复使用之前操作的网址?预先签名的URL也会在一段时间后过期,因此不应重复使用。

为了使这项工作,

  1. 呼叫CreateUpload,并从结果预标识的URL。
  2. 将正确的文件发布到URL。

我们有published a blog post,它描述了遵循的程序。代码示例使用CLI,但将它们转换为nodejs应该是微不足道的。

+0

感谢您的回复。但是,我又对一个新的.apk文件生成了一个新的URL,但现在它显示“Error:read ECONNRESET” – Coder

+0

是他们对文件大小的限制,我猜它是由于一些timeOut错误 – Coder

+0

文件大小限制为4 GB。重置连接的潜在原因太多,所以我没有单一的解决方案来提供。由于AWS Device Farm服务端点位于us-west-2中,因此您可以尝试从运行在us-west-2上的EC2实例上传文件以最大限度地减少网络延迟。 –