首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS route53Domains.listDomains()返回"UnknownError:坏网关“

AWS route53Domains.listDomains()返回"UnknownError:坏网关“
EN

Stack Overflow用户
提问于 2018-11-29 07:51:00
回答 1查看 138关注 0票数 0

我正在使用js库AWS查询AWS对象。

在同一个脚本中,它可以使用ec2.cribeInstance检索ec2实例的详细信息,但每次执行route53Domains.listDomains()时,我都可以获得:

UnknownError:坏网关

我正在使用来自正在执行脚本的ec2实例的ec2实例身份验证,因此我不设置任何api键。

如果没有配置代理,则根本不需要调用。

代码语言:javascript
复制
const AWS = require('aws-sdk')
const proxy = require('proxy-agent')
const Logger = require('logplease')

const logOptions = {
  useColors: false // Disable colors
}

const myLogger = Logger.create('testAws', logOptions)
Logger.setLogLevel('DEBUG')

AWS.config.update({
  httpOptions: { agent: proxy('http://my.proxy.here:8080') },
  region: 'ap-southeast-2', // ec2 client needs this
  logger: myLogger
})

myLogger.log('testAws Starting')

myLogger.log('About to create ec2 client')
const ec2 = new AWS.EC2()
myLogger.log('ec2 client created')

myLogger.log('About to create route53Domainsclient')
const route53Domains = new AWS.Route53Domains()
myLogger.log('route53Domainsclient created')

function listDomains() {
  return new Promise(async (resolve, reject) => {
    try {
      myLogger.log('About to listDomains')
      const rsp = await route53Domains.listDomains({}).promise()
      myLogger.log(`Domains listed: ${JSON.stringify(rsp, null, 2)}`)
      resolve()
    } catch (err) {
      myLogger.error(`Error listDomains: ${err}`)
      reject(err)
    }
  })
}
function describeInstances() {
  return new Promise(async (resolve, reject) => {
    try {
      myLogger.log('About to describeInstances')
      const params = {}
      const response = await ec2.describeInstances(params).promise()
      myLogger.log(`Successfully describeInstances: output: ${JSON.stringify(response, null, 2)}`)
      resolve()
    } catch (err) {
      myLogger.error(`Error describeInstances: ${err}`)
      reject(err)
    }
  })
}

async function doInstanceOps() {
  return new Promise(async (resolve) => {
    try {
      await describeInstances()
    } catch (err) {
      myLogger.log('error in describeInstances()')
    }
    myLogger.log('doInstanceOps complete')
    resolve()
  })
}

async function doRoute53Ops() {
  return new Promise(async (resolve) => {
    try {
      await listDomains()
    } catch (err) {
      myLogger.error('error in doRoute53Ops()')
    }
    myLogger.log('doRoute53Ops complete')
    resolve()
  })
}

async function doEverything() {
  myLogger.log('doEverything Starting')

  await doInstanceOps()
  await doRoute53Ops()
  myLogger.log('doEverything Finished')
}

doEverything()

代码语言:javascript
复制
2018-11-29T07:47:47.158Z [DEBUG] testAws: testAws Starting
2018-11-29T07:47:47.160Z [DEBUG] testAws: About to create ec2 client
2018-11-29T07:47:47.189Z [DEBUG] testAws: ec2 client created
2018-11-29T07:47:47.189Z [DEBUG] testAws: About to create route53Domainsclient
2018-11-29T07:47:47.191Z [DEBUG] testAws: route53Domainsclient created
2018-11-29T07:47:47.192Z [DEBUG] testAws: doEverything Starting
2018-11-29T07:47:47.192Z [DEBUG] testAws: About to describeInstances
2018-11-29T07:47:47.493Z [DEBUG] testAws: [AWS ec2 200 0.299s 0 retries] describeInstances({})
2018-11-29T07:47:47.494Z [DEBUG] testAws: Successfully describeInstances: 
output: {
  "Reservations": [
    {
      "Groups": [],
      "Instances": [
        {
          "AmiLaunchIndex": 0,
          "ImageId": 
< I have removed a massive payload here as it has internal details >
2018-11-29T07:23:02.654Z [DEBUG] testAws: doInstanceOps complete
2018-11-29T07:23:02.654Z [DEBUG] testAws: About to listDomains
2018-11-29T07:23:03.272Z [DEBUG] testAws: [AWS route53domains 502 0.617s 3 retries] listDomains({})
2018-11-29T07:23:03.273Z [ERROR] testAws: Error listDomains: UnknownError: Bad Gateway
2018-11-29T07:23:03.273Z [ERROR] testAws: error in doRoute53Ops()
2018-11-29T07:23:03.273Z [DEBUG] testAws: doRoute53Ops complete
2018-11-29T07:23:03.273Z [DEBUG] testAws: doEverything Finished

我的npm版本是:

代码语言:javascript
复制
C:\testApp\testApp-api>npm list aws-sdk
testApp-api@1.0.0 C:\testApp\testApp-api
+-- aws-sdk@2.364.0
`-- credstash@1.0.44
  `-- aws-sdk@2.2.35

C:\testApp\testApp-api>npm list proxy-agent
testApp-api@1.0.0 C:\testApp\testApp-api
`-- proxy-agent@3.0.3

C:\testApp\testApp-api>npm list logplease
testApp-api@1.0.0 C:\testApp\testApp-api
`-- logplease@1.2.15

我刚刚用来自AWS.config的http配置进行了测试,如下所示:

代码语言:javascript
复制
AWS.config.update({
  // httpOptions: { agent: proxy('http://myproxy.here:8080') },
  region: 'ap-southeast-2', // ec2 client needs this
  logger: myLogger
})

我得到了这个错误:

代码语言:javascript
复制
2018-11-29T08:30:02.192Z [DEBUG] testAws: About to listDomains
2018-11-29T08:30:02.465Z [DEBUG] testAws: [AWS route53domains undefined 0.271s 3 retries] listDomains({})
2018-11-29T08:30:02.465Z [ERROR] testAws: Error listDomains: UnknownEndpoint: Inaccessible host: `route53domains.ap-southeast-2.amazonaws.com'. This service may not be available in the `ap-southeast-2' region.
2018-11-29T08:30:02.465Z [ERROR] testAws: error in doRoute53Ops()
EN

回答 1

Stack Overflow用户

发布于 2018-12-04 12:05:54

根据AWS支持部门的建议,我将该地区从‘ap-东南-2’改为‘美国-东-1’,对于route53domains电话,这解决了问题。

有关更多信息,请参见此链接,它用于Java,但据我所知,它也适用于其他SDK。

请参阅AWS区域和端点页面上的"Amazon 53“,它显示此API服务( route53domains )仅在单个地区'us-east-1‘中可用,因此route53domains全球对aws的所有调用都需要转到'us-east-1’区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53534177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档