import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class AccessLoggingPolicy { EmitInterval ? : Value < number > ; Enabled ! : Value < boolean > ; S3BucketName ! : Value < string > ; S3BucketPrefix ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class HealthCheck { HealthyThreshold ! : Value < string > ; Interval ! : Value < string > ; Target ! : Value < string > ; Timeout ! : Value < string > ; UnhealthyThreshold ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ConnectionSettings { IdleTimeout ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ConnectionDrainingPolicy { Enabled ! : Value < boolean > ; Timeout ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AppCookieStickinessPolicy { CookieName ! : Value < string > ; PolicyName ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LBCookieStickinessPolicy { CookieExpirationPeriod ? : Value < string > ; PolicyName ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Listeners { InstancePort ! : Value < string > ; InstanceProtocol ? : Value < string > ; LoadBalancerPort ! : Value < string > ; PolicyNames ? : List < Value < string > > ; Protocol ! : Value < string > ; SSLCertificateId ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Policies { Attributes ! : List < { [ key ] : any ; } > ; InstancePorts ? : List < Value < string > > ; LoadBalancerPorts ? : List < Value < string > > ; PolicyName ! : Value < string > ; PolicyType ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface LoadBalancerProperties { AccessLoggingPolicy ? : AccessLoggingPolicy ; AppCookieStickinessPolicy ? : List < AppCookieStickinessPolicy > ; AvailabilityZones ? : List < Value < string > > ; ConnectionDrainingPolicy ? : ConnectionDrainingPolicy ; ConnectionSettings ? : ConnectionSettings ; CrossZone ? : Value < boolean > ; HealthCheck ? : HealthCheck ; Instances ? : List < Value < string > > ; LBCookieStickinessPolicy ? : List < LBCookieStickinessPolicy > ; Listeners : List < Listeners > ; LoadBalancerName ? : Value < string > ; Policies ? : List < Policies > ; Scheme ? : Value < string > ; SecurityGroups ? : List < Value < string > > ; Subnets ? : List < Value < string > > ; Tags ? : List < ResourceTag > ; } export default class LoadBalancer extends ResourceBase < LoadBalancerProperties > { static AccessLoggingPolicy = AccessLoggingPolicy ; static HealthCheck = HealthCheck ; static ConnectionSettings = ConnectionSettings ; static ConnectionDrainingPolicy = ConnectionDrainingPolicy ; static AppCookieStickinessPolicy = AppCookieStickinessPolicy ; static LBCookieStickinessPolicy = LBCookieStickinessPolicy ; static Listeners = Listeners ; static Policies = Policies ; constructor ( properties ) { super ( 'AWS::ElasticLoadBalancing::LoadBalancer' , properties ) ; } }