import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class DomainEndpointOptions { CustomEndpoint ? : Value < string > ; CustomEndpointCertificateArn ? : Value < string > ; CustomEndpointEnabled ? : Value < boolean > ; EnforceHTTPS ? : Value < boolean > ; TLSSecurityPolicy ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class NodeToNodeEncryptionOptions { Enabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ElasticsearchClusterConfig { DedicatedMasterCount ? : Value < number > ; DedicatedMasterEnabled ? : Value < boolean > ; DedicatedMasterType ? : Value < string > ; InstanceCount ? : Value < number > ; InstanceType ? : Value < string > ; WarmCount ? : Value < number > ; WarmEnabled ? : Value < boolean > ; WarmType ? : Value < string > ; ZoneAwarenessConfig ? : ZoneAwarenessConfig ; ZoneAwarenessEnabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AdvancedSecurityOptionsInput { Enabled ? : Value < boolean > ; InternalUserDatabaseEnabled ? : Value < boolean > ; MasterUserOptions ? : MasterUserOptions ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ZoneAwarenessConfig { AvailabilityZoneCount ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SnapshotOptions { AutomatedSnapshotStartHour ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CognitoOptions { Enabled ? : Value < boolean > ; IdentityPoolId ? : Value < string > ; RoleArn ? : Value < string > ; UserPoolId ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class VPCOptions { SecurityGroupIds ? : List < Value < string > > ; SubnetIds ? : List < Value < string > > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MasterUserOptions { MasterUserARN ? : Value < string > ; MasterUserName ? : Value < string > ; MasterUserPassword ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class LogPublishingOption { CloudWatchLogsLogGroupArn ? : Value < string > ; Enabled ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EBSOptions { EBSEnabled ? : Value < boolean > ; Iops ? : Value < number > ; VolumeSize ? : Value < number > ; VolumeType ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EncryptionAtRestOptions { Enabled ? : Value < boolean > ; KmsKeyId ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface DomainProperties { AccessPolicies ? : { [ key ] : any ; } ; AdvancedOptions ? : { [ key ] : Value < string > ; } ; AdvancedSecurityOptions ? : AdvancedSecurityOptionsInput ; CognitoOptions ? : CognitoOptions ; DomainEndpointOptions ? : DomainEndpointOptions ; DomainName ? : Value < string > ; EBSOptions ? : EBSOptions ; ElasticsearchClusterConfig ? : ElasticsearchClusterConfig ; ElasticsearchVersion ? : Value < string > ; EncryptionAtRestOptions ? : EncryptionAtRestOptions ; LogPublishingOptions ? : { [ key ] : LogPublishingOption ; } ; NodeToNodeEncryptionOptions ? : NodeToNodeEncryptionOptions ; SnapshotOptions ? : SnapshotOptions ; Tags ? : List < ResourceTag > ; VPCOptions ? : VPCOptions ; } export default class Domain extends ResourceBase < DomainProperties > { static DomainEndpointOptions = DomainEndpointOptions ; static NodeToNodeEncryptionOptions = NodeToNodeEncryptionOptions ; static ElasticsearchClusterConfig = ElasticsearchClusterConfig ; static AdvancedSecurityOptionsInput = AdvancedSecurityOptionsInput ; static ZoneAwarenessConfig = ZoneAwarenessConfig ; static SnapshotOptions = SnapshotOptions ; static CognitoOptions = CognitoOptions ; static VPCOptions = VPCOptions ; static MasterUserOptions = MasterUserOptions ; static LogPublishingOption = LogPublishingOption ; static EBSOptions = EBSOptions ; static EncryptionAtRestOptions = EncryptionAtRestOptions ; constructor ( properties ? ) { super ( 'AWS::Elasticsearch::Domain' , properties || { } ) ; } }