我正在尝试在项目中设置用于用户身份验证的基本功能,但是当我使用aws-sdk函数initiateAuth()
请求auth令牌时,它告诉我我的配置对象中缺少凭据。我设法在没有任何凭据的情况下设置了用户创建和确认。更重要的是,文档并未明确说明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'})
User Pools for Amazon Cognito - CredentialsError: Missing credentials in config