Node.js 信息:';配置';中缺少凭据;,在initiateAuth()中,我缺少哪些凭据?
我试图在我的项目中为用户身份验证设置基本函数,但当我使用aws sdk函数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
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年来一直保持不变。