Авторизатор пула пользователей Cognito, определенный в openapi без жестко закодированных значений

#amazon-web-services #aws-api-gateway #amazon-cognito #openapi #aws-jwt-authorizer

Вопрос:

У меня есть ресурс API-шлюза Rest Api, определенный с помощью этого шаблона:

 AWSTemplateFormatVersion: '2010-09-09'
Description: "Api gateway"
Resources:
  ApiGateway:
    Type: "AWS::ApiGateway::RestApi"
    Properties:
      BodyS3Location: "./openapi-spec.yaml"
 

И содержание openapi-spec.yaml (на основе этого примера) является:

 openapi: "3.0.2"
info:
  title: SampleApi
paths:
  /test:
    get:
      summary: Test
      responses:
        "200":
          description: Ok
      security:
        - UserPool: [ ]
      x-amazon-apigateway-integration:
        # ....

components:
  securitySchemes:
    UserPool:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools
      x-amazon-apigateway-authorizer:
        type: cognito_user_pools
        providerARNs:
          ### THIS VALUE ###
          - "arn:aws:cognito-idp:eu-west-1:123456789012:userpool/eu-west-1_abcd12345"
 

Я хотел бы иметь возможность развертывать этот шаблон в нескольких средах/учетных записях, и наличие этого жестко заданного поставщика ограничивает это. Поэтому мои вопросы таковы:

Как значения для providerARNs поля могут передаваться динамически?

Если это невозможно сделать, то есть ли какие-либо обходные пути для этого, чтобы мне не нужно было жестко кодировать имена поставщиков здесь?

Примечание: Уже пытался использовать переменные этапа, и они, похоже, здесь не работают.

Комментарии:

1. Как насчет создания спецификации при развертывании и хранения ее под разными ключами в S3?