Инструменты
Настройка
- API-шлюз, управляемый Terraform, определенный с использованием спецификации OpenAPI
- Cognito Authorizer
Я пытаюсь указать Authorizer для метода в моем API. Я могу сделать это с помощью консоли (это довольно хорошо задокументировано):
Задача
Я хочу иметь возможность установить это программно, используя спецификацию OpenAPI. Соответствующая документация от AWS здесь
В нем говорится, что вы можете создать объект Authorizer в спецификации OpenAPI, указав:
securitySchemes:
NameOfCognitoAuthorizer:
type: apiKey
name: Authorization
in: header
x-amazon-apigateway-authtype: cognito_user_pools
x-amazon-apigateway-authorizer:
type: cognito_user_pools
providerARNs:
- 'arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}'
Это работает как ожидалось.
И затем, как только это будет сделано, вы сможете применить Authorizer к методу ресурса следующим образом:
post:
summary: Create a new Item
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/Item'
security:
- NameOfCognitoAuthorizer:
Однако, как только я применяю изменения и проверяю метод post в консоли AWS, я вижу, что Authorizer не был применен к методу API. Кто-нибудь может увидеть, что я сделал неправильно?
Для полноты, мой API создан с использованием terraform:
resource "aws_api_gateway_rest_api" "this" {
name = "MyAPI"
body = "${file("./api-spec.yaml")}"
endpoint_configuration {
types = ["REGIONAL"]
}
}