Node.js 信息:';配置';中缺少凭据;,在initiateAuth()中,我缺少哪些凭据?

Node.js 信息:';配置';中缺少凭据;,在initiateAuth()中,我缺少哪些凭据?,node.js,amazon-web-services,amazon-cognito,Node.js,Amazon Web Services,Amazon Cognito,我试图在我的项目中为用户身份验证设置基本函数,但当我使用aws sdk函数initiateAuth()请求身份验证令牌时,它告诉我配置对象中缺少凭据。我已经成功地在没有任何凭据的情况下设置了用户创建和确认。更重要的是,文档没有明确说明initiateAuth()需要任何凭据,或者它需要哪些凭据 当我请求身份验证时,我得到了这个错误 { Error: connect ENETUNREACH 169.254.169.254:80 at TCPConnectWrap.afterConnect

我试图在我的项目中为用户身份验证设置基本函数,但当我使用aws sdk函数
initiateAuth()
请求身份验证令牌时,它告诉我配置对象中缺少凭据。我已经成功地在没有任何凭据的情况下设置了用户创建和确认。更重要的是,文档没有明确说明
initiateAuth()
需要任何凭据,或者它需要哪些凭据

当我请求身份验证时,我得到了这个错误

{ Error: connect ENETUNREACH 169.254.169.254:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14)
  message: 'Missing credentials in config',
  errno: 'ENETUNREACH',
  code: 'CredentialsError',
  syscall: 'connect',
  address: '169.254.169.254',
  port: 80,
  time: 2019-04-13T22:26:34.352Z,
  originalError:
   { message: 'Could not load credentials from any providers',
     errno: 'ENETUNREACH',
     code: 'CredentialsError',
     syscall: 'connect',
     address: '169.254.169.254',
     port: 80,
     time: 2019-04-13T22:26:34.352Z,
     originalError:
      { errno: 'ENETUNREACH',
        code: 'ENETUNREACH',
        syscall: 'connect',
        address: '169.254.169.254',
        port: 80,
        message: 'connect ENETUNREACH 169.254.169.254:80' } } }
我的代码非常简单

const http = require("http")
const aws = require('aws-sdk')
const JSON5 = require('json5')
const serviceProvider = aws.CognitoIdentityServiceProvider

aws.config.update({region : 'us-east-2'})
var service = new serviceProvider()


function authorizeUser(username, password){
    service.initiateAuth({
        AuthFlow: 'USER_PASSWORD_AUTH', 
        ClientId: 'placeholder', 
        AuthParameters: {
          'USERNAME': username,
          'PASSWORD': password
        },
    },
    function(error, data){
        if(error){
            console.log(error)
        }
        else if(data){
            console.log(data)
        }
    })

}
为什么这个函数在不需要凭据的时候却要求凭据?如果它需要凭证,它需要哪些凭证,我如何提供凭证

编辑:这篇文章解决了我的问题。不过,我仍然希望得到一个答案,说明为什么这样做有效

我所做的只是修改了一行代码

aws.config.update({region : 'us-east-2', accessKeyId: 'anything', secretAccessKey: 'anything'})

您是否在accessKeyId和secretAccessKey中都添加了“任何内容”,或者您是否添加了IAM用户的实际访问和密钥?我在凭据中添加了“任何内容”。我不知道为什么或者如何让它工作,但我想猜测是aws魔法的一部分。我在编辑中添加的帖子解释了这一点。他们所说的是,如果禁用对池的未经授权访问,则必须在凭据字段中提供占位符。这似乎是sdk开发人员的疏忽,sdk开发人员在执行任何其他操作之前先验证配置。只要它不是空的,你在里面放什么都没关系。事实上,它看起来是这样的。更重要的是,另一个帖子是在2016年5月被问到的。这意味着这已经保持了近3年的不变。您是否在accessKeyId和secretAccessKey中都添加了“任何内容”,或者您是否添加了IAM用户的真实访问和密钥?我在凭据中添加了“任何内容”。我不知道为什么或者如何让它工作,但我想猜测是aws魔法的一部分。我在编辑中添加的帖子解释了这一点。他们所说的是,如果禁用对池的未经授权访问,则必须在凭据字段中提供占位符。这似乎是sdk开发人员的疏忽,sdk开发人员在执行任何其他操作之前先验证配置。只要它不是空的,你在里面放什么都没关系。事实上,它看起来是这样的。更重要的是,另一个帖子是在2016年5月被问到的。这意味着这一点在近3年来一直保持不变。