动态存储 s3 和 node.js 的连接问题 "ECONNRESET"

Connectivity issues "ECONNRESET" with dynamic storage s3 and node.js

我正在关注 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 直接连接到存储,错误 "connection aborted")。

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

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

这一行:

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

这应该可以解决问题。 另外我也把教程修好了