aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
175 lines (174 loc) • 5.67 kB
TypeScript
import { Construct } from 'constructs';
import { CfnApiKey } from './appsync.generated';
import { IUserPool } from '../../aws-cognito';
import { IFunction } from '../../aws-lambda';
import { Duration, Expiration } from '../../core';
/**
* Auth provider settings for AppSync Event APIs
*
* @see https://docs.aws.amazon.com/appsync/latest/eventapi/configure-event-api-auth.html
*/
export interface AppSyncAuthProvider {
/**
* One of possible authorization types AppSync supports
*
* @default - `AuthorizationType.API_KEY`
*/
readonly authorizationType: AppSyncAuthorizationType;
/**
* If authorizationType is `AuthorizationType.USER_POOL`, this option is required.
* @default - none
*/
readonly cognitoConfig?: AppSyncCognitoConfig;
/**
* If authorizationType is `AuthorizationType.API_KEY`, this option can be configured.
* @default - name: 'DefaultAPIKey'
*/
readonly apiKeyConfig?: AppSyncApiKeyConfig;
/**
* If authorizationType is `AuthorizationType.OIDC`, this option is required.
* @default - none
*/
readonly openIdConnectConfig?: AppSyncOpenIdConnectConfig;
/**
* If authorizationType is `AuthorizationType.LAMBDA`, this option is required.
* @default - none
*/
readonly lambdaAuthorizerConfig?: AppSyncLambdaAuthorizerConfig;
}
/**
* enum with all possible values for AppSync authorization type
*/
export declare enum AppSyncAuthorizationType {
/**
* API Key authorization type
*/
API_KEY = "API_KEY",
/**
* AWS IAM authorization type. Can be used with Cognito Identity Pool federated credentials
*/
IAM = "AWS_IAM",
/**
* Cognito User Pool authorization type
*/
USER_POOL = "AMAZON_COGNITO_USER_POOLS",
/**
* OpenID Connect authorization type
*/
OIDC = "OPENID_CONNECT",
/**
* Lambda authorization type
*/
LAMBDA = "AWS_LAMBDA"
}
/**
* Configuration for Cognito user-pools in AppSync for Api
*/
export interface AppSyncCognitoConfig {
/**
* The Cognito user pool to use as identity source
*/
readonly userPool: IUserPool;
/**
* the optional app id regex
*
* @default - None
*/
readonly appIdClientRegex?: string;
}
/**
* Configuration for API Key authorization in AppSync
*/
export interface AppSyncApiKeyConfig {
/**
* Unique name of the API Key
* @default - 'DefaultAPIKey'
*/
readonly name?: string;
/**
* Description of API key
* @default - 'Default API Key created by CDK'
*/
readonly description?: string;
/**
* The time from creation time after which the API key expires.
* It must be a minimum of 1 day and a maximum of 365 days from date of creation.
* Rounded down to the nearest hour.
*
* @default - 7 days rounded down to nearest hour
*/
readonly expires?: Expiration;
}
/**
* Configuration for OpenID Connect authorization in AppSync
*/
export interface AppSyncOpenIdConnectConfig {
/**
* The number of milliseconds an OIDC token is valid after being authenticated by OIDC provider.
* `auth_time` claim in OIDC token is required for this validation to work.
* @default - no validation
*/
readonly tokenExpiryFromAuth?: number;
/**
* The number of milliseconds an OIDC token is valid after being issued to a user.
* This validation uses `iat` claim of OIDC token.
* @default - no validation
*/
readonly tokenExpiryFromIssue?: number;
/**
* The client identifier of the Relying party at the OpenID identity provider.
* A regular expression can be specified so AppSync can validate against multiple client identifiers at a time.
* @example - 'ABCD|CDEF' // where ABCD and CDEF are two different clientId
* @default - * (All)
*/
readonly clientId?: string;
/**
* The issuer for the OIDC configuration. The issuer returned by discovery must exactly match the value of `iss` in the OIDC token.
*/
readonly oidcProvider: string;
}
/**
* Configuration for Lambda authorization in AppSync. Note that you can only have a single AWS Lambda function configured to authorize your API.
*/
export interface AppSyncLambdaAuthorizerConfig {
/**
* The authorizer lambda function.
*
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html
*/
readonly handler: IFunction;
/**
* How long the results are cached.
* Disable caching by setting this to 0.
*
* @default Duration.minutes(5)
*/
readonly resultsCacheTtl?: Duration;
/**
* A regular expression for validation of tokens before the Lambda function is called.
*
* @default - no regex filter will be applied.
*/
readonly validationRegex?: string;
}
/**
* Exposes methods for defining authorization config for AppSync APIs
*/
export interface IAppSyncAuthConfig {
/**
* Set up OIDC Authorization configuration for AppSync APIs
*/
setupOpenIdConnectConfig(config?: AppSyncOpenIdConnectConfig): any;
/**
* Set up Cognito Authorization configuration for AppSync APIs
*/
setupCognitoConfig(config?: AppSyncCognitoConfig): any;
/**
* Set up Lambda Authorization configuration AppSync APIs
*/
setupLambdaAuthorizerConfig(config?: AppSyncLambdaAuthorizerConfig): any;
}
/**
* Create an API Key for GraphQL APIs and Event APIs
*/
export declare function createAPIKey(scope: Construct, apiId: string, config?: AppSyncApiKeyConfig): CfnApiKey;