197 lines
5.6 KiB
TypeScript
197 lines
5.6 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import type { AppSyncAuthorizationType } from './auth-config';
|
|
import type { Code } from './code';
|
|
import type { AppSyncBackedDataSource } from './data-source-common';
|
|
import { LambdaInvokeType } from './data-source-common';
|
|
import type { IEventApi } from './eventapi';
|
|
import type { IGrantable } from '../../aws-iam';
|
|
import type { IResource } from '../../core';
|
|
import { Resource } from '../../core';
|
|
import type { IChannelNamespaceRef, ChannelNamespaceReference } from '../../interfaces/generated/aws-appsync-interfaces.generated';
|
|
/**
|
|
* An AppSync channel namespace
|
|
*/
|
|
export interface IChannelNamespace extends IResource, IChannelNamespaceRef {
|
|
/**
|
|
* The ARN of the AppSync channel namespace
|
|
*
|
|
* @attribute
|
|
*/
|
|
readonly channelNamespaceArn: string;
|
|
}
|
|
/**
|
|
* Authorization configuration for the Channel Namespace
|
|
*/
|
|
export interface NamespaceAuthConfig {
|
|
/**
|
|
* The publish auth modes for this Event Api
|
|
* @default - API Key authorization
|
|
*/
|
|
readonly publishAuthModeTypes?: AppSyncAuthorizationType[];
|
|
/**
|
|
* The subscribe auth modes for this Event Api
|
|
* @default - API Key authorization
|
|
*/
|
|
readonly subscribeAuthModeTypes?: AppSyncAuthorizationType[];
|
|
}
|
|
/**
|
|
* Enumerated type for the handler behavior for a channel namespace
|
|
*/
|
|
export declare enum HandlerBehavior {
|
|
/**
|
|
* Code handler
|
|
*/
|
|
CODE = "CODE",
|
|
/**
|
|
* Direct integration handler
|
|
*/
|
|
DIRECT = "DIRECT"
|
|
}
|
|
/**
|
|
* Handler configuration construct for onPublish and onSubscribe
|
|
*/
|
|
export interface HandlerConfig {
|
|
/**
|
|
* If the Event Handler should invoke the data source directly
|
|
*
|
|
* @default - false
|
|
*/
|
|
readonly direct?: boolean;
|
|
/**
|
|
* The Event Handler data source
|
|
*
|
|
* @default - no data source is used
|
|
*/
|
|
readonly dataSource?: AppSyncBackedDataSource;
|
|
/**
|
|
* The Lambda invocation type for direct integrations
|
|
*
|
|
* @default - LambdaInvokeType.REQUEST_RESPONSE
|
|
*/
|
|
readonly lambdaInvokeType?: LambdaInvokeType;
|
|
}
|
|
/**
|
|
* the base properties for a channel namespace
|
|
*/
|
|
export interface BaseChannelNamespaceProps {
|
|
/**
|
|
* the name of the channel namespace
|
|
*
|
|
* @default - the construct's id will be used
|
|
*/
|
|
readonly channelNamespaceName?: string;
|
|
/**
|
|
* The Event Handler code
|
|
*
|
|
* @default - no code is used
|
|
*/
|
|
readonly code?: Code;
|
|
/**
|
|
* onPublish handler config
|
|
*
|
|
* @default - no handler config
|
|
*/
|
|
readonly publishHandlerConfig?: HandlerConfig;
|
|
/**
|
|
* onSubscribe handler config
|
|
*
|
|
* @default - no handler config
|
|
*/
|
|
readonly subscribeHandlerConfig?: HandlerConfig;
|
|
/**
|
|
* Authorization config for channel namespace
|
|
*
|
|
* @default - defaults to Event API default auth config
|
|
*/
|
|
readonly authorizationConfig?: NamespaceAuthConfig;
|
|
}
|
|
/**
|
|
* Additional property for an AppSync channel namespace for an Event API reference
|
|
*/
|
|
export interface ChannelNamespaceProps extends BaseChannelNamespaceProps {
|
|
/**
|
|
* The API this channel namespace is associated with
|
|
*/
|
|
readonly api: IEventApi;
|
|
}
|
|
/**
|
|
* Option configuration for channel namespace
|
|
*/
|
|
export interface ChannelNamespaceOptions {
|
|
/**
|
|
* The Channel Namespace name
|
|
*
|
|
* @default - the construct's id will be used
|
|
*/
|
|
readonly channelNamespaceName?: string;
|
|
/**
|
|
* The Event Handler code
|
|
*
|
|
* @default - no code is used
|
|
*/
|
|
readonly code?: Code;
|
|
/**
|
|
* onPublish handler config
|
|
*
|
|
* @default - no handler config
|
|
*/
|
|
readonly publishHandlerConfig?: HandlerConfig;
|
|
/**
|
|
* onSubscribe handler config
|
|
*
|
|
* @default - no handler config
|
|
*/
|
|
readonly subscribeHandlerConfig?: HandlerConfig;
|
|
/**
|
|
* Authorization config for channel namespace
|
|
*
|
|
* @default - defaults to Event API default auth config
|
|
*/
|
|
readonly authorizationConfig?: NamespaceAuthConfig;
|
|
}
|
|
/**
|
|
* A Channel Namespace
|
|
*/
|
|
export declare class ChannelNamespace extends Resource implements IChannelNamespace {
|
|
/** Uniquely identifies this class. */
|
|
static readonly PROPERTY_INJECTION_ID: string;
|
|
/**
|
|
* Use an existing channel namespace by ARN
|
|
*/
|
|
static fromChannelNamespaceArn(scope: Construct, id: string, channelNamespaceArn: string): IChannelNamespace;
|
|
/**
|
|
* the ARN of the channel namespace
|
|
*/
|
|
readonly channelNamespaceArn: string;
|
|
private channelNamespace;
|
|
private api;
|
|
constructor(scope: Construct, id: string, props: ChannelNamespaceProps);
|
|
/**
|
|
* Adds an IAM policy statement for EventSubscribe access to this channel namespace to an IAM
|
|
* principal's policy.
|
|
* [disable-awslint:no-grants]
|
|
*
|
|
* @param grantee The principal
|
|
*/
|
|
grantSubscribe(grantee: IGrantable): import("../../aws-iam").Grant;
|
|
/**
|
|
* Adds an IAM policy statement for EventPublish access to this channel namespace to an IAM
|
|
* principal's policy.
|
|
* [disable-awslint:no-grants]
|
|
*
|
|
* @param grantee The principal
|
|
*/
|
|
grantPublish(grantee: IGrantable): import("../../aws-iam").Grant;
|
|
/**
|
|
* Adds an IAM policy statement for EventPublish and EventSubscribe access to this channel namespace to an IAM
|
|
* principal's policy.
|
|
* [disable-awslint:no-grants]
|
|
*
|
|
* @param grantee The principal
|
|
*/
|
|
grantPublishAndSubscribe(grantee: IGrantable): import("../../aws-iam").Grant;
|
|
private validateAuthorizationConfig;
|
|
private validateHandlerConfig;
|
|
get channelNamespaceRef(): ChannelNamespaceReference;
|
|
}
|