![](/img/trans.png)
[英]How to mock AWS Cognito CognitoIdentityServiceProvider with Jest?
[英]Unable to use CognitoIdentityServiceProvider from AWS SDK
我目前正在使用amazon-cognito-identity-js
和CognitoIdentityServiceProvider
并关注这篇文章https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html
调用listUsersInGroup
function 时,我正在使用accessKeyId
和secretAccessKey
初始化this.cognitoProvider
有没有一种方法可以在不指定accessKeyId
和secretAccessKey
CognitoIdentityServiceProvider
我不想指定这些密钥,因为它包含敏感信息
这行得通
import { Config, CognitoIdentityCredentials, CognitoIdentityServiceProvider } from "aws-sdk";
export default class CognitoAuth {
configure(config) {
if (typeof config !== 'object' || Array.isArray(config)) {
throw new Error('[CognitoAuth error] valid option object required')
}
this.userPool = new CognitoUserPool({
UserPoolId: config.IDENTITY_POOL_ID,
ClientId: config.CLIENT_ID
})
this.cognitoProvider = new CognitoIdentityServiceProvider({
region: config.REGION,
accessKeyId: config.ACCESS_KEY_ID,
secretAccessKey: config.SECRET_ACCESS_KEY
});
Config.region = config.REGION
Config.credentials = new CognitoIdentityCredentials({
IdentityPoolId: config.IDENTITY_POOL_ID
})
this.options = config
}
getUsersInGroup(context, cb) {
var params = {
GroupName: context.group,
UserPoolId: this.options.IDENTITY_POOL_ID
};
this.cognitoProvider.listUsersInGroup(params, (err, data) => {
if (err) console.log(err, err.stack)
else cb(null, data.Users)
})
}
}
这行不通
this.cognitoProvider = new AWS.CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' })
但我收到错误ConfigError: Missing region in config
根据您链接的文档页面,调用listUsersInGroup
需要开发人员凭据,因此必须以某种方式提供这些凭据。
如果您查看Node.js 中的设置凭据,可以通过不同的方式传递它们,例如,如果在 Lambda(或 EC2 实例)上运行此 function,它将使用 Lambda(或 EC2 实例)角色权限来调用该方法并且无需传递凭据。 其他选项使用环境变量 ( AWS_ACCESS_KEY_ID
/ AWS_SECRET_ACCESS_KEY
) 或共享凭证文件。
但是,您的直接问题似乎与该地区有关。 在工作块中它通过region: config.REGION,
传递时,它在非工作块中丢失。 您可以通过在实例化 CognitoIdentityServiceProvider 时传递region
参数来解决此问题:
this.cognitoProvider = new AWS.CognitoIdentityServiceProvider({
apiVersion: '2016-04-18',
region: 'us-east-1' // use your region
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.