Получение аутентифицированного пользователя AWSognito с помощью лямбда-триггера после аутентификации
Я использую Amplify с бэкэндом Cognito для аутентификации моих пользователей, по сути, как импл. LDAP. Все это настроено и работает нормально. Пользователи настроены в пользовательском пуле и должным образом аутентифицированы. (Примечание: я использую элементы управления Amplify по умолчанию, поэтому он работает должным образом).
Однако теперь я хочу иметь возможность получать аутентифицированного пользователя и все его данные (включая атрибуты пользователя), чтобы я мог обновить пользователя. В качестве первого шага я пытаюсь зарегистрировать аутентифицированного пользователя в консоли. В конце концов, я буду использовать этот хук для обновления атрибутов пользователя, извлекая некоторые данные из БД для обновления.
Это фрагмент кода, который я пытаюсь использовать
exports.handler = async (event, context, callback) => {
const Amplify = require('@aws-amplify/core')
const Auth = require('@aws-amplify/auth')
console.log("Amplify object: %o", Amplify)
console.log("Auth object: %o", Auth)
Amplify.configure({
Auth: {
identityPoolId: 'XXXX',
region: event.region,
userPoolId: event.userPoolId
}
});
console.log("about to get current user");
Auth.currentAuthenticatedUser().then(user => console.log(user));
console.log("got current user and logged");
}
И вот несколько фрагментов вывода...
INFO Amplify object: {
[__esModule]: true,
Amplify: [Function: Amplify] {
[length]: 0,
[name]: 'Amplify',
[prototype]: Amplify { [constructor]: [Circular] },
register: [Function] {
[length]: 1,
[name]: '',
[prototype]: { [constructor]: [Circular] }
},
configure: [Function] {
[length]: 1,
[name]: '',
[prototype]: { [constructor]: [Circular] }
},
addPluggable: [Function] {
[length]: 1,
[name]: '',
[prototype]: { [constructor]: [Circular] }
},
_components: [
а также
INFO Auth object: {
[__esModule]: true,
Auth: AuthClass {
userPool: null,
user: null,
oAuthFlowInProgress: false,
currentUserCredentials: [Function: bound ] { [length]: 0, [name]: 'bound ' },
и я получаю следующую ошибку:
ERROR Invoke Error
{
"errorType": "TypeError",
"errorMessage": "Amplify.configure is not a function",
"stack": [
"TypeError: Amplify.configure is not a function",
" at Runtime.exports.handler (/var/task/index.js:171:13)",
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
]
}
0 ответов
Ответ на этот вопрос заключается в том, что мне нужно было использовать aws lib в моем package.json. Я включил его, но он недоступен. Дох!
Согласно этой проблеме на github, Amplify нельзя использовать в Node, поскольку это интерфейсная библиотека.