У нас есть serverless.yml
, который создает лямбда-прокси в APIGateway.
Я видел несколько способов присоединить авторизатор пула пользователей cognito к лямбда-прокси, но ни один из них не работает. В любом случае, результат заключается в том, что на Proxy или Proxy + не установлена аутентификация. (Например, в консоли API Gateway «Auth» всегда читает «NONE».)
Пример:
events:
- http: ANY /
integration: lambda-proxy
authorizer:
type: COGNITO_USER_POOLS
authorizerId:
Ref: CognitoUserPoolAuthorizer
- http: ANY {proxy+}
integration: lambda-proxy
authorizer:
arn: ${self:custom.userPools.arnBase}/${self:custom.userPools.ids.${self:custom.stage}}
# The above results in the format: "arn:aws:cognito-idp:us-west-2:<account_id>:userpool/us-west-2_<user_pool_id>"
Вы можете видеть выше, что я пытаюсь двумя разными способамивыполнить ту же задачу. (Давайте попробуем бросить науку в стену и посмотрим, что прилипает.) Оба метода документированы в разных местах безсерверной платформой , но ни один не документирован в отношении лямбда-прокси, поэтому я не уверен, что естьнедокументированное различие.
В первом методе (с использованием Ref
для ресурса) ресурс создан правильно, но к конечной точке не присоединен ни один auth. (Я не включил здесь блок ресурсов, потому что он работает, как и ожидалось.) Второй метод имеет тот же эффект (но не создается авторизатор).
Наша версия безсерверной платформы - 1.52, что соответствуеттребование указано в этом другом сообщении SO .
Я также пытался с integration
, установленным на lambda
, или с этой строкой вообще отсутствующей. Результат одинаков во всех случаях.
Я получил , чтобы заставить это работать, вручную выбрав авторизатор через консоль, но мы пытаемся устранить эти ручные шаги.
Чего нам здесь не хватает?