aws без сервера - экспорт выходного значения для Cognito Authorizer - PullRequest
0 голосов
/ 19 января 2020

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

Пытаюсь запросить не экспортированная переменная из CloudFormation. Имя стека: "myApp-services-test" Запрошенная переменная: "ExtApiGatewayAuthorizer-test".

Вот мой стек, в котором определен и экспортирован авторизатор:

    CognitoUserPool:
  Type: AWS::Cognito::UserPool
  Properties:
    # Generate a name based on the stage
    UserPoolName: ${self:provider.stage}-user-pool
    # Set email as an alias
    UsernameAttributes:
      - email
    AutoVerifiedAttributes:
      - email

    ApiGatewayAuthorizer: 
  Type: AWS::ApiGateway::Authorizer
  Properties: 
    Name: CognitoAuthorizer
    Type: COGNITO_USER_POOLS
    IdentitySource: method.request.header.Authorization
    RestApiId: { "Ref": "ProxyApi" }
    ProviderARNs: 
      - Fn::GetAtt:
          - CognitoUserPool
          - Arn

    ApiGatewayAuthorizerId:
  Value:
    Ref: ApiGatewayAuthorizer
  Export:
    Name: ExtApiGatewayAuthorizer-${self:provider.stage}

this успешно экспортируется, поскольку я вижу его в списке экспорта стека с моей консоли aws.

Я пытаюсь ссылаться на него в другом стеке следующим образом:

  myFunction:
handler: handler.myFunction
events:
  - http:
      path: /{userID}
      method: put
      cors: true
      authorizer:
        type: COGNITO_USER_POOLS
        authorizerId: ${myApp-services-${self:provider.stage}.ExtApiGatewayAuthorizer-${self:provider.stage}}

моя информация env

  Your Environment Information ---------------------------
 Operating System:          darwin
 Node Version:              12.13.1
 Framework Version:         1.60.5
 Plugin Version:            3.2.7
 SDK Version:               2.2.1
 Components Core Version:   1.1.2
 Components CLI Version:    1.4.0

1 Ответ

0 голосов
/ 19 января 2020

Отвечая на мой собственный вопрос

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

заменил это -

authorizerId:${myAppservices-${self:provider.stage}.ExtApiGatewayAuthorizer-${self:provider.stage}}

на -

authorizerId: ${myApp-services-${self:provider.stage}.ApiGatewayAuthorizerId}

...