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!