import { ICluster } from 'aws-cdk-lib/aws-ecs'; import { ApplicationLoadBalancedFargateService } from 'aws-cdk-lib/aws-ecs-patterns'; import { Group, IGroup, IUser, ManagedPolicy, Policy } from 'aws-cdk-lib/aws-iam'; import BaseModule, { BaseDefaults, BaseSettings } from './base-module'; import { TaskEnvironment } from '../utilities/environment'; import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager'; import { ISecurityGroup, ISubnet, IVpc } from 'aws-cdk-lib/aws-ec2'; import ConvertivBaseStack from '../stacks/base-stack'; import { RetentionDays } from 'aws-cdk-lib/aws-logs'; import { BitbucketODIC, ODICPackageConfig } from './bitbucket-odic'; import { GithubODIC } from './github-odic'; import { Secret } from 'aws-cdk-lib/aws-ecs'; export interface WebServiceSettings extends BaseSettings { name: string; image: string | null; imageArn: string | null; vpc: IVpc; cluster: ICluster; desired: number; containerPort?: number | null; elbPort?: number | null; cpu: number; memory: number; gracePeriod?: number; min?: number | null; max?: number | null; environment?: TaskEnvironment; secrets?: { [key: string]: Secret; }; group?: IGroup; cert: ICertificate; tag?: string; deployUser?: IUser | string; healthPath?: string; logRetention?: RetentionDays; subnets: ISubnet[]; assignPublicIp?: boolean; odic?: ODICPackageConfig; } export interface WebServiceDefaults extends BaseDefaults { name: string; desired: number; containerPort: number; elbPort: number; cpu: number; memory: number; gracePeriod: number; min: number; max: number; environment: TaskEnvironment; tag: string; healthPath: string; logRetention: RetentionDays; } /** * A Fargate service running on an ECS cluster fronted by an application load balancer. */ export declare class WebService extends BaseModule { settings: WebServiceSettings; /** * Define the defaults for the service */ defaults: WebServiceDefaults; /** * Webservice for reuse outside package */ webservice: ApplicationLoadBalancedFargateService; /** * The policy that will allow a deploy user to push code */ deployPolicy: ManagedPolicy; inlineDeployPolicy: Policy; /** * The user group that will hold the users in this stack */ iamGroup: Group; /** * The deploy user that can push code to the repository */ deployUser: IUser; deployODIC: BitbucketODIC | GithubODIC; /** * The service security group */ serviceSecurityGroup: ISecurityGroup; /** * Run the base validator, and then allow the class to * perform additional validation * @param settings */ validate(settings: WebServiceSettings): void; /** * Constructs a new instance of the ApplicationLoadBalancedFargateService class. * * @param scope * @param settings */ constructor(scope: ConvertivBaseStack, settings: WebServiceSettings); }