Получение аутентифицированного пользователя 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, поскольку это интерфейсная библиотека.

Другие вопросы по тегам