javascript - 400 来自亚马逊的 Eureka js 客户端

标签 javascript node.js amazon-web-services netflix-eureka

出于某种原因,我在亚马逊上注册 Eureka 时得到了 400 的退款。起初我认为它与 eureka js 客户端的已知问题有关,但是,在应用该问题的修复程序后,它在本地工作,但当数据中心对象是 Amazon 时就不行了。它似乎从亚马逊获取元数据,使用本地将其应用于 eureka-js-client 配置对象,然后发出 POST 请求,但它似乎以 400 状态响应。

这是我的配置对象:

instance: {
        app: 'my-node-service',
        port: {
          '$': 8201,
          '@enabled': true
        },
        vipAddress: 'myapp.awesome.com',
        statusPageUrl: 'http://__HOST__:8201/info',
        dataCenterInfo: {
          '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
          name: 'Amazon',
        }
      },
      eureka: {
        useLocalMetadata: true,
        ssl: true,
        // eureka server host / port
        serviceUrls: {
          default: [
            'https://myamazoneurekaserver.com/eureka/apps',
            'https://myamazoneurekaserver1.com/eureka/apps',
            'https://myamazoneurekaserver2.com/eureka/apps'
          ]
        },
        servicePath: '/eureka/apps/'
      },
    }

这会导致来自 EurekaClient.js 文件的输出:

错误:eureka 注册失败:状态:400 主体:[object Object] 在/usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:267:23 在 Request.self.callback (/usr/app/node_modules/request/request.js:186:22) 在/usr/app/node_modules/async/dist/async.js:484:16 在 nextTask (/usr/app/node_modules/async/dist/async.js:5195:29) 在/usr/app/node_modules/async/dist/async.js:5202:13 在申请时(/usr/app/node_modules/async/dist/async.js:41:25) 在/usr/app/node_modules/async/dist/async.js:76:12 在/usr/app/node_modules/async/dist/async.js:988:16 在 Request._callback (/usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:570:9) 在/usr/app/node_modules/eureka-js-client/lib/EurekaClient.js:592:7

发生这种情况的任何原因。使用 Amazon 的示例不使用默认服务 Urls,但是当我使用 MyOwn 作为 dataCenterInfo 名称时,这在本地有效。

最佳答案

GitHub issue 中回答了这个问题也,但是为了后代把它放在这里=)。

对于 Amazon 数据中心(以及较新的 eureka JSON 格式),我认为您需要为 @class 传递不同的值。尝试使用:com.netflix.appinfo.AmazonInfo

如果您仍然收到错误的请求,有时手动向服务发出请求会有所帮助(因为这就是该客户端所做的一切),如果您有 Postman 或类似工具,那会起作用。您还可以设置 NODE_DEBUG=request 以查看客户端请求级别发生的情况。

关于javascript - 400 来自亚马逊的 Eureka js 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425787/

相关文章:

java - 我应该为 Amazon Web Services 学习什么类型的程序或示例?

amazon-web-services - 通过 terraform 将现有 IGW 连接到新 VPC

javascript - 使用 jquery 在 div 周围创建边框

c# - 如何在弹出另一个窗口请求信息后将文本插入文本框?

node.js - 使用 nodejs 通过 RTSP 流式传输

node.js - 树莓派 opencv 3 和 node-opencv

用于在不复制键的情况下创建 JSON 对象的 JavaScript 循环

javascript - 您可以创建动态 Firebase 查询吗?

git - 如何在 git push(GitHub 和 node.js)之后自动部署我的应用程序?

ios - 预签名 Url 分段上传始终返回 403