AWS DeviceFarm将URL上传到S3会导致错误:读取ECONNRESET?

时间:2016-10-28 10:15:34

标签: node.js aws-device-farm

上传DeviceFarm 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);
}));

1 个答案:

答案 0 :(得分:1)

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

要使这项工作,

  1. 调用CreateUpload并从结果中获取预签名的URL。
  2. 将正确的文件发布到网址。
  3. 我们有published a blog post描述了要遵循的程序。代码示例使用CLI,但将它们转换为nodejs应该是微不足道的。