Serverless Framework игнорирует блок «authorizer» в настройке лямбда-прокси - PullRequest
1 голос
/ 03 октября 2019

У нас есть 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, или с этой строкой вообще отсутствующей. Результат одинаков во всех случаях.

Я получил , чтобы заставить это работать, вручную выбрав авторизатор через консоль, но мы пытаемся устранить эти ручные шаги.

Чего нам здесь не хватает?

1 Ответ

1 голос
/ 03 октября 2019

На первый взгляд кажется, что отступ в файле serverless.yml отключен. Можете ли вы повторить попытку с вкладкой под элементом массива http?

Кроме того, вам нужно будет удалить сокращение для метода и пути и вместо этого использовать их отдельно. Фрагмент ниже должен работать:

    events:
      - http:
          method: ANY
          path: /
          integration: lambda-proxy
          authorizer:
            type: COGNITO_USER_POOLS
            authorizerId:
              Ref: CognitoUserPoolAuthorizer
      - http:
          method: ANY
          path: /{proxy+}
          integration: lambda-proxy
          authorizer:
            arn: ${self:custom.userPools.arnBase}/${self:custom.userPools.ids.${self:custom.stage}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...