aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
142 lines (141 loc) • 4.08 kB
TypeScript
import { Construct } from 'constructs';
import { IHttpApi } from './api';
import { IHttpRouteAuthorizer } from './authorizer';
import { HttpRouteIntegration } from './integration';
import * as iam from '../../../aws-iam';
import { Resource } from '../../../core';
import { IRoute } from '../common';
/**
* Represents a Route for an HTTP API.
*/
export interface IHttpRoute extends IRoute {
/**
* The HTTP API associated with this route.
*/
readonly httpApi: IHttpApi;
/**
* Returns the path component of this HTTP route, `undefined` if the path is the catch-all route.
*/
readonly path?: string;
/**
* Returns the arn of the route.
* @attribute
*/
readonly routeArn: string;
/**
* Grant access to invoke the route.
* This method requires that the authorizer of the route is undefined or is
* an `HttpIamAuthorizer`.
*/
grantInvoke(grantee: iam.IGrantable, options?: GrantInvokeOptions): iam.Grant;
}
/**
* Options for granting invoke access.
*/
export interface GrantInvokeOptions {
/**
* The HTTP methods to allow.
* @default - the HttpMethod of the route
*/
readonly httpMethods?: HttpMethod[];
}
/**
* Supported HTTP methods
*/
export declare enum HttpMethod {
/** HTTP ANY */
ANY = "ANY",
/** HTTP DELETE */
DELETE = "DELETE",
/** HTTP GET */
GET = "GET",
/** HTTP HEAD */
HEAD = "HEAD",
/** HTTP OPTIONS */
OPTIONS = "OPTIONS",
/** HTTP PATCH */
PATCH = "PATCH",
/** HTTP POST */
POST = "POST",
/** HTTP PUT */
PUT = "PUT"
}
/**
* HTTP route in APIGateway is a combination of the HTTP method and the path component.
* This class models that combination.
*/
export declare class HttpRouteKey {
/**
* The catch-all route of the API, i.e., when no other routes match
*/
static readonly DEFAULT: HttpRouteKey;
/**
* Create a route key with the combination of the path and the method.
* @param method default is 'ANY'
*/
static with(path: string, method?: HttpMethod): HttpRouteKey;
/**
* The method of the route
*/
readonly method: HttpMethod;
/**
* The key to the RouteKey as recognized by APIGateway
*/
readonly key: string;
/**
* The path part of this RouteKey.
* Returns `undefined` when `RouteKey.DEFAULT` is used.
*/
readonly path?: string;
private constructor();
}
/**
* Options used when configuring multiple routes, at once.
* The options here are the ones that would be configured for all being set up.
*/
export interface BatchHttpRouteOptions {
/**
* The integration to be configured on this route.
*/
readonly integration: HttpRouteIntegration;
}
/**
* Properties to initialize a new Route
*/
export interface HttpRouteProps extends BatchHttpRouteOptions {
/**
* the API the route is associated with
*/
readonly httpApi: IHttpApi;
/**
* The key to this route. This is a combination of an HTTP method and an HTTP path.
*/
readonly routeKey: HttpRouteKey;
/**
* Authorizer for a WebSocket API or an HTTP API.
* @default - No authorizer
*/
readonly authorizer?: IHttpRouteAuthorizer;
/**
* The list of OIDC scopes to include in the authorization.
*
* These scopes will be merged with the scopes from the attached authorizer
* @default - no additional authorization scopes
*/
readonly authorizationScopes?: string[];
}
/**
* Route class that creates the Route for API Gateway HTTP API
* @resource AWS::ApiGatewayV2::Route
*/
export declare class HttpRoute extends Resource implements IHttpRoute {
readonly routeId: string;
readonly httpApi: IHttpApi;
readonly path?: string;
readonly routeArn: string;
private readonly method;
private readonly authBindResult?;
constructor(scope: Construct, id: string, props: HttpRouteProps);
private produceRouteArn;
grantInvoke(grantee: iam.IGrantable, options?: GrantInvokeOptions): iam.Grant;
}