![](/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.