Skip to content
GitHubXDiscord

Authorizer

The Authorizer resource allows you to manage AWS ApiGateway Authorizers which are used to control access to your API Gateway methods.

Create a basic Authorizer with required properties and a common optional property.

import AWS from "alchemy/aws/control";
const apiGatewayAuthorizer = await AWS.ApiGateway.Authorizer("myAuthorizer", {
RestApiId: "myApiId",
Name: "MyAuthorizer",
Type: "TOKEN",
IdentitySource: "method.request.header.Authorization"
});

Configure an Authorizer with additional options like credentials and result TTL.

const advancedAuthorizer = await AWS.ApiGateway.Authorizer("advancedAuthorizer", {
RestApiId: "myApiId",
Name: "AdvancedAuthorizer",
Type: "TOKEN",
AuthorizerUri: "arn:aws:lambda:us-west-2:123456789012:function:myAuthFunction",
AuthorizerCredentials: "arn:aws:iam::123456789012:role/myAuthRole",
AuthorizerResultTtlInSeconds: 300,
IdentitySource: "method.request.header.Authorization"
});

Create an Authorizer using AWS Cognito for authentication.

const cognitoAuthorizer = await AWS.ApiGateway.Authorizer("cognitoAuthorizer", {
RestApiId: "myApiId",
Name: "CognitoAuthorizer",
Type: "COGNITO_USER_POOLS",
ProviderARNs: [
"arn:aws:cognito:us-west-2:123456789012:userpool/us-west-2_aBcDeFgHi"
]
});

Set up a custom Lambda function as an Authorizer.

const lambdaAuthorizer = await AWS.ApiGateway.Authorizer("lambdaAuthorizer", {
RestApiId: "myApiId",
Name: "LambdaAuthorizer",
Type: "REQUEST",
AuthorizerUri: "arn:aws:lambda:us-west-2:123456789012:function:myCustomAuthFunction",
AuthorizerCredentials: "arn:aws:iam::123456789012:role/myLambdaAuthRole",
IdentitySource: "method.request.header.Authorization",
IdentityValidationExpression: "^[A-Za-z0-9-._~+/]+=*$"
});