连接使用动态存储s3和node.js发出“ECONNRESET”

时间:2016-06-16 10:32:20

标签: amazon-s3 cloudfoundry connectivity swisscomdev

我正在关注step-by-step tutorial动态存储dynstrg。

我创建了一个应用程序,将其与服务dynstrg链接,并按照描述创建了一个带有dragondisk的存储桶。

当我在浏览器上调用应用程序时,出现以下错误:

{
message: "read ECONNRESET",
code: "NetworkingError",
errno: "ECONNRESET",
syscall: "read",
region: "eu-west-1",
hostname: "denistestbucket.ds31s3.swisscom.com",
retryable: true,
time: "2016-06-16T10:15:42.670Z"
}

我的manifest.yml看起来如下:

---
services:
 - denisteststorage
applications:
- name: denistestapp
  memory: 128MB
  instances: 1
  domain: scapp-corp.swisscom.com
  command: node app.js
  env:
     bucketName: denistestbucket

存储存在问题吗?或者任何人都可以告诉我我做错了什么? (我还尝试将boto3直接连接到存储器,错误“连接中止”)。

1 个答案:

答案 0 :(得分:2)

我发现了问题,它似乎与模块的版本有关" aws-sdk"用过的。 在本教程之后,使用的版本是" aws-sdk":" ^ 2.2.9"这会自动导致下载最新的aws-sdk版本2.4.0版本。 此版本会导致您观察到的错误,因为默认情况下它使用签名版本4.要访问Dynamic Storage S3(基于EMC ATMOS。文档可以找到here),必须使用签名版本2。 您可以通过更改文件" app.js":

上的这一行来完成此操作
var s3Client = new AWS.S3({endpoint: endpoint});

这一行:

var s3Client = new AWS.S3({endpoint: endpoint, signatureVersion: 'v2'});

这应该可以解决问题。 另外,我还修复了教程。