Troubleshooting CloudFormation Deployment: Missing Authorizer and Routes in API Gateway

0

Hello,

I am encountering issues while deploying a CloudFormation template aimed at setting up AWS Lambda functions alongside an API Gateway HTTP API, which is tied to a Cognito authorizer. Below is the template I am utilizing:

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: A template for deploying all the Lambdas.

Parameters:
  Environment:
    Description: Environment to deploy to.
    Type: String
    AllowedValues:
      - dev
      - stg
      - prd

Mappings:
  Cognito:
    UserPoolId:
      dev: ""
      stg: ""
      prd: ""
    UserPoolArn:
      dev: ""
      stg: ""
      prd: ""
    UserPoolClientId:
      dev: ""
      stg: ""
      prd: ""
    UserPoolIssuer:
      dev: ""
      stg: ""
      prd: ""

Globals: ...

Resources:
  APIMapping:
    Type: AWS::ApiGatewayV2::ApiMapping
    Properties:
      DomainName:
        Fn::ImportValue: !Sub ${Environment}-backend-api-domain
      ApiId: !Ref HttpApi
      Stage: !Ref Environment

  HttpApi:
    Type: AWS::Serverless::HttpApi
    Properties:
      StageName: !Ref Environment
      CorsConfiguration:
        AllowMethods: '*'
        AllowHeaders: '*'
        AllowOrigins: '*'
      Auth:
        Authorizers:
          BasicAuthorizer:
            IdentitySource: "$request.header.Authorization"
            JwtConfiguration:
              issuer: !FindInMap [Cognito, UserPoolIssuer, !Ref Environment]
              audience: !FindInMap [Cognito, UserPoolClientId, !Ref Environment]

  MyLambdaRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub ${Environment}-backend-my-lambda-role
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action:
              - sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
      Policies: ...

  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${Environment}-backend-my-lambda-function
      Role: !GetAtt MyLambdaRole.Arn
      CodeUri: ./../.build/package.zip
      Handler: ...
      Timeout: 29
      MemorySize: 512
      Events:
        Event:
          Type: HttpApi
          Properties:
            ApiId: !Ref HttpApi
            Method: GET
            Path: /some-path
            Auth:
              Authorizer: BasicAuthorizer
...

Post-deployment, I am unable to locate the Authorizer within the AWS Console, and the routes appear to be missing as well. Although I can find the integrations to the Lambdas under the "Integration -> Manage Integrations" tab, it seems like they are not attached to the gateway. Additionally, the CORS settings from the template do not reflect in the setup.

I have been grappling with this issue for several days and any guidance to resolve these problems would be immensely appreciated.

Thank you in advance!

답변 없음

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인