// Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// Generated from the CloudFormation resource specification
// Target library: cfnobjects
// See: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html

import * as core from './core'
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html
     */
    export class AccountProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html#cfn-apigateway-account-cloudwatchrolearn
         */
        CloudWatchRoleArn?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html
     */
    export class Account extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AccountProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Account'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Account.RESOURCE_TYPE, logicalId, Account.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html
     */
    export class ApiKeyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html#cfn-apigateway-apigateway-apikey-stagekeys
         */
        StageKeys?: aws.apigateway.ApiKey.StageKeyProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-apikey.html
     */
    export class ApiKey extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApiKeyProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::ApiKey'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ApiKey.RESOURCE_TYPE, logicalId, ApiKey.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html
     */
    export class AuthorizerProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizercredentials
         */
        AuthorizerCredentials?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizerresultttlinseconds
         */
        AuthorizerResultTtlInSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizeruri
         */
        AuthorizerUri?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-identitysource
         */
        IdentitySource?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-identityvalidationexpression
         */
        IdentityValidationExpression?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-providerarns
         */
        ProviderARNs?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-type
         */
        Type?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html
     */
    export class Authorizer extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AuthorizerProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Authorizer'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Authorizer.RESOURCE_TYPE, logicalId, Authorizer.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html
     */
    export class BasePathMappingProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-basepath
         */
        BasePath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-domainname
         */
        DomainName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-restapiid
         */
        RestApiId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html#cfn-apigateway-basepathmapping-stage
         */
        Stage?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-basepathmapping.html
     */
    export class BasePathMapping extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new BasePathMappingProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::BasePathMapping'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(BasePathMapping.RESOURCE_TYPE, logicalId, BasePathMapping.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html
     */
    export class ClientCertificateProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html#cfn-apigateway-clientcertificate-description
         */
        Description?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html
     */
    export class ClientCertificate extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClientCertificateProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::ClientCertificate'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ClientCertificate.RESOURCE_TYPE, logicalId, ClientCertificate.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html
     */
    export class DeploymentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html#cfn-apigateway-deployment-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html#cfn-apigateway-deployment-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html#cfn-apigateway-deployment-stagedescription
         */
        StageDescription?: aws.apigateway.Deployment.StageDescriptionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html#cfn-apigateway-deployment-stagename
         */
        StageName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html
     */
    export class Deployment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DeploymentProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Deployment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Deployment.RESOURCE_TYPE, logicalId, Deployment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html
     */
    export class DocumentationPartProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-location
         */
        Location: aws.apigateway.DocumentationPart.LocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-properties
         */
        Properties: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html#cfn-apigateway-documentationpart-restapiid
         */
        RestApiId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationpart.html
     */
    export class DocumentationPart extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DocumentationPartProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::DocumentationPart'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DocumentationPart.RESOURCE_TYPE, logicalId, DocumentationPart.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html
     */
    export class DocumentationVersionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-documentationversion
         */
        DocumentationVersion: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html#cfn-apigateway-documentationversion-restapiid
         */
        RestApiId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-documentationversion.html
     */
    export class DocumentationVersion extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DocumentationVersionProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::DocumentationVersion'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DocumentationVersion.RESOURCE_TYPE, logicalId, DocumentationVersion.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
     */
    export class DomainNameProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html#cfn-apigateway-domainname-certificatearn
         */
        CertificateArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html#cfn-apigateway-domainname-domainname
         */
        DomainName: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-domainname.html
     */
    export class DomainName extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DomainNameProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::DomainName'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DomainName.RESOURCE_TYPE, logicalId, DomainName.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html
     */
    export class GatewayResponseProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html#cfn-apigateway-gatewayresponse-responseparameters
         */
        ResponseParameters?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html#cfn-apigateway-gatewayresponse-responsetemplates
         */
        ResponseTemplates?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html#cfn-apigateway-gatewayresponse-responsetype
         */
        ResponseType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html#cfn-apigateway-gatewayresponse-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html#cfn-apigateway-gatewayresponse-statuscode
         */
        StatusCode?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-gatewayresponse.html
     */
    export class GatewayResponse extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new GatewayResponseProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::GatewayResponse'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(GatewayResponse.RESOURCE_TYPE, logicalId, GatewayResponse.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html
     */
    export class MethodProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-apikeyrequired
         */
        ApiKeyRequired?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-authorizationtype
         */
        AuthorizationType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-authorizerid
         */
        AuthorizerId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-httpmethod
         */
        HttpMethod: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-integration
         */
        Integration?: aws.apigateway.Method.IntegrationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-methodresponses
         */
        MethodResponses?: aws.apigateway.Method.MethodResponseProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestmodels
         */
        RequestModels?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestparameters
         */
        RequestParameters?: { [key: string]: (boolean | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-resourceid
         */
        ResourceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-restapiid
         */
        RestApiId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html
     */
    export class Method extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new MethodProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Method'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Method.RESOURCE_TYPE, logicalId, Method.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html
     */
    export class ModelProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html#cfn-apigateway-model-contenttype
         */
        ContentType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html#cfn-apigateway-model-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html#cfn-apigateway-model-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html#cfn-apigateway-model-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html#cfn-apigateway-model-schema
         */
        Schema?: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-model.html
     */
    export class Model extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ModelProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Model'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Model.RESOURCE_TYPE, logicalId, Model.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html
     */
    export class RequestValidatorProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-validaterequestbody
         */
        ValidateRequestBody?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html#cfn-apigateway-requestvalidator-validaterequestparameters
         */
        ValidateRequestParameters?: boolean | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-requestvalidator.html
     */
    export class RequestValidator extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RequestValidatorProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::RequestValidator'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(RequestValidator.RESOURCE_TYPE, logicalId, RequestValidator.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html
     */
    export class CfnResourceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html#cfn-apigateway-resource-parentid
         */
        ParentId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html#cfn-apigateway-resource-pathpart
         */
        PathPart: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html#cfn-apigateway-resource-restapiid
         */
        RestApiId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html
     */
    export class Resource extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CfnResourceProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Resource'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Resource.RESOURCE_TYPE, logicalId, Resource.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html
     */
    export class RestApiProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-binarymediatypes
         */
        BinaryMediaTypes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-body
         */
        Body?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-bodys3location
         */
        BodyS3Location?: aws.apigateway.RestApi.S3LocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-clonefrom
         */
        CloneFrom?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-failonwarnings
         */
        FailOnWarnings?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-mode
         */
        Mode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-parameters
         */
        Parameters?: { [key: string]: (string | core.Token) };

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html
     */
    export class RestApi extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RestApiProps();

        /**
         * @cloudformation_attribute RootResourceId
         */
        @core.Resource.attribute('RootResourceId')
        readonly rootResourceId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::RestApi'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(RestApi.RESOURCE_TYPE, logicalId, RestApi.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html
     */
    export class StageProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-cacheclusterenabled
         */
        CacheClusterEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-cacheclustersize
         */
        CacheClusterSize?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-clientcertificateid
         */
        ClientCertificateId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-deploymentid
         */
        DeploymentId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-documentationversion
         */
        DocumentationVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-methodsettings
         */
        MethodSettings?: aws.apigateway.Stage.MethodSettingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-restapiid
         */
        RestApiId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-stagename
         */
        StageName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-variables
         */
        Variables?: { [key: string]: (string | core.Token) };

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html
     */
    export class Stage extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StageProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::Stage'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Stage.RESOURCE_TYPE, logicalId, Stage.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html
     */
    export class UsagePlanProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html#cfn-apigateway-usageplan-apistages
         */
        ApiStages?: aws.apigateway.UsagePlan.ApiStageProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html#cfn-apigateway-usageplan-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html#cfn-apigateway-usageplan-quota
         */
        Quota?: aws.apigateway.UsagePlan.QuotaSettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html#cfn-apigateway-usageplan-throttle
         */
        Throttle?: aws.apigateway.UsagePlan.ThrottleSettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html#cfn-apigateway-usageplan-usageplanname
         */
        UsagePlanName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplan.html
     */
    export class UsagePlan extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UsagePlanProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::UsagePlan'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UsagePlan.RESOURCE_TYPE, logicalId, UsagePlan.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html
     */
    export class UsagePlanKeyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html#cfn-apigateway-usageplankey-keyid
         */
        KeyId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html#cfn-apigateway-usageplankey-keytype
         */
        KeyType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html#cfn-apigateway-usageplankey-usageplanid
         */
        UsagePlanId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-usageplankey.html
     */
    export class UsagePlanKey extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UsagePlanKeyProps();

        static readonly RESOURCE_TYPE = 'AWS::ApiGateway::UsagePlanKey'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UsagePlanKey.RESOURCE_TYPE, logicalId, UsagePlanKey.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.applicationautoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html
     */
    export class ScalableTargetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-maxcapacity
         */
        MaxCapacity: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-mincapacity
         */
        MinCapacity: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-resourceid
         */
        ResourceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-rolearn
         */
        RoleARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-scalabledimension
         */
        ScalableDimension: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html#cfn-applicationautoscaling-scalabletarget-servicenamespace
         */
        ServiceNamespace: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html
     */
    export class ScalableTarget extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ScalableTargetProps();

        static readonly RESOURCE_TYPE = 'AWS::ApplicationAutoScaling::ScalableTarget'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ScalableTarget.RESOURCE_TYPE, logicalId, ScalableTarget.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.applicationautoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html
     */
    export class ScalingPolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policyname
         */
        PolicyName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policytype
         */
        PolicyType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-resourceid
         */
        ResourceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalabledimension
         */
        ScalableDimension?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalingtargetid
         */
        ScalingTargetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-servicenamespace
         */
        ServiceNamespace?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration
         */
        StepScalingPolicyConfiguration?: aws.applicationautoscaling.ScalingPolicy.StepScalingPolicyConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration
         */
        TargetTrackingScalingPolicyConfiguration?: aws.applicationautoscaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html
     */
    export class ScalingPolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ScalingPolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::ApplicationAutoScaling::ScalingPolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ScalingPolicy.RESOURCE_TYPE, logicalId, ScalingPolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.autoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html
     */
    export class AutoScalingGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-availabilityzones
         */
        AvailabilityZones?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-cooldown
         */
        Cooldown?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-desiredcapacity
         */
        DesiredCapacity?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-healthcheckgraceperiod
         */
        HealthCheckGracePeriod?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-healthchecktype
         */
        HealthCheckType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-instanceid
         */
        InstanceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-launchconfigurationname
         */
        LaunchConfigurationName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-loadbalancernames
         */
        LoadBalancerNames?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-maxsize
         */
        MaxSize: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-metricscollection
         */
        MetricsCollection?: aws.autoscaling.AutoScalingGroup.MetricsCollectionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-minsize
         */
        MinSize: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-notificationconfigurations
         */
        NotificationConfigurations?: aws.autoscaling.AutoScalingGroup.NotificationConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-placementgroup
         */
        PlacementGroup?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-tags
         */
        Tags?: aws.autoscaling.AutoScalingGroup.TagPropertyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-targetgrouparns
         */
        TargetGroupARNs?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-termpolicy
         */
        TerminationPolicies?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-vpczoneidentifier
         */
        VPCZoneIdentifier?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html
     */
    export class AutoScalingGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AutoScalingGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::AutoScaling::AutoScalingGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(AutoScalingGroup.RESOURCE_TYPE, logicalId, AutoScalingGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.autoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html
     */
    export class LaunchConfigurationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cf-as-launchconfig-associatepubip
         */
        AssociatePublicIpAddress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-blockdevicemappings
         */
        BlockDeviceMappings?: aws.autoscaling.LaunchConfiguration.BlockDeviceMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-classiclinkvpcid
         */
        ClassicLinkVPCId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-classiclinkvpcsecuritygroups
         */
        ClassicLinkVPCSecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-iaminstanceprofile
         */
        IamInstanceProfile?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-imageid
         */
        ImageId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-instanceid
         */
        InstanceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-instancemonitoring
         */
        InstanceMonitoring?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-kernelid
         */
        KernelId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-keyname
         */
        KeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-placementtenancy
         */
        PlacementTenancy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-ramdiskid
         */
        RamDiskId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-securitygroups
         */
        SecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-spotprice
         */
        SpotPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-userdata
         */
        UserData?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html
     */
    export class LaunchConfiguration extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LaunchConfigurationProps();

        static readonly RESOURCE_TYPE = 'AWS::AutoScaling::LaunchConfiguration'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LaunchConfiguration.RESOURCE_TYPE, logicalId, LaunchConfiguration.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.autoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html
     */
    export class LifecycleHookProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-autoscalinggroupname
         */
        AutoScalingGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-defaultresult
         */
        DefaultResult?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-heartbeattimeout
         */
        HeartbeatTimeout?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-lifecycletransition
         */
        LifecycleTransition: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-notificationmetadata
         */
        NotificationMetadata?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-notificationtargetarn
         */
        NotificationTargetARN?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-rolearn
         */
        RoleARN?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html
     */
    export class LifecycleHook extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LifecycleHookProps();

        static readonly RESOURCE_TYPE = 'AWS::AutoScaling::LifecycleHook'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LifecycleHook.RESOURCE_TYPE, logicalId, LifecycleHook.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.autoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html
     */
    export class ScalingPolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-adjustmenttype
         */
        AdjustmentType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-autoscalinggroupname
         */
        AutoScalingGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-cooldown
         */
        Cooldown?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-estimatedinstancewarmup
         */
        EstimatedInstanceWarmup?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-metricaggregationtype
         */
        MetricAggregationType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-minadjustmentmagnitude
         */
        MinAdjustmentMagnitude?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-policytype
         */
        PolicyType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-scalingadjustment
         */
        ScalingAdjustment?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-as-scalingpolicy-stepadjustments
         */
        StepAdjustments?: aws.autoscaling.ScalingPolicy.StepAdjustmentProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration
         */
        TargetTrackingConfiguration?: aws.autoscaling.ScalingPolicy.TargetTrackingConfigurationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-policy.html
     */
    export class ScalingPolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ScalingPolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::AutoScaling::ScalingPolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ScalingPolicy.RESOURCE_TYPE, logicalId, ScalingPolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.autoscaling {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html
     */
    export class ScheduledActionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-asgname
         */
        AutoScalingGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-desiredcapacity
         */
        DesiredCapacity?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-endtime
         */
        EndTime?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-maxsize
         */
        MaxSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-minsize
         */
        MinSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-recurrence
         */
        Recurrence?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html#cfn-as-scheduledaction-starttime
         */
        StartTime?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-scheduledaction.html
     */
    export class ScheduledAction extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ScheduledActionProps();

        static readonly RESOURCE_TYPE = 'AWS::AutoScaling::ScheduledAction'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ScheduledAction.RESOURCE_TYPE, logicalId, ScheduledAction.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.batch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html
     */
    export class ComputeEnvironmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-servicerole
         */
        ServiceRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-computeenvironmentname
         */
        ComputeEnvironmentName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-computeresources
         */
        ComputeResources: aws.batch.ComputeEnvironment.ComputeResourcesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-state
         */
        State?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html
     */
    export class ComputeEnvironment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ComputeEnvironmentProps();

        static readonly RESOURCE_TYPE = 'AWS::Batch::ComputeEnvironment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ComputeEnvironment.RESOURCE_TYPE, logicalId, ComputeEnvironment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.batch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html
     */
    export class JobDefinitionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-parameters
         */
        Parameters?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-containerproperties
         */
        ContainerProperties: aws.batch.JobDefinition.ContainerPropertiesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-jobdefinitionname
         */
        JobDefinitionName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-retrystrategy
         */
        RetryStrategy?: aws.batch.JobDefinition.RetryStrategyProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html
     */
    export class JobDefinition extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new JobDefinitionProps();

        static readonly RESOURCE_TYPE = 'AWS::Batch::JobDefinition'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(JobDefinition.RESOURCE_TYPE, logicalId, JobDefinition.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.batch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html
     */
    export class JobQueueProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html#cfn-batch-jobqueue-computeenvironmentorder
         */
        ComputeEnvironmentOrder: aws.batch.JobQueue.ComputeEnvironmentOrderProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html#cfn-batch-jobqueue-priority
         */
        Priority: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html#cfn-batch-jobqueue-state
         */
        State?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html#cfn-batch-jobqueue-jobqueuename
         */
        JobQueueName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobqueue.html
     */
    export class JobQueue extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new JobQueueProps();

        static readonly RESOURCE_TYPE = 'AWS::Batch::JobQueue'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(JobQueue.RESOURCE_TYPE, logicalId, JobQueue.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.certificatemanager {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html
     */
    export class CertificateProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-domainname
         */
        DomainName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-domainvalidationoptions
         */
        DomainValidationOptions?: aws.certificatemanager.Certificate.DomainValidationOptionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-subjectalternativenames
         */
        SubjectAlternativeNames?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html
     */
    export class Certificate extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CertificateProps();

        static readonly RESOURCE_TYPE = 'AWS::CertificateManager::Certificate'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Certificate.RESOURCE_TYPE, logicalId, Certificate.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudformation {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html
     */
    export class CustomResourceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html#cfn-customresource-servicetoken
         */
        ServiceToken: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html
     */
    export class CustomResource extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CustomResourceProps();

        static readonly RESOURCE_TYPE = 'AWS::CloudFormation::CustomResource'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(CustomResource.RESOURCE_TYPE, logicalId, CustomResource.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudformation {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html
     */
    export class StackProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-notificationarns
         */
        NotificationARNs?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-parameters
         */
        Parameters?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-templateurl
         */
        TemplateURL: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-timeoutinminutes
         */
        TimeoutInMinutes?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html
     */
    export class Stack extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StackProps();

        static readonly RESOURCE_TYPE = 'AWS::CloudFormation::Stack'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Stack.RESOURCE_TYPE, logicalId, Stack.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudformation {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html
     */
    export class WaitConditionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html#cfn-waitcondition-count
         */
        Count?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html#cfn-waitcondition-handle
         */
        Handle: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html#cfn-waitcondition-timeout
         */
        Timeout: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitcondition.html
     */
    export class WaitCondition extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WaitConditionProps();

        /**
         * @cloudformation_attribute Data
         */
        @core.Resource.attribute('Data')
        readonly data: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CloudFormation::WaitCondition'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(WaitCondition.RESOURCE_TYPE, logicalId, WaitCondition.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudformation {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitconditionhandle.html
     */
    export class WaitConditionHandleProps {
    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waitconditionhandle.html
     */
    export class WaitConditionHandle extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WaitConditionHandleProps();

        static readonly RESOURCE_TYPE = 'AWS::CloudFormation::WaitConditionHandle'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(WaitConditionHandle.RESOURCE_TYPE, logicalId, WaitConditionHandle.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudfront {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html
     */
    export class DistributionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html#cfn-cloudfront-distribution-distributionconfig
         */
        DistributionConfig: aws.cloudfront.Distribution.DistributionConfigProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html
     */
    export class Distribution extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DistributionProps();

        /**
         * @cloudformation_attribute DomainName
         */
        @core.Resource.attribute('DomainName')
        readonly domainName: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CloudFront::Distribution'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Distribution.RESOURCE_TYPE, logicalId, Distribution.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudtrail {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html
     */
    export class TrailProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-cloudwatchlogsloggrouparn
         */
        CloudWatchLogsLogGroupArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-cloudwatchlogsrolearn
         */
        CloudWatchLogsRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-enablelogfilevalidation
         */
        EnableLogFileValidation?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-eventselectors
         */
        EventSelectors?: aws.cloudtrail.Trail.EventSelectorProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-includeglobalserviceevents
         */
        IncludeGlobalServiceEvents?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-islogging
         */
        IsLogging: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-ismultiregiontrail
         */
        IsMultiRegionTrail?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-kmskeyid
         */
        KMSKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-s3bucketname
         */
        S3BucketName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-s3keyprefix
         */
        S3KeyPrefix?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-snstopicname
         */
        SnsTopicName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-trailname
         */
        TrailName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html
     */
    export class Trail extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TrailProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute SnsTopicArn
         */
        @core.Resource.attribute('SnsTopicArn')
        readonly snsTopicArn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CloudTrail::Trail'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Trail.RESOURCE_TYPE, logicalId, Trail.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudwatch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html
     */
    export class AlarmProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-actionsenabled
         */
        ActionsEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-alarmactions
         */
        AlarmActions?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-alarmdescription
         */
        AlarmDescription?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-alarmname
         */
        AlarmName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-comparisonoperator
         */
        ComparisonOperator: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-dimension
         */
        Dimensions?: aws.cloudwatch.Alarm.DimensionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-evaluatelowsamplecountpercentile
         */
        EvaluateLowSampleCountPercentile?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-evaluationperiods
         */
        EvaluationPeriods: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-extendedstatistic
         */
        ExtendedStatistic?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-insufficientdataactions
         */
        InsufficientDataActions?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-namespace
         */
        Namespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-okactions
         */
        OKActions?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-period
         */
        Period: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-statistic
         */
        Statistic?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-threshold
         */
        Threshold: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-treatmissingdata
         */
        TreatMissingData?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-unit
         */
        Unit?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html
     */
    export class Alarm extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AlarmProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CloudWatch::Alarm'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Alarm.RESOURCE_TYPE, logicalId, Alarm.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cloudwatch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html
     */
    export class DashboardProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html#cfn-cloudwatch-dashboard-dashboardname
         */
        DashboardName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html#cfn-cloudwatch-dashboard-dashboardbody
         */
        DashboardBody: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html
     */
    export class Dashboard extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DashboardProps();

        static readonly RESOURCE_TYPE = 'AWS::CloudWatch::Dashboard'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Dashboard.RESOURCE_TYPE, logicalId, Dashboard.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codebuild {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html
     */
    export class ProjectProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-artifacts
         */
        Artifacts: aws.codebuild.Project.ArtifactsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-servicerole
         */
        ServiceRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-environment
         */
        Environment: aws.codebuild.Project.EnvironmentProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-encryptionkey
         */
        EncryptionKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-source
         */
        Source: aws.codebuild.Project.SourceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-timeoutinminutes
         */
        TimeoutInMinutes?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html
     */
    export class Project extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ProjectProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CodeBuild::Project'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Project.RESOURCE_TYPE, logicalId, Project.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codecommit {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html
     */
    export class RepositoryProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html#cfn-codecommit-repository-repositoryname
         */
        RepositoryName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html#cfn-codecommit-repository-triggers
         */
        Triggers?: aws.codecommit.Repository.RepositoryTriggerProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html#cfn-codecommit-repository-repositorydescription
         */
        RepositoryDescription?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html
     */
    export class Repository extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RepositoryProps();

        /**
         * @cloudformation_attribute CloneUrlHttp
         */
        @core.Resource.attribute('CloneUrlHttp')
        readonly cloneUrlHttp: core.Token

        /**
         * @cloudformation_attribute CloneUrlSsh
         */
        @core.Resource.attribute('CloneUrlSsh')
        readonly cloneUrlSsh: core.Token

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::CodeCommit::Repository'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Repository.RESOURCE_TYPE, logicalId, Repository.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codedeploy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html
     */
    export class ApplicationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html#cfn-codedeploy-application-applicationname
         */
        ApplicationName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html
     */
    export class Application extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationProps();

        static readonly RESOURCE_TYPE = 'AWS::CodeDeploy::Application'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Application.RESOURCE_TYPE, logicalId, Application.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codedeploy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html
     */
    export class DeploymentConfigProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-deploymentconfigname
         */
        DeploymentConfigName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts
         */
        MinimumHealthyHosts?: aws.codedeploy.DeploymentConfig.MinimumHealthyHostsProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html
     */
    export class DeploymentConfig extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DeploymentConfigProps();

        static readonly RESOURCE_TYPE = 'AWS::CodeDeploy::DeploymentConfig'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DeploymentConfig.RESOURCE_TYPE, logicalId, DeploymentConfig.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codedeploy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html
     */
    export class DeploymentGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-alarmconfiguration
         */
        AlarmConfiguration?: aws.codedeploy.DeploymentGroup.AlarmConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration
         */
        AutoRollbackConfiguration?: aws.codedeploy.DeploymentGroup.AutoRollbackConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autoscalinggroups
         */
        AutoScalingGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deployment
         */
        Deployment?: aws.codedeploy.DeploymentGroup.DeploymentProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentconfigname
         */
        DeploymentConfigName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentgroupname
         */
        DeploymentGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentstyle
         */
        DeploymentStyle?: aws.codedeploy.DeploymentGroup.DeploymentStyleProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagfilters
         */
        Ec2TagFilters?: aws.codedeploy.DeploymentGroup.EC2TagFilterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo
         */
        LoadBalancerInfo?: aws.codedeploy.DeploymentGroup.LoadBalancerInfoProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisesinstancetagfilters
         */
        OnPremisesInstanceTagFilters?: aws.codedeploy.DeploymentGroup.TagFilterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-servicerolearn
         */
        ServiceRoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-triggerconfigurations
         */
        TriggerConfigurations?: aws.codedeploy.DeploymentGroup.TriggerConfigProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html
     */
    export class DeploymentGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DeploymentGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::CodeDeploy::DeploymentGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DeploymentGroup.RESOURCE_TYPE, logicalId, DeploymentGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codepipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html
     */
    export class CustomActionTypeProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-category
         */
        Category: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-configurationproperties
         */
        ConfigurationProperties?: aws.codepipeline.CustomActionType.ConfigurationPropertiesProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-inputartifactdetails
         */
        InputArtifactDetails: aws.codepipeline.CustomActionType.ArtifactDetailsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-outputartifactdetails
         */
        OutputArtifactDetails: aws.codepipeline.CustomActionType.ArtifactDetailsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-provider
         */
        Provider: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-settings
         */
        Settings?: aws.codepipeline.CustomActionType.SettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-version
         */
        Version?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html
     */
    export class CustomActionType extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CustomActionTypeProps();

        static readonly RESOURCE_TYPE = 'AWS::CodePipeline::CustomActionType'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(CustomActionType.RESOURCE_TYPE, logicalId, CustomActionType.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.codepipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html
     */
    export class PipelineProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-artifactstore
         */
        ArtifactStore: aws.codepipeline.Pipeline.ArtifactStoreProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-disableinboundstagetransitions
         */
        DisableInboundStageTransitions?: aws.codepipeline.Pipeline.StageTransitionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-restartexecutiononupdate
         */
        RestartExecutionOnUpdate?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-stages
         */
        Stages: aws.codepipeline.Pipeline.StageDeclarationProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html
     */
    export class Pipeline extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PipelineProps();

        static readonly RESOURCE_TYPE = 'AWS::CodePipeline::Pipeline'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Pipeline.RESOURCE_TYPE, logicalId, Pipeline.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
     */
    export class IdentityPoolProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-pushsync
         */
        PushSync?: aws.cognito.IdentityPool.PushSyncProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-cognitoidentityproviders
         */
        CognitoIdentityProviders?: aws.cognito.IdentityPool.CognitoIdentityProviderProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-cognitoevents
         */
        CognitoEvents?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-developerprovidername
         */
        DeveloperProviderName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-cognitostreams
         */
        CognitoStreams?: aws.cognito.IdentityPool.CognitoStreamsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-identitypoolname
         */
        IdentityPoolName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-allowunauthenticatedidentities
         */
        AllowUnauthenticatedIdentities: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-supportedloginproviders
         */
        SupportedLoginProviders?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-samlproviderarns
         */
        SamlProviderARNs?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html#cfn-cognito-identitypool-openidconnectproviderarns
         */
        OpenIdConnectProviderARNs?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
     */
    export class IdentityPool extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new IdentityPoolProps();

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Cognito::IdentityPool'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(IdentityPool.RESOURCE_TYPE, logicalId, IdentityPool.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
     */
    export class IdentityPoolRoleAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html#cfn-cognito-identitypoolroleattachment-rolemappings
         */
        RoleMappings?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html#cfn-cognito-identitypoolroleattachment-identitypoolid
         */
        IdentityPoolId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html#cfn-cognito-identitypoolroleattachment-roles
         */
        Roles?: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
     */
    export class IdentityPoolRoleAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new IdentityPoolRoleAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::Cognito::IdentityPoolRoleAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(IdentityPoolRoleAttachment.RESOURCE_TYPE, logicalId, IdentityPoolRoleAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html
     */
    export class UserPoolProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-userpooltags
         */
        UserPoolTags?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-policies
         */
        Policies?: aws.cognito.UserPool.PoliciesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-mfaconfiguration
         */
        MfaConfiguration?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-schema
         */
        Schema?: aws.cognito.UserPool.SchemaAttributeProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-admincreateuserconfig
         */
        AdminCreateUserConfig?: aws.cognito.UserPool.AdminCreateUserConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-smsauthenticationmessage
         */
        SmsAuthenticationMessage?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-userpoolname
         */
        UserPoolName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-smsverificationmessage
         */
        SmsVerificationMessage?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-emailconfiguration
         */
        EmailConfiguration?: aws.cognito.UserPool.EmailConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-smsconfiguration
         */
        SmsConfiguration?: aws.cognito.UserPool.SmsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-aliasattributes
         */
        AliasAttributes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-emailverificationsubject
         */
        EmailVerificationSubject?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-lambdaconfig
         */
        LambdaConfig?: aws.cognito.UserPool.LambdaConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-autoverifiedattributes
         */
        AutoVerifiedAttributes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-deviceconfiguration
         */
        DeviceConfiguration?: aws.cognito.UserPool.DeviceConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-emailverificationmessage
         */
        EmailVerificationMessage?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html
     */
    export class UserPool extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserPoolProps();

        /**
         * @cloudformation_attribute ProviderName
         */
        @core.Resource.attribute('ProviderName')
        readonly providerName: core.Token

        /**
         * @cloudformation_attribute ProviderURL
         */
        @core.Resource.attribute('ProviderURL')
        readonly providerUrl: core.Token

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Cognito::UserPool'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserPool.RESOURCE_TYPE, logicalId, UserPool.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
     */
    export class UserPoolClientProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-generatesecret
         */
        GenerateSecret?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-clientname
         */
        ClientName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-userpoolid
         */
        UserPoolId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-explicitauthflows
         */
        ExplicitAuthFlows?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-refreshtokenvalidity
         */
        RefreshTokenValidity?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-readattributes
         */
        ReadAttributes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html#cfn-cognito-userpoolclient-writeattributes
         */
        WriteAttributes?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
     */
    export class UserPoolClient extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserPoolClientProps();

        /**
         * @cloudformation_attribute ClientSecret
         */
        @core.Resource.attribute('ClientSecret')
        readonly clientSecret: core.Token

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Cognito::UserPoolClient'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserPoolClient.RESOURCE_TYPE, logicalId, UserPoolClient.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html
     */
    export class UserPoolGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-groupname
         */
        GroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-userpoolid
         */
        UserPoolId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-precedence
         */
        Precedence?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html#cfn-cognito-userpoolgroup-rolearn
         */
        RoleArn?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html
     */
    export class UserPoolGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserPoolGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::Cognito::UserPoolGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserPoolGroup.RESOURCE_TYPE, logicalId, UserPoolGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html
     */
    export class UserPoolUserProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-validationdata
         */
        ValidationData?: aws.cognito.UserPoolUser.AttributeTypeProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-userpoolid
         */
        UserPoolId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-username
         */
        Username?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-messageaction
         */
        MessageAction?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-desireddeliverymediums
         */
        DesiredDeliveryMediums?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-forcealiascreation
         */
        ForceAliasCreation?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html#cfn-cognito-userpooluser-userattributes
         */
        UserAttributes?: aws.cognito.UserPoolUser.AttributeTypeProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html
     */
    export class UserPoolUser extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserPoolUserProps();

        static readonly RESOURCE_TYPE = 'AWS::Cognito::UserPoolUser'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserPoolUser.RESOURCE_TYPE, logicalId, UserPoolUser.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.cognito {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html
     */
    export class UserPoolUserToGroupAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html#cfn-cognito-userpoolusertogroupattachment-groupname
         */
        GroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html#cfn-cognito-userpoolusertogroupattachment-userpoolid
         */
        UserPoolId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html#cfn-cognito-userpoolusertogroupattachment-username
         */
        Username: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html
     */
    export class UserPoolUserToGroupAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserPoolUserToGroupAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::Cognito::UserPoolUserToGroupAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserPoolUserToGroupAttachment.RESOURCE_TYPE, logicalId, UserPoolUserToGroupAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.config {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html
     */
    export class ConfigRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-configrulename
         */
        ConfigRuleName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-inputparameters
         */
        InputParameters?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-maximumexecutionfrequency
         */
        MaximumExecutionFrequency?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-scope
         */
        Scope?: aws.config.ConfigRule.ScopeProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#cfn-config-configrule-source
         */
        Source: aws.config.ConfigRule.SourceProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html
     */
    export class ConfigRule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ConfigRuleProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute Compliance.Type
         */
        @core.Resource.attribute('Compliance.Type')
        readonly complianceType: core.Token

        /**
         * @cloudformation_attribute ConfigRuleId
         */
        @core.Resource.attribute('ConfigRuleId')
        readonly configRuleId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Config::ConfigRule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ConfigRule.RESOURCE_TYPE, logicalId, ConfigRule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.config {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html
     */
    export class ConfigurationRecorderProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-recordinggroup
         */
        RecordingGroup?: aws.config.ConfigurationRecorder.RecordingGroupProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html#cfn-config-configurationrecorder-rolearn
         */
        RoleARN: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html
     */
    export class ConfigurationRecorder extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ConfigurationRecorderProps();

        static readonly RESOURCE_TYPE = 'AWS::Config::ConfigurationRecorder'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ConfigurationRecorder.RESOURCE_TYPE, logicalId, ConfigurationRecorder.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.config {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html
     */
    export class DeliveryChannelProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-configsnapshotdeliveryproperties
         */
        ConfigSnapshotDeliveryProperties?: aws.config.DeliveryChannel.ConfigSnapshotDeliveryPropertiesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-s3bucketname
         */
        S3BucketName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-s3keyprefix
         */
        S3KeyPrefix?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html#cfn-config-deliverychannel-snstopicarn
         */
        SnsTopicARN?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html
     */
    export class DeliveryChannel extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DeliveryChannelProps();

        static readonly RESOURCE_TYPE = 'AWS::Config::DeliveryChannel'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DeliveryChannel.RESOURCE_TYPE, logicalId, DeliveryChannel.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dax {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html
     */
    export class ClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-replicationfactor
         */
        ReplicationFactor: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-parametergroupname
         */
        ParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-availabilityzones
         */
        AvailabilityZones?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-nodetype
         */
        NodeType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-iamrolearn
         */
        IAMRoleARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-subnetgroupname
         */
        SubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-clustername
         */
        ClusterName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-notificationtopicarn
         */
        NotificationTopicARN?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-securitygroupids
         */
        SecurityGroupIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-tags
         */
        Tags?: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html
     */
    export class Cluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterProps();

        /**
         * @cloudformation_attribute ClusterDiscoveryEndpoint
         */
        @core.Resource.attribute('ClusterDiscoveryEndpoint')
        readonly clusterDiscoveryEndpoint: core.Token

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DAX::Cluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Cluster.RESOURCE_TYPE, logicalId, Cluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dax {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html
     */
    export class ParameterGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html#cfn-dax-parametergroup-parameternamevalues
         */
        ParameterNameValues?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html#cfn-dax-parametergroup-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html#cfn-dax-parametergroup-parametergroupname
         */
        ParameterGroupName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-parametergroup.html
     */
    export class ParameterGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ParameterGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::DAX::ParameterGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ParameterGroup.RESOURCE_TYPE, logicalId, ParameterGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dax {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html
     */
    export class SubnetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html#cfn-dax-subnetgroup-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html#cfn-dax-subnetgroup-subnetgroupname
         */
        SubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html#cfn-dax-subnetgroup-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html
     */
    export class SubnetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::DAX::SubnetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubnetGroup.RESOURCE_TYPE, logicalId, SubnetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html
     */
    export class CertificateProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html#cfn-dms-certificate-certificateidentifier
         */
        CertificateIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html#cfn-dms-certificate-certificatepem
         */
        CertificatePem?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html#cfn-dms-certificate-certificatewallet
         */
        CertificateWallet?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-certificate.html
     */
    export class Certificate extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CertificateProps();

        static readonly RESOURCE_TYPE = 'AWS::DMS::Certificate'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Certificate.RESOURCE_TYPE, logicalId, Certificate.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html
     */
    export class EndpointProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-databasename
         */
        DatabaseName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-s3settings
         */
        S3Settings?: aws.dms.Endpoint.S3SettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-enginename
         */
        EngineName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-dynamodbsettings
         */
        DynamoDbSettings?: aws.dms.Endpoint.DynamoDbSettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-username
         */
        Username?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-sslmode
         */
        SslMode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-servername
         */
        ServerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-extraconnectionattributes
         */
        ExtraConnectionAttributes?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-endpointtype
         */
        EndpointType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-endpointidentifier
         */
        EndpointIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-password
         */
        Password?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-certificatearn
         */
        CertificateArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html#cfn-dms-endpoint-mongodbsettings
         */
        MongoDbSettings?: aws.dms.Endpoint.MongoDbSettingsProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-endpoint.html
     */
    export class Endpoint extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EndpointProps();

        /**
         * @cloudformation_attribute ExternalId
         */
        @core.Resource.attribute('ExternalId')
        readonly externalId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DMS::Endpoint'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Endpoint.RESOURCE_TYPE, logicalId, Endpoint.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html
     */
    export class EventSubscriptionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-sourcetype
         */
        SourceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-eventcategories
         */
        EventCategories?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-subscriptionname
         */
        SubscriptionName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-snstopicarn
         */
        SnsTopicArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-sourceids
         */
        SourceIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html#cfn-dms-eventsubscription-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-eventsubscription.html
     */
    export class EventSubscription extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EventSubscriptionProps();

        static readonly RESOURCE_TYPE = 'AWS::DMS::EventSubscription'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EventSubscription.RESOURCE_TYPE, logicalId, EventSubscription.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html
     */
    export class ReplicationInstanceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-replicationinstanceidentifier
         */
        ReplicationInstanceIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-engineversion
         */
        EngineVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-autominorversionupgrade
         */
        AutoMinorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-replicationsubnetgroupidentifier
         */
        ReplicationSubnetGroupIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-allocatedstorage
         */
        AllocatedStorage?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-vpcsecuritygroupids
         */
        VpcSecurityGroupIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-allowmajorversionupgrade
         */
        AllowMajorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-replicationinstanceclass
         */
        ReplicationInstanceClass: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-publiclyaccessible
         */
        PubliclyAccessible?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-multiaz
         */
        MultiAZ?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html
     */
    export class ReplicationInstance extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ReplicationInstanceProps();

        /**
         * @cloudformation_attribute ReplicationInstancePublicIpAddresses
         */
        @core.Resource.attribute('ReplicationInstancePublicIpAddresses')
        readonly replicationInstancePublicIpAddresses: core.Token

        /**
         * @cloudformation_attribute ReplicationInstancePrivateIpAddresses
         */
        @core.Resource.attribute('ReplicationInstancePrivateIpAddresses')
        readonly replicationInstancePrivateIpAddresses: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DMS::ReplicationInstance'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ReplicationInstance.RESOURCE_TYPE, logicalId, ReplicationInstance.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html
     */
    export class ReplicationSubnetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-replicationsubnetgroupdescription
         */
        ReplicationSubnetGroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-replicationsubnetgroupidentifier
         */
        ReplicationSubnetGroupIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html#cfn-dms-replicationsubnetgroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationsubnetgroup.html
     */
    export class ReplicationSubnetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ReplicationSubnetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::DMS::ReplicationSubnetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ReplicationSubnetGroup.RESOURCE_TYPE, logicalId, ReplicationSubnetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html
     */
    export class ReplicationTaskProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-replicationtasksettings
         */
        ReplicationTaskSettings?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-tablemappings
         */
        TableMappings: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-replicationtaskidentifier
         */
        ReplicationTaskIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-sourceendpointarn
         */
        SourceEndpointArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-migrationtype
         */
        MigrationType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-targetendpointarn
         */
        TargetEndpointArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-replicationinstancearn
         */
        ReplicationInstanceArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html#cfn-dms-replicationtask-cdcstarttime
         */
        CdcStartTime?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationtask.html
     */
    export class ReplicationTask extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ReplicationTaskProps();

        static readonly RESOURCE_TYPE = 'AWS::DMS::ReplicationTask'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ReplicationTask.RESOURCE_TYPE, logicalId, ReplicationTask.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.datapipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html
     */
    export class PipelineProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-activate
         */
        Activate?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-parameterobjects
         */
        ParameterObjects: aws.datapipeline.Pipeline.ParameterObjectProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-parametervalues
         */
        ParameterValues?: aws.datapipeline.Pipeline.ParameterValueProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-pipelineobjects
         */
        PipelineObjects?: aws.datapipeline.Pipeline.PipelineObjectProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html#cfn-datapipeline-pipeline-pipelinetags
         */
        PipelineTags?: aws.datapipeline.Pipeline.PipelineTagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html
     */
    export class Pipeline extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PipelineProps();

        static readonly RESOURCE_TYPE = 'AWS::DataPipeline::Pipeline'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Pipeline.RESOURCE_TYPE, logicalId, Pipeline.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.directoryservice {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html
     */
    export class MicrosoftADProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-createalias
         */
        CreateAlias?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-enablesso
         */
        EnableSso?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-password
         */
        Password: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-shortname
         */
        ShortName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-vpcsettings
         */
        VpcSettings: aws.directoryservice.MicrosoftAD.VpcSettingsProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html
     */
    export class MicrosoftAD extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new MicrosoftADProps();

        /**
         * @cloudformation_attribute Alias
         */
        @core.Resource.attribute('Alias')
        readonly alias: core.Token

        /**
         * @cloudformation_attribute DnsIpAddresses
         */
        @core.Resource.attribute('DnsIpAddresses')
        readonly dnsIpAddresses: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DirectoryService::MicrosoftAD'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(MicrosoftAD.RESOURCE_TYPE, logicalId, MicrosoftAD.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.directoryservice {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html
     */
    export class SimpleADProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-createalias
         */
        CreateAlias?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-enablesso
         */
        EnableSso?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-password
         */
        Password: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-shortname
         */
        ShortName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-size
         */
        Size: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html#cfn-directoryservice-simplead-vpcsettings
         */
        VpcSettings: aws.directoryservice.SimpleAD.VpcSettingsProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-simplead.html
     */
    export class SimpleAD extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SimpleADProps();

        /**
         * @cloudformation_attribute Alias
         */
        @core.Resource.attribute('Alias')
        readonly alias: core.Token

        /**
         * @cloudformation_attribute DnsIpAddresses
         */
        @core.Resource.attribute('DnsIpAddresses')
        readonly dnsIpAddresses: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DirectoryService::SimpleAD'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SimpleAD.RESOURCE_TYPE, logicalId, SimpleAD.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.dynamodb {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html
     */
    export class TableProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-attributedef
         */
        AttributeDefinitions?: aws.dynamodb.Table.AttributeDefinitionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-gsi
         */
        GlobalSecondaryIndexes?: aws.dynamodb.Table.GlobalSecondaryIndexProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-keyschema
         */
        KeySchema: aws.dynamodb.Table.KeySchemaProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-lsi
         */
        LocalSecondaryIndexes?: aws.dynamodb.Table.LocalSecondaryIndexProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-provisionedthroughput
         */
        ProvisionedThroughput: aws.dynamodb.Table.ProvisionedThroughputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-streamspecification
         */
        StreamSpecification?: aws.dynamodb.Table.StreamSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-tablename
         */
        TableName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-timetolivespecification
         */
        TimeToLiveSpecification?: aws.dynamodb.Table.TimeToLiveSpecificationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html
     */
    export class Table extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TableProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute StreamArn
         */
        @core.Resource.attribute('StreamArn')
        readonly streamArn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::DynamoDB::Table'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Table.RESOURCE_TYPE, logicalId, Table.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html
     */
    export class CustomerGatewayProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-bgpasn
         */
        BgpAsn: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-ipaddress
         */
        IpAddress: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html#cfn-ec2-customergateway-type
         */
        Type: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-customer-gateway.html
     */
    export class CustomerGateway extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CustomerGatewayProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::CustomerGateway'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(CustomerGateway.RESOURCE_TYPE, logicalId, CustomerGateway.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
     */
    export class DHCPOptionsProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-domainname
         */
        DomainName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-domainnameservers
         */
        DomainNameServers?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-netbiosnameservers
         */
        NetbiosNameServers?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-netbiosnodetype
         */
        NetbiosNodeType?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-ntpservers
         */
        NtpServers?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html#cfn-ec2-dhcpoptions-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-dhcp-options.html
     */
    export class DHCPOptions extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DHCPOptionsProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::DHCPOptions'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DHCPOptions.RESOURCE_TYPE, logicalId, DHCPOptions.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html
     */
    export class EIPProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html#cfn-ec2-eip-domain
         */
        Domain?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html#cfn-ec2-eip-instanceid
         */
        InstanceId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html
     */
    export class EIP extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EIPProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::EIP'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EIP.RESOURCE_TYPE, logicalId, EIP.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html
     */
    export class EIPAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html#cfn-ec2-eipassociation-allocationid
         */
        AllocationId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html#cfn-ec2-eipassociation-eip
         */
        EIP?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html#cfn-ec2-eipassociation-instanceid
         */
        InstanceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html#cfn-ec2-eipassociation-networkinterfaceid
         */
        NetworkInterfaceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html#cfn-ec2-eipassociation-PrivateIpAddress
         */
        PrivateIpAddress?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html
     */
    export class EIPAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EIPAssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::EIPAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EIPAssociation.RESOURCE_TYPE, logicalId, EIPAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html
     */
    export class EgressOnlyInternetGatewayProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html#cfn-ec2-egressonlyinternetgateway-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-egressonlyinternetgateway.html
     */
    export class EgressOnlyInternetGateway extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EgressOnlyInternetGatewayProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::EgressOnlyInternetGateway'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EgressOnlyInternetGateway.RESOURCE_TYPE, logicalId, EgressOnlyInternetGateway.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html
     */
    export class FlowLogProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-deliverlogspermissionarn
         */
        DeliverLogsPermissionArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-loggroupname
         */
        LogGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-resourceid
         */
        ResourceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-resourcetype
         */
        ResourceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html#cfn-ec2-flowlog-traffictype
         */
        TrafficType: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html
     */
    export class FlowLog extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new FlowLogProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::FlowLog'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(FlowLog.RESOURCE_TYPE, logicalId, FlowLog.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html
     */
    export class HostProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-autoplacement
         */
        AutoPlacement?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-availabilityzone
         */
        AvailabilityZone: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-instancetype
         */
        InstanceType: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html
     */
    export class Host extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new HostProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::Host'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Host.RESOURCE_TYPE, logicalId, Host.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html
     */
    export class InstanceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-additionalinfo
         */
        AdditionalInfo?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-affinity
         */
        Affinity?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-blockdevicemappings
         */
        BlockDeviceMappings?: aws.ec2.Instance.BlockDeviceMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-disableapitermination
         */
        DisableApiTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-hostid
         */
        HostId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-iaminstanceprofile
         */
        IamInstanceProfile?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-imageid
         */
        ImageId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instanceinitiatedshutdownbehavior
         */
        InstanceInitiatedShutdownBehavior?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instancetype
         */
        InstanceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ipv6addresscount
         */
        Ipv6AddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ipv6addresses
         */
        Ipv6Addresses?: aws.ec2.Instance.InstanceIpv6AddressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-kernelid
         */
        KernelId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-keyname
         */
        KeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-monitoring
         */
        Monitoring?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-networkinterfaces
         */
        NetworkInterfaces?: aws.ec2.Instance.NetworkInterfaceProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-placementgroupname
         */
        PlacementGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-privateipaddress
         */
        PrivateIpAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ramdiskid
         */
        RamdiskId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-securitygroupids
         */
        SecurityGroupIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-securitygroups
         */
        SecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-sourcedestcheck
         */
        SourceDestCheck?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ssmassociations
         */
        SsmAssociations?: aws.ec2.Instance.SsmAssociationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-subnetid
         */
        SubnetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-tenancy
         */
        Tenancy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata
         */
        UserData?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-volumes
         */
        Volumes?: aws.ec2.Instance.VolumeProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html
     */
    export class Instance extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InstanceProps();

        /**
         * @cloudformation_attribute AvailabilityZone
         */
        @core.Resource.attribute('AvailabilityZone')
        readonly availabilityZone: core.Token

        /**
         * @cloudformation_attribute PrivateDnsName
         */
        @core.Resource.attribute('PrivateDnsName')
        readonly privateDnsName: core.Token

        /**
         * @cloudformation_attribute PrivateIp
         */
        @core.Resource.attribute('PrivateIp')
        readonly privateIp: core.Token

        /**
         * @cloudformation_attribute PublicDnsName
         */
        @core.Resource.attribute('PublicDnsName')
        readonly publicDnsName: core.Token

        /**
         * @cloudformation_attribute PublicIp
         */
        @core.Resource.attribute('PublicIp')
        readonly publicIp: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::Instance'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Instance.RESOURCE_TYPE, logicalId, Instance.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html
     */
    export class InternetGatewayProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html#cfn-ec2-internetgateway-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html
     */
    export class InternetGateway extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InternetGatewayProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::InternetGateway'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(InternetGateway.RESOURCE_TYPE, logicalId, InternetGateway.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html
     */
    export class NatGatewayProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-allocationid
         */
        AllocationId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-subnetid
         */
        SubnetId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html
     */
    export class NatGateway extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NatGatewayProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::NatGateway'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NatGateway.RESOURCE_TYPE, logicalId, NatGateway.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html
     */
    export class NetworkAclProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html#cfn-ec2-networkacl-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html#cfn-ec2-networkacl-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl.html
     */
    export class NetworkAcl extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NetworkAclProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::NetworkAcl'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NetworkAcl.RESOURCE_TYPE, logicalId, NetworkAcl.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html
     */
    export class NetworkAclEntryProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-cidrblock
         */
        CidrBlock: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-egress
         */
        Egress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-icmp
         */
        Icmp?: aws.ec2.NetworkAclEntry.IcmpProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-ipv6cidrblock
         */
        Ipv6CidrBlock?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-networkaclid
         */
        NetworkAclId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-portrange
         */
        PortRange?: aws.ec2.NetworkAclEntry.PortRangeProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-protocol
         */
        Protocol: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-ruleaction
         */
        RuleAction: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html#cfn-ec2-networkaclentry-rulenumber
         */
        RuleNumber: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-acl-entry.html
     */
    export class NetworkAclEntry extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NetworkAclEntryProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::NetworkAclEntry'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NetworkAclEntry.RESOURCE_TYPE, logicalId, NetworkAclEntry.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html
     */
    export class NetworkInterfaceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-groupset
         */
        GroupSet?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-interfacetype
         */
        InterfaceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-ipv6addresscount
         */
        Ipv6AddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-ec2-networkinterface-ipv6addresses
         */
        Ipv6Addresses?: aws.ec2.NetworkInterface.InstanceIpv6AddressProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-privateipaddress
         */
        PrivateIpAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-privateipaddresses
         */
        PrivateIpAddresses?: aws.ec2.NetworkInterface.PrivateIpAddressSpecificationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-secondaryprivateipcount
         */
        SecondaryPrivateIpAddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-sourcedestcheck
         */
        SourceDestCheck?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-subnetid
         */
        SubnetId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html#cfn-awsec2networkinterface-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface.html
     */
    export class NetworkInterface extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NetworkInterfaceProps();

        /**
         * @cloudformation_attribute PrimaryPrivateIpAddress
         */
        @core.Resource.attribute('PrimaryPrivateIpAddress')
        readonly primaryPrivateIpAddress: core.Token

        /**
         * @cloudformation_attribute SecondaryPrivateIpAddresses
         */
        @core.Resource.attribute('SecondaryPrivateIpAddresses')
        readonly secondaryPrivateIpAddresses: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::NetworkInterface'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NetworkInterface.RESOURCE_TYPE, logicalId, NetworkInterface.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html
     */
    export class NetworkInterfaceAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-deleteonterm
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-deviceindex
         */
        DeviceIndex: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-instanceid
         */
        InstanceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html#cfn-ec2-network-interface-attachment-networkinterfaceid
         */
        NetworkInterfaceId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-network-interface-attachment.html
     */
    export class NetworkInterfaceAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NetworkInterfaceAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::NetworkInterfaceAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NetworkInterfaceAttachment.RESOURCE_TYPE, logicalId, NetworkInterfaceAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html
     */
    export class NetworkInterfacePermissionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html#cfn-ec2-networkinterfacepermission-awsaccountid
         */
        AwsAccountId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html#cfn-ec2-networkinterfacepermission-networkinterfaceid
         */
        NetworkInterfaceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html#cfn-ec2-networkinterfacepermission-permission
         */
        Permission: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinterfacepermission.html
     */
    export class NetworkInterfacePermission extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new NetworkInterfacePermissionProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::NetworkInterfacePermission'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(NetworkInterfacePermission.RESOURCE_TYPE, logicalId, NetworkInterfacePermission.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html
     */
    export class PlacementGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html#cfn-ec2-placementgroup-strategy
         */
        Strategy?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-placementgroup.html
     */
    export class PlacementGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PlacementGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::PlacementGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(PlacementGroup.RESOURCE_TYPE, logicalId, PlacementGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html
     */
    export class RouteProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-destinationcidrblock
         */
        DestinationCidrBlock?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-destinationipv6cidrblock
         */
        DestinationIpv6CidrBlock?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-gatewayid
         */
        GatewayId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-instanceid
         */
        InstanceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-natgatewayid
         */
        NatGatewayId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-networkinterfaceid
         */
        NetworkInterfaceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-routetableid
         */
        RouteTableId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-vpcpeeringconnectionid
         */
        VpcPeeringConnectionId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html
     */
    export class Route extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RouteProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::Route'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Route.RESOURCE_TYPE, logicalId, Route.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html
     */
    export class RouteTableProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html#cfn-ec2-routetable-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html#cfn-ec2-routetable-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route-table.html
     */
    export class RouteTable extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RouteTableProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::RouteTable'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(RouteTable.RESOURCE_TYPE, logicalId, RouteTable.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html
     */
    export class SecurityGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-groupdescription
         */
        GroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-groupname
         */
        GroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-securitygroupegress
         */
        SecurityGroupEgress?: aws.ec2.SecurityGroup.EgressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-securitygroupingress
         */
        SecurityGroupIngress?: aws.ec2.SecurityGroup.IngressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html#cfn-ec2-securitygroup-vpcid
         */
        VpcId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html
     */
    export class SecurityGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityGroupProps();

        /**
         * @cloudformation_attribute GroupId
         */
        @core.Resource.attribute('GroupId')
        readonly groupId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::SecurityGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityGroup.RESOURCE_TYPE, logicalId, SecurityGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html
     */
    export class SecurityGroupEgressProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-cidrip
         */
        CidrIp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-cidripv6
         */
        CidrIpv6?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-destinationprefixlistid
         */
        DestinationPrefixListId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-destinationsecuritygroupid
         */
        DestinationSecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-fromport
         */
        FromPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-groupid
         */
        GroupId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-ipprotocol
         */
        IpProtocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-toport
         */
        ToPort?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html
     */
    export class SecurityGroupEgress extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityGroupEgressProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::SecurityGroupEgress'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityGroupEgress.RESOURCE_TYPE, logicalId, SecurityGroupEgress.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html
     */
    export class SecurityGroupIngressProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-cidrip
         */
        CidrIp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-cidripv6
         */
        CidrIpv6?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-fromport
         */
        FromPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-groupid
         */
        GroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-groupname
         */
        GroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-ipprotocol
         */
        IpProtocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-sourcesecuritygroupid
         */
        SourceSecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-sourcesecuritygroupname
         */
        SourceSecurityGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-sourcesecuritygroupownerid
         */
        SourceSecurityGroupOwnerId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-toport
         */
        ToPort?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html
     */
    export class SecurityGroupIngress extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityGroupIngressProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::SecurityGroupIngress'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityGroupIngress.RESOURCE_TYPE, logicalId, SecurityGroupIngress.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html
     */
    export class SpotFleetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata
         */
        SpotFleetRequestConfigData: aws.ec2.SpotFleet.SpotFleetRequestConfigDataProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html
     */
    export class SpotFleet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SpotFleetProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::SpotFleet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SpotFleet.RESOURCE_TYPE, logicalId, SpotFleet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html
     */
    export class SubnetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-assignipv6addressoncreation
         */
        AssignIpv6AddressOnCreation?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-cidrblock
         */
        CidrBlock: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-ipv6cidrblock
         */
        Ipv6CidrBlock?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-mappubliciponlaunch
         */
        MapPublicIpOnLaunch?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-awsec2subnet-prop-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html
     */
    export class Subnet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetProps();

        /**
         * @cloudformation_attribute AvailabilityZone
         */
        @core.Resource.attribute('AvailabilityZone')
        readonly availabilityZone: core.Token

        /**
         * @cloudformation_attribute Ipv6CidrBlocks
         */
        @core.Resource.attribute('Ipv6CidrBlocks')
        readonly ipv6CidrBlocks: core.Token

        /**
         * @cloudformation_attribute NetworkAclAssociationId
         */
        @core.Resource.attribute('NetworkAclAssociationId')
        readonly networkAclAssociationId: core.Token

        /**
         * @cloudformation_attribute VpcId
         */
        @core.Resource.attribute('VpcId')
        readonly vpcId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::Subnet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Subnet.RESOURCE_TYPE, logicalId, Subnet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html
     */
    export class SubnetCidrBlockProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html#cfn-ec2-subnetcidrblock-ipv6cidrblock
         */
        Ipv6CidrBlock: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html#cfn-ec2-subnetcidrblock-subnetid
         */
        SubnetId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnetcidrblock.html
     */
    export class SubnetCidrBlock extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetCidrBlockProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::SubnetCidrBlock'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubnetCidrBlock.RESOURCE_TYPE, logicalId, SubnetCidrBlock.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html
     */
    export class SubnetNetworkAclAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html#cfn-ec2-subnetnetworkaclassociation-networkaclid
         */
        NetworkAclId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html#cfn-ec2-subnetnetworkaclassociation-associationid
         */
        SubnetId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-network-acl-assoc.html
     */
    export class SubnetNetworkAclAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetNetworkAclAssociationProps();

        /**
         * @cloudformation_attribute AssociationId
         */
        @core.Resource.attribute('AssociationId')
        readonly associationId: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::SubnetNetworkAclAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubnetNetworkAclAssociation.RESOURCE_TYPE, logicalId, SubnetNetworkAclAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html
     */
    export class SubnetRouteTableAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html#cfn-ec2-subnetroutetableassociation-routetableid
         */
        RouteTableId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html#cfn-ec2-subnetroutetableassociation-subnetid
         */
        SubnetId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html
     */
    export class SubnetRouteTableAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetRouteTableAssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::SubnetRouteTableAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubnetRouteTableAssociation.RESOURCE_TYPE, logicalId, SubnetRouteTableAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html
     */
    export class TrunkInterfaceAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-branchinterfaceid
         */
        BranchInterfaceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-grekey
         */
        GREKey?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-trunkinterfaceid
         */
        TrunkInterfaceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html#cfn-ec2-trunkinterfaceassociation-vlanid
         */
        VLANId?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trunkinterfaceassociation.html
     */
    export class TrunkInterfaceAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TrunkInterfaceAssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::TrunkInterfaceAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(TrunkInterfaceAssociation.RESOURCE_TYPE, logicalId, TrunkInterfaceAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html
     */
    export class VPCProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-cidrblock
         */
        CidrBlock: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-EnableDnsHostnames
         */
        EnableDnsHostnames?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-EnableDnsSupport
         */
        EnableDnsSupport?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-instancetenancy
         */
        InstanceTenancy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html#cfn-aws-ec2-vpc-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html
     */
    export class VPC extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCProps();

        /**
         * @cloudformation_attribute CidrBlock
         */
        @core.Resource.attribute('CidrBlock')
        readonly cidrBlock: core.Token

        /**
         * @cloudformation_attribute DefaultNetworkAcl
         */
        @core.Resource.attribute('DefaultNetworkAcl')
        readonly defaultNetworkAcl: core.Token

        /**
         * @cloudformation_attribute DefaultSecurityGroup
         */
        @core.Resource.attribute('DefaultSecurityGroup')
        readonly defaultSecurityGroup: core.Token

        /**
         * @cloudformation_attribute Ipv6CidrBlocks
         */
        @core.Resource.attribute('Ipv6CidrBlocks')
        readonly ipv6CidrBlocks: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPC'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPC.RESOURCE_TYPE, logicalId, VPC.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html
     */
    export class VPCCidrBlockProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html#cfn-ec2-vpccidrblock-amazonprovidedipv6cidrblock
         */
        AmazonProvidedIpv6CidrBlock?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html#cfn-ec2-vpccidrblock-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html
     */
    export class VPCCidrBlock extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCCidrBlockProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPCCidrBlock'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPCCidrBlock.RESOURCE_TYPE, logicalId, VPCCidrBlock.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html
     */
    export class VPCDHCPOptionsAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html#cfn-ec2-vpcdhcpoptionsassociation-dhcpoptionsid
         */
        DhcpOptionsId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html#cfn-ec2-vpcdhcpoptionsassociation-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-dhcp-options-assoc.html
     */
    export class VPCDHCPOptionsAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCDHCPOptionsAssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPCDHCPOptionsAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPCDHCPOptionsAssociation.RESOURCE_TYPE, logicalId, VPCDHCPOptionsAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html
     */
    export class VPCEndpointProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-policydocument
         */
        PolicyDocument?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-routetableids
         */
        RouteTableIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-servicename
         */
        ServiceName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html
     */
    export class VPCEndpoint extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCEndpointProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPCEndpoint'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPCEndpoint.RESOURCE_TYPE, logicalId, VPCEndpoint.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html
     */
    export class VPCGatewayAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html#cfn-ec2-vpcgatewayattachment-internetgatewayid
         */
        InternetGatewayId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html#cfn-ec2-vpcgatewayattachment-vpcid
         */
        VpcId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html#cfn-ec2-vpcgatewayattachment-vpngatewayid
         */
        VpnGatewayId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html
     */
    export class VPCGatewayAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCGatewayAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPCGatewayAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPCGatewayAttachment.RESOURCE_TYPE, logicalId, VPCGatewayAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html
     */
    export class VPCPeeringConnectionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-peerownerid
         */
        PeerOwnerId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-peerrolearn
         */
        PeerRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-peervpcid
         */
        PeerVpcId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html
     */
    export class VPCPeeringConnection extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPCPeeringConnectionProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPCPeeringConnection'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPCPeeringConnection.RESOURCE_TYPE, logicalId, VPCPeeringConnection.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html
     */
    export class VPNConnectionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-customergatewayid
         */
        CustomerGatewayId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-StaticRoutesOnly
         */
        StaticRoutesOnly?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-vpngatewayid
         */
        VpnGatewayId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html
     */
    export class VPNConnection extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPNConnectionProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPNConnection'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPNConnection.RESOURCE_TYPE, logicalId, VPNConnection.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html
     */
    export class VPNConnectionRouteProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html#cfn-ec2-vpnconnectionroute-cidrblock
         */
        DestinationCidrBlock: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html#cfn-ec2-vpnconnectionroute-connectionid
         */
        VpnConnectionId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection-route.html
     */
    export class VPNConnectionRoute extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPNConnectionRouteProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPNConnectionRoute'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPNConnectionRoute.RESOURCE_TYPE, logicalId, VPNConnectionRoute.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html
     */
    export class VPNGatewayProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html#cfn-ec2-vpngateway-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html#cfn-ec2-vpngateway-type
         */
        Type: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html
     */
    export class VPNGateway extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPNGatewayProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPNGateway'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPNGateway.RESOURCE_TYPE, logicalId, VPNGateway.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html
     */
    export class VPNGatewayRoutePropagationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-routetableids
         */
        RouteTableIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-vpngatewayid
         */
        VpnGatewayId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html
     */
    export class VPNGatewayRoutePropagation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VPNGatewayRoutePropagationProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VPNGatewayRoutePropagation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VPNGatewayRoutePropagation.RESOURCE_TYPE, logicalId, VPNGatewayRoutePropagation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html
     */
    export class VolumeProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-autoenableio
         */
        AutoEnableIO?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-availabilityzone
         */
        AvailabilityZone: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-size
         */
        Size?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-snapshotid
         */
        SnapshotId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html#cfn-ec2-ebs-volume-volumetype
         */
        VolumeType?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volume.html
     */
    export class Volume extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VolumeProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::Volume'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Volume.RESOURCE_TYPE, logicalId, Volume.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ec2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html
     */
    export class VolumeAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html#cfn-ec2-ebs-volumeattachment-device
         */
        Device: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html#cfn-ec2-ebs-volumeattachment-instanceid
         */
        InstanceId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html#cfn-ec2-ebs-volumeattachment-volumeid
         */
        VolumeId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html
     */
    export class VolumeAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VolumeAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::EC2::VolumeAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(VolumeAttachment.RESOURCE_TYPE, logicalId, VolumeAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ecr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html
     */
    export class RepositoryProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-repositoryname
         */
        RepositoryName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-repositorypolicytext
         */
        RepositoryPolicyText?: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html
     */
    export class Repository extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RepositoryProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ECR::Repository'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Repository.RESOURCE_TYPE, logicalId, Repository.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ecs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
     */
    export class ClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-clustername
         */
        ClusterName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
     */
    export class Cluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ECS::Cluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Cluster.RESOURCE_TYPE, logicalId, Cluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ecs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
     */
    export class ServiceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-cluster
         */
        Cluster?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-deploymentconfiguration
         */
        DeploymentConfiguration?: aws.ecs.Service.DeploymentConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-desiredcount
         */
        DesiredCount: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-loadbalancers
         */
        LoadBalancers?: aws.ecs.Service.LoadBalancerProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-placementconstraints
         */
        PlacementConstraints?: aws.ecs.Service.PlacementConstraintProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-placementstrategies
         */
        PlacementStrategies?: aws.ecs.Service.PlacementStrategyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-role
         */
        Role?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-servicename
         */
        ServiceName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-taskdefinition
         */
        TaskDefinition: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
     */
    export class Service extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ServiceProps();

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ECS::Service'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Service.RESOURCE_TYPE, logicalId, Service.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ecs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
     */
    export class TaskDefinitionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-containerdefinitions
         */
        ContainerDefinitions?: aws.ecs.TaskDefinition.ContainerDefinitionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-family
         */
        Family?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-networkmode
         */
        NetworkMode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-placementconstraints
         */
        PlacementConstraints?: aws.ecs.TaskDefinition.TaskDefinitionPlacementConstraintProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-taskrolearn
         */
        TaskRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-volumes
         */
        Volumes?: aws.ecs.TaskDefinition.VolumeProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
     */
    export class TaskDefinition extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TaskDefinitionProps();

        static readonly RESOURCE_TYPE = 'AWS::ECS::TaskDefinition'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(TaskDefinition.RESOURCE_TYPE, logicalId, TaskDefinition.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.efs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html
     */
    export class FileSystemProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-filesystemtags
         */
        FileSystemTags?: aws.efs.FileSystem.ElasticFileSystemTagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-performancemode
         */
        PerformanceMode?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html
     */
    export class FileSystem extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new FileSystemProps();

        static readonly RESOURCE_TYPE = 'AWS::EFS::FileSystem'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(FileSystem.RESOURCE_TYPE, logicalId, FileSystem.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.efs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html
     */
    export class MountTargetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-filesystemid
         */
        FileSystemId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-ipaddress
         */
        IpAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-securitygroups
         */
        SecurityGroups: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html#cfn-efs-mounttarget-subnetid
         */
        SubnetId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html
     */
    export class MountTarget extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new MountTargetProps();

        static readonly RESOURCE_TYPE = 'AWS::EFS::MountTarget'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(MountTarget.RESOURCE_TYPE, logicalId, MountTarget.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.emr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html
     */
    export class ClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-additionalinfo
         */
        AdditionalInfo?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-applications
         */
        Applications?: aws.emr.Cluster.ApplicationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-autoscalingrole
         */
        AutoScalingRole?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-bootstrapactions
         */
        BootstrapActions?: aws.emr.Cluster.BootstrapActionConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-configurations
         */
        Configurations?: aws.emr.Cluster.ConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-instances
         */
        Instances: aws.emr.Cluster.JobFlowInstancesConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-jobflowrole
         */
        JobFlowRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-loguri
         */
        LogUri?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-releaselabel
         */
        ReleaseLabel?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-scaledownbehavior
         */
        ScaleDownBehavior?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-securityconfiguration
         */
        SecurityConfiguration?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-servicerole
         */
        ServiceRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-visibletoallusers
         */
        VisibleToAllUsers?: boolean | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html
     */
    export class Cluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterProps();

        /**
         * @cloudformation_attribute MasterPublicDNS
         */
        @core.Resource.attribute('MasterPublicDNS')
        readonly masterPublicDns: core.Token

        static readonly RESOURCE_TYPE = 'AWS::EMR::Cluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Cluster.RESOURCE_TYPE, logicalId, Cluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.emr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html
     */
    export class InstanceFleetConfigProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-clusterid
         */
        ClusterId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancefleettype
         */
        InstanceFleetType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfigs
         */
        InstanceTypeConfigs?: aws.emr.InstanceFleetConfig.InstanceTypeConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-launchspecifications
         */
        LaunchSpecifications?: aws.emr.InstanceFleetConfig.InstanceFleetProvisioningSpecificationsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-targetondemandcapacity
         */
        TargetOnDemandCapacity?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html#cfn-elasticmapreduce-instancefleetconfig-targetspotcapacity
         */
        TargetSpotCapacity?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html
     */
    export class InstanceFleetConfig extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InstanceFleetConfigProps();

        static readonly RESOURCE_TYPE = 'AWS::EMR::InstanceFleetConfig'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(InstanceFleetConfig.RESOURCE_TYPE, logicalId, InstanceFleetConfig.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.emr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html
     */
    export class InstanceGroupConfigProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-elasticmapreduce-instancegroupconfig-autoscalingpolicy
         */
        AutoScalingPolicy?: aws.emr.InstanceGroupConfig.AutoScalingPolicyProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-bidprice
         */
        BidPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-configurations
         */
        Configurations?: aws.emr.InstanceGroupConfig.ConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-ebsconfiguration
         */
        EbsConfiguration?: aws.emr.InstanceGroupConfig.EbsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfiginstancecount-
         */
        InstanceCount: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-instancerole
         */
        InstanceRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-jobflowid
         */
        JobFlowId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-market
         */
        Market?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html#cfn-emr-instancegroupconfig-name
         */
        Name?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html
     */
    export class InstanceGroupConfig extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InstanceGroupConfigProps();

        static readonly RESOURCE_TYPE = 'AWS::EMR::InstanceGroupConfig'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(InstanceGroupConfig.RESOURCE_TYPE, logicalId, InstanceGroupConfig.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.emr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html
     */
    export class SecurityConfigurationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html#cfn-emr-securityconfiguration-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html#cfn-emr-securityconfiguration-securityconfiguration
         */
        SecurityConfiguration: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html
     */
    export class SecurityConfiguration extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityConfigurationProps();

        static readonly RESOURCE_TYPE = 'AWS::EMR::SecurityConfiguration'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityConfiguration.RESOURCE_TYPE, logicalId, SecurityConfiguration.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.emr {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html
     */
    export class StepProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html#cfn-elasticmapreduce-step-actiononfailure
         */
        ActionOnFailure: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html#cfn-elasticmapreduce-step-hadoopjarstep
         */
        HadoopJarStep: aws.emr.Step.HadoopJarStepConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html#cfn-elasticmapreduce-step-jobflowid
         */
        JobFlowId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html#cfn-elasticmapreduce-step-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html
     */
    export class Step extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StepProps();

        static readonly RESOURCE_TYPE = 'AWS::EMR::Step'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Step.RESOURCE_TYPE, logicalId, Step.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html
     */
    export class CacheClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-azmode
         */
        AZMode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-autominorversionupgrade
         */
        AutoMinorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachenodetype
         */
        CacheNodeType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cacheparametergroupname
         */
        CacheParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachesecuritygroupnames
         */
        CacheSecurityGroupNames?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-cachesubnetgroupname
         */
        CacheSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-clustername
         */
        ClusterName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-engine
         */
        Engine: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-engineversion
         */
        EngineVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-notificationtopicarn
         */
        NotificationTopicArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-numcachenodes
         */
        NumCacheNodes: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredavailabilityzone
         */
        PreferredAvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredavailabilityzones
         */
        PreferredAvailabilityZones?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotarns
         */
        SnapshotArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotname
         */
        SnapshotName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotretentionlimit
         */
        SnapshotRetentionLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-snapshotwindow
         */
        SnapshotWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#cfn-elasticache-cachecluster-vpcsecuritygroupids
         */
        VpcSecurityGroupIds?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html
     */
    export class CacheCluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CacheClusterProps();

        /**
         * @cloudformation_attribute ConfigurationEndpoint.Address
         */
        @core.Resource.attribute('ConfigurationEndpoint.Address')
        readonly configurationEndpointAddress: core.Token

        /**
         * @cloudformation_attribute ConfigurationEndpoint.Port
         */
        @core.Resource.attribute('ConfigurationEndpoint.Port')
        readonly configurationEndpointPort: core.Token

        /**
         * @cloudformation_attribute RedisEndpoint.Address
         */
        @core.Resource.attribute('RedisEndpoint.Address')
        readonly redisEndpointAddress: core.Token

        /**
         * @cloudformation_attribute RedisEndpoint.Port
         */
        @core.Resource.attribute('RedisEndpoint.Port')
        readonly redisEndpointPort: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::CacheCluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(CacheCluster.RESOURCE_TYPE, logicalId, CacheCluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html
     */
    export class ParameterGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html#cfn-elasticache-parametergroup-cacheparametergroupfamily
         */
        CacheParameterGroupFamily: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html#cfn-elasticache-parametergroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html#cfn-elasticache-parametergroup-properties
         */
        Properties?: { [key: string]: (string | core.Token) };

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-parameter-group.html
     */
    export class ParameterGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ParameterGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::ParameterGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ParameterGroup.RESOURCE_TYPE, logicalId, ParameterGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html
     */
    export class ReplicationGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-autominorversionupgrade
         */
        AutoMinorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-automaticfailoverenabled
         */
        AutomaticFailoverEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachenodetype
         */
        CacheNodeType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cacheparametergroupname
         */
        CacheParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesecuritygroupnames
         */
        CacheSecurityGroupNames?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesubnetgroupname
         */
        CacheSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engine
         */
        Engine?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engineversion
         */
        EngineVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-nodegroupconfiguration
         */
        NodeGroupConfiguration?: aws.elasticache.ReplicationGroup.NodeGroupConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-notificationtopicarn
         */
        NotificationTopicArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numcacheclusters
         */
        NumCacheClusters?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numnodegroups
         */
        NumNodeGroups?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredcacheclusterazs
         */
        PreferredCacheClusterAZs?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-primaryclusterid
         */
        PrimaryClusterId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicaspernodegroup
         */
        ReplicasPerNodeGroup?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupdescription
         */
        ReplicationGroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupid
         */
        ReplicationGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-securitygroupids
         */
        SecurityGroupIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotarns
         */
        SnapshotArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotname
         */
        SnapshotName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotretentionlimit
         */
        SnapshotRetentionLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotwindow
         */
        SnapshotWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshottingclusterid
         */
        SnapshottingClusterId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html
     */
    export class ReplicationGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ReplicationGroupProps();

        /**
         * @cloudformation_attribute ConfigurationEndPoint.Address
         */
        @core.Resource.attribute('ConfigurationEndPoint.Address')
        readonly configurationEndPointAddress: core.Token

        /**
         * @cloudformation_attribute ConfigurationEndPoint.Port
         */
        @core.Resource.attribute('ConfigurationEndPoint.Port')
        readonly configurationEndPointPort: core.Token

        /**
         * @cloudformation_attribute PrimaryEndPoint.Address
         */
        @core.Resource.attribute('PrimaryEndPoint.Address')
        readonly primaryEndPointAddress: core.Token

        /**
         * @cloudformation_attribute PrimaryEndPoint.Port
         */
        @core.Resource.attribute('PrimaryEndPoint.Port')
        readonly primaryEndPointPort: core.Token

        /**
         * @cloudformation_attribute ReadEndPoint.Addresses
         */
        @core.Resource.attribute('ReadEndPoint.Addresses')
        readonly readEndPointAddresses: core.Token

        /**
         * @cloudformation_attribute ReadEndPoint.Addresses.List
         */
        @core.Resource.attribute('ReadEndPoint.Addresses.List')
        readonly readEndPointAddressesList: core.Token

        /**
         * @cloudformation_attribute ReadEndPoint.Ports
         */
        @core.Resource.attribute('ReadEndPoint.Ports')
        readonly readEndPointPorts: core.Token

        /**
         * @cloudformation_attribute ReadEndPoint.Ports.List
         */
        @core.Resource.attribute('ReadEndPoint.Ports.List')
        readonly readEndPointPortsList: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::ReplicationGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ReplicationGroup.RESOURCE_TYPE, logicalId, ReplicationGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html
     */
    export class SecurityGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html#cfn-elasticache-securitygroup-description
         */
        Description: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html
     */
    export class SecurityGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::SecurityGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityGroup.RESOURCE_TYPE, logicalId, SecurityGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html
     */
    export class SecurityGroupIngressProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html#cfn-elasticache-securitygroupingress-cachesecuritygroupname
         */
        CacheSecurityGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html#cfn-elasticache-securitygroupingress-ec2securitygroupname
         */
        EC2SecurityGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html#cfn-elasticache-securitygroupingress-ec2securitygroupownerid
         */
        EC2SecurityGroupOwnerId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html
     */
    export class SecurityGroupIngress extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SecurityGroupIngressProps();

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::SecurityGroupIngress'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SecurityGroupIngress.RESOURCE_TYPE, logicalId, SecurityGroupIngress.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticache {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html
     */
    export class SubnetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html#cfn-elasticache-subnetgroup-cachesubnetgroupname
         */
        CacheSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html#cfn-elasticache-subnetgroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html#cfn-elasticache-subnetgroup-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html
     */
    export class SubnetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubnetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::ElastiCache::SubnetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubnetGroup.RESOURCE_TYPE, logicalId, SubnetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticbeanstalk {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html
     */
    export class ApplicationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html#cfn-elasticbeanstalk-application-name
         */
        ApplicationName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html#cfn-elasticbeanstalk-application-description
         */
        Description?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html
     */
    export class Application extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationProps();

        static readonly RESOURCE_TYPE = 'AWS::ElasticBeanstalk::Application'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Application.RESOURCE_TYPE, logicalId, Application.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticbeanstalk {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html
     */
    export class ApplicationVersionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html#cfn-elasticbeanstalk-applicationversion-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html#cfn-elasticbeanstalk-applicationversion-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html#cfn-elasticbeanstalk-applicationversion-sourcebundle
         */
        SourceBundle: aws.elasticbeanstalk.ApplicationVersion.SourceBundleProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-version.html
     */
    export class ApplicationVersion extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationVersionProps();

        static readonly RESOURCE_TYPE = 'AWS::ElasticBeanstalk::ApplicationVersion'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ApplicationVersion.RESOURCE_TYPE, logicalId, ApplicationVersion.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticbeanstalk {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html
     */
    export class ConfigurationTemplateProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-environmentid
         */
        EnvironmentId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-optionsettings
         */
        OptionSettings?: aws.elasticbeanstalk.ConfigurationTemplate.ConfigurationOptionSettingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-solutionstackname
         */
        SolutionStackName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-sourceconfiguration
         */
        SourceConfiguration?: aws.elasticbeanstalk.ConfigurationTemplate.SourceConfigurationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html
     */
    export class ConfigurationTemplate extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ConfigurationTemplateProps();

        static readonly RESOURCE_TYPE = 'AWS::ElasticBeanstalk::ConfigurationTemplate'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ConfigurationTemplate.RESOURCE_TYPE, logicalId, ConfigurationTemplate.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticbeanstalk {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html
     */
    export class EnvironmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-cnameprefix
         */
        CNAMEPrefix?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-name
         */
        EnvironmentName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-optionsettings
         */
        OptionSettings?: aws.elasticbeanstalk.Environment.OptionSettingsProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-solutionstackname
         */
        SolutionStackName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-elasticbeanstalk-environment-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-templatename
         */
        TemplateName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-tier
         */
        Tier?: aws.elasticbeanstalk.Environment.TierProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-versionlabel
         */
        VersionLabel?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html
     */
    export class Environment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EnvironmentProps();

        /**
         * @cloudformation_attribute EndpointURL
         */
        @core.Resource.attribute('EndpointURL')
        readonly endpointUrl: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElasticBeanstalk::Environment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Environment.RESOURCE_TYPE, logicalId, Environment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticloadbalancing {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html
     */
    export class LoadBalancerProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-accessloggingpolicy
         */
        AccessLoggingPolicy?: aws.elasticloadbalancing.LoadBalancer.AccessLoggingPolicyProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-appcookiestickinesspolicy
         */
        AppCookieStickinessPolicy?: aws.elasticloadbalancing.LoadBalancer.AppCookieStickinessPolicyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-availabilityzones
         */
        AvailabilityZones?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-connectiondrainingpolicy
         */
        ConnectionDrainingPolicy?: aws.elasticloadbalancing.LoadBalancer.ConnectionDrainingPolicyProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-connectionsettings
         */
        ConnectionSettings?: aws.elasticloadbalancing.LoadBalancer.ConnectionSettingsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-crosszone
         */
        CrossZone?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-healthcheck
         */
        HealthCheck?: aws.elasticloadbalancing.LoadBalancer.HealthCheckProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-instances
         */
        Instances?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-lbcookiestickinesspolicy
         */
        LBCookieStickinessPolicy?: aws.elasticloadbalancing.LoadBalancer.LBCookieStickinessPolicyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-listeners
         */
        Listeners: aws.elasticloadbalancing.LoadBalancer.ListenersProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-elbname
         */
        LoadBalancerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-policies
         */
        Policies?: aws.elasticloadbalancing.LoadBalancer.PoliciesProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-scheme
         */
        Scheme?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-securitygroups
         */
        SecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-ec2-elb-subnets
         */
        Subnets?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html#cfn-elasticloadbalancing-loadbalancer-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html
     */
    export class LoadBalancer extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LoadBalancerProps();

        /**
         * @cloudformation_attribute CanonicalHostedZoneName
         */
        @core.Resource.attribute('CanonicalHostedZoneName')
        readonly canonicalHostedZoneName: core.Token

        /**
         * @cloudformation_attribute CanonicalHostedZoneNameID
         */
        @core.Resource.attribute('CanonicalHostedZoneNameID')
        readonly canonicalHostedZoneNameId: core.Token

        /**
         * @cloudformation_attribute DNSName
         */
        @core.Resource.attribute('DNSName')
        readonly dnsName: core.Token

        /**
         * @cloudformation_attribute SourceSecurityGroup.GroupName
         */
        @core.Resource.attribute('SourceSecurityGroup.GroupName')
        readonly sourceSecurityGroupGroupName: core.Token

        /**
         * @cloudformation_attribute SourceSecurityGroup.OwnerAlias
         */
        @core.Resource.attribute('SourceSecurityGroup.OwnerAlias')
        readonly sourceSecurityGroupOwnerAlias: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElasticLoadBalancing::LoadBalancer'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LoadBalancer.RESOURCE_TYPE, logicalId, LoadBalancer.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticloadbalancingv2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html
     */
    export class ListenerProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-certificates
         */
        Certificates?: aws.elasticloadbalancingv2.Listener.CertificateProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-defaultactions
         */
        DefaultActions: aws.elasticloadbalancingv2.Listener.ActionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-loadbalancerarn
         */
        LoadBalancerArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-port
         */
        Port: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-protocol
         */
        Protocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-sslpolicy
         */
        SslPolicy?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html
     */
    export class Listener extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ListenerProps();

        static readonly RESOURCE_TYPE = 'AWS::ElasticLoadBalancingV2::Listener'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Listener.RESOURCE_TYPE, logicalId, Listener.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticloadbalancingv2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html
     */
    export class ListenerRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html#cfn-elasticloadbalancingv2-listenerrule-actions
         */
        Actions: aws.elasticloadbalancingv2.ListenerRule.ActionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html#cfn-elasticloadbalancingv2-listenerrule-conditions
         */
        Conditions: aws.elasticloadbalancingv2.ListenerRule.RuleConditionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html#cfn-elasticloadbalancingv2-listenerrule-listenerarn
         */
        ListenerArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html#cfn-elasticloadbalancingv2-listenerrule-priority
         */
        Priority: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html
     */
    export class ListenerRule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ListenerRuleProps();

        static readonly RESOURCE_TYPE = 'AWS::ElasticLoadBalancingV2::ListenerRule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ListenerRule.RESOURCE_TYPE, logicalId, ListenerRule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticloadbalancingv2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
     */
    export class LoadBalancerProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-ipaddresstype
         */
        IpAddressType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-loadbalancerattributes
         */
        LoadBalancerAttributes?: aws.elasticloadbalancingv2.LoadBalancer.LoadBalancerAttributeProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-scheme
         */
        Scheme?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-securitygroups
         */
        SecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-subnetmappings
         */
        SubnetMappings?: aws.elasticloadbalancingv2.LoadBalancer.SubnetMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-subnets
         */
        Subnets?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html#cfn-elasticloadbalancingv2-loadbalancer-type
         */
        Type?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
     */
    export class LoadBalancer extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LoadBalancerProps();

        /**
         * @cloudformation_attribute CanonicalHostedZoneID
         */
        @core.Resource.attribute('CanonicalHostedZoneID')
        readonly canonicalHostedZoneId: core.Token

        /**
         * @cloudformation_attribute DNSName
         */
        @core.Resource.attribute('DNSName')
        readonly dnsName: core.Token

        /**
         * @cloudformation_attribute LoadBalancerFullName
         */
        @core.Resource.attribute('LoadBalancerFullName')
        readonly loadBalancerFullName: core.Token

        /**
         * @cloudformation_attribute LoadBalancerName
         */
        @core.Resource.attribute('LoadBalancerName')
        readonly loadBalancerName: core.Token

        /**
         * @cloudformation_attribute SecurityGroups
         */
        @core.Resource.attribute('SecurityGroups')
        readonly securityGroups: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElasticLoadBalancingV2::LoadBalancer'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LoadBalancer.RESOURCE_TYPE, logicalId, LoadBalancer.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticloadbalancingv2 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html
     */
    export class TargetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckintervalseconds
         */
        HealthCheckIntervalSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckpath
         */
        HealthCheckPath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckport
         */
        HealthCheckPort?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckprotocol
         */
        HealthCheckProtocol?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthchecktimeoutseconds
         */
        HealthCheckTimeoutSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthythresholdcount
         */
        HealthyThresholdCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-matcher
         */
        Matcher?: aws.elasticloadbalancingv2.TargetGroup.MatcherProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-port
         */
        Port: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-protocol
         */
        Protocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targetgroupattributes
         */
        TargetGroupAttributes?: aws.elasticloadbalancingv2.TargetGroup.TargetGroupAttributeProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targettype
         */
        TargetType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targets
         */
        Targets?: aws.elasticloadbalancingv2.TargetGroup.TargetDescriptionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-unhealthythresholdcount
         */
        UnhealthyThresholdCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-vpcid
         */
        VpcId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html
     */
    export class TargetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TargetGroupProps();

        /**
         * @cloudformation_attribute LoadBalancerArns
         */
        @core.Resource.attribute('LoadBalancerArns')
        readonly loadBalancerArns: core.Token

        static readonly RESOURCE_TYPE = 'AWS::ElasticLoadBalancingV2::TargetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(TargetGroup.RESOURCE_TYPE, logicalId, TargetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.elasticsearch {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html
     */
    export class DomainProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-accesspolicies
         */
        AccessPolicies?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedoptions
         */
        AdvancedOptions?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-domainname
         */
        DomainName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-ebsoptions
         */
        EBSOptions?: aws.elasticsearch.Domain.EBSOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchclusterconfig
         */
        ElasticsearchClusterConfig?: aws.elasticsearch.Domain.ElasticsearchClusterConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchversion
         */
        ElasticsearchVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-snapshotoptions
         */
        SnapshotOptions?: aws.elasticsearch.Domain.SnapshotOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html
     */
    export class Domain extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DomainProps();

        /**
         * @cloudformation_attribute DomainArn
         */
        @core.Resource.attribute('DomainArn')
        readonly domainArn: core.Token

        /**
         * @cloudformation_attribute DomainEndpoint
         */
        @core.Resource.attribute('DomainEndpoint')
        readonly domainEndpoint: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Elasticsearch::Domain'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Domain.RESOURCE_TYPE, logicalId, Domain.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.events {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
     */
    export class CfnRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern
         */
        EventPattern?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn
         */
        RoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression
         */
        ScheduleExpression?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state
         */
        State?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets
         */
        Targets?: aws.events.Rule.TargetProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
     */
    export class Rule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CfnRuleProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Events::Rule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Rule.RESOURCE_TYPE, logicalId, Rule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.gamelift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html
     */
    export class AliasProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html#cfn-gamelift-alias-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html#cfn-gamelift-alias-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html#cfn-gamelift-alias-routingstrategy
         */
        RoutingStrategy: aws.gamelift.Alias.RoutingStrategyProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-alias.html
     */
    export class Alias extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AliasProps();

        static readonly RESOURCE_TYPE = 'AWS::GameLift::Alias'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Alias.RESOURCE_TYPE, logicalId, Alias.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.gamelift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html
     */
    export class BuildProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html#cfn-gamelift-build-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html#cfn-gamelift-build-storagelocation
         */
        StorageLocation?: aws.gamelift.Build.S3LocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html#cfn-gamelift-build-version
         */
        Version?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-build.html
     */
    export class Build extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new BuildProps();

        static readonly RESOURCE_TYPE = 'AWS::GameLift::Build'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Build.RESOURCE_TYPE, logicalId, Build.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.gamelift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html
     */
    export class FleetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-buildid
         */
        BuildId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-desiredec2instances
         */
        DesiredEC2Instances: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-ec2inboundpermissions
         */
        EC2InboundPermissions?: aws.gamelift.Fleet.IpPermissionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-ec2instancetype
         */
        EC2InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-logpaths
         */
        LogPaths?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-maxsize
         */
        MaxSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-minsize
         */
        MinSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-serverlaunchparameters
         */
        ServerLaunchParameters?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html#cfn-gamelift-fleet-serverlaunchpath
         */
        ServerLaunchPath: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-fleet.html
     */
    export class Fleet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new FleetProps();

        static readonly RESOURCE_TYPE = 'AWS::GameLift::Fleet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Fleet.RESOURCE_TYPE, logicalId, Fleet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
     */
    export class AccessKeyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-serial
         */
        Serial?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-status
         */
        Status?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html#cfn-iam-accesskey-username
         */
        UserName: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html
     */
    export class AccessKey extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AccessKeyProps();

        /**
         * @cloudformation_attribute SecretAccessKey
         */
        @core.Resource.attribute('SecretAccessKey')
        readonly secretAccessKey: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IAM::AccessKey'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(AccessKey.RESOURCE_TYPE, logicalId, AccessKey.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
     */
    export class GroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-groupname
         */
        GroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-managepolicyarns
         */
        ManagedPolicyArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html#cfn-iam-group-policies
         */
        Policies?: aws.iam.Group.PolicyProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html
     */
    export class Group extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new GroupProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IAM::Group'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Group.RESOURCE_TYPE, logicalId, Group.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
     */
    export class InstanceProfileProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-instanceprofilename
         */
        InstanceProfileName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html#cfn-iam-instanceprofile-roles
         */
        Roles: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html
     */
    export class InstanceProfile extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InstanceProfileProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IAM::InstanceProfile'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(InstanceProfile.RESOURCE_TYPE, logicalId, InstanceProfile.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
     */
    export class ManagedPolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-groups
         */
        Groups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-managedpolicyname
         */
        ManagedPolicyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-ec2-dhcpoptions-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-roles
         */
        Roles?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-users
         */
        Users?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html
     */
    export class ManagedPolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ManagedPolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::IAM::ManagedPolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ManagedPolicy.RESOURCE_TYPE, logicalId, ManagedPolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
     */
    export class PolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-groups
         */
        Groups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-policyname
         */
        PolicyName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-roles
         */
        Roles?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html#cfn-iam-policy-users
         */
        Users?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html
     */
    export class Policy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::IAM::Policy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Policy.RESOURCE_TYPE, logicalId, Policy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
     */
    export class RoleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-assumerolepolicydocument
         */
        AssumeRolePolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns
         */
        ManagedPolicyArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-policies
         */
        Policies?: aws.iam.Role.PolicyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-rolename
         */
        RoleName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
     */
    export class Role extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RoleProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IAM::Role'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Role.RESOURCE_TYPE, logicalId, Role.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
     */
    export class UserProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-groups
         */
        Groups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-loginprofile
         */
        LoginProfile?: aws.iam.User.LoginProfileProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-managepolicyarns
         */
        ManagedPolicyArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-policies
         */
        Policies?: aws.iam.User.PolicyProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html#cfn-iam-user-username
         */
        UserName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html
     */
    export class User extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IAM::User'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(User.RESOURCE_TYPE, logicalId, User.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iam {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
     */
    export class UserToGroupAdditionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html#cfn-iam-addusertogroup-groupname
         */
        GroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html#cfn-iam-addusertogroup-users
         */
        Users: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html
     */
    export class UserToGroupAddition extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserToGroupAdditionProps();

        static readonly RESOURCE_TYPE = 'AWS::IAM::UserToGroupAddition'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserToGroupAddition.RESOURCE_TYPE, logicalId, UserToGroupAddition.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html
     */
    export class CertificateProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html#cfn-iot-certificate-certificatesigningrequest
         */
        CertificateSigningRequest: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html#cfn-iot-certificate-status
         */
        Status: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-certificate.html
     */
    export class Certificate extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CertificateProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IoT::Certificate'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Certificate.RESOURCE_TYPE, logicalId, Certificate.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html
     */
    export class PolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html#cfn-iot-policy-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html#cfn-iot-policy-policyname
         */
        PolicyName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policy.html
     */
    export class Policy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PolicyProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IoT::Policy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Policy.RESOURCE_TYPE, logicalId, Policy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html
     */
    export class PolicyPrincipalAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html#cfn-iot-policyprincipalattachment-policyname
         */
        PolicyName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html#cfn-iot-policyprincipalattachment-principal
         */
        Principal: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-policyprincipalattachment.html
     */
    export class PolicyPrincipalAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PolicyPrincipalAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::IoT::PolicyPrincipalAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(PolicyPrincipalAttachment.RESOURCE_TYPE, logicalId, PolicyPrincipalAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html
     */
    export class ThingProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html#cfn-iot-thing-attributepayload
         */
        AttributePayload?: aws.iot.Thing.AttributePayloadProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html#cfn-iot-thing-thingname
         */
        ThingName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html
     */
    export class Thing extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ThingProps();

        static readonly RESOURCE_TYPE = 'AWS::IoT::Thing'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Thing.RESOURCE_TYPE, logicalId, Thing.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html
     */
    export class ThingPrincipalAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html#cfn-iot-thingprincipalattachment-principal
         */
        Principal: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html#cfn-iot-thingprincipalattachment-thingname
         */
        ThingName: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thingprincipalattachment.html
     */
    export class ThingPrincipalAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ThingPrincipalAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::IoT::ThingPrincipalAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ThingPrincipalAttachment.RESOURCE_TYPE, logicalId, ThingPrincipalAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.iot {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html
     */
    export class TopicRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html#cfn-iot-topicrule-rulename
         */
        RuleName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html#cfn-iot-topicrule-topicrulepayload
         */
        TopicRulePayload: aws.iot.TopicRule.TopicRulePayloadProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicrule.html
     */
    export class TopicRule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TopicRuleProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::IoT::TopicRule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(TopicRule.RESOURCE_TYPE, logicalId, TopicRule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
     */
    export class AliasProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html#cfn-kms-alias-aliasname
         */
        AliasName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html#cfn-kms-alias-targetkeyid
         */
        TargetKeyId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
     */
    export class Alias extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AliasProps();

        static readonly RESOURCE_TYPE = 'AWS::KMS::Alias'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Alias.RESOURCE_TYPE, logicalId, Alias.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kms {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
     */
    export class KeyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enablekeyrotation
         */
        EnableKeyRotation?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy
         */
        KeyPolicy: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage
         */
        KeyUsage?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
     */
    export class Key extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new KeyProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::KMS::Key'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Key.RESOURCE_TYPE, logicalId, Key.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kinesis {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html
     */
    export class StreamProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-retentionperiodhours
         */
        RetentionPeriodHours?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-shardcount
         */
        ShardCount: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html#cfn-kinesis-stream-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html
     */
    export class Stream extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StreamProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Kinesis::Stream'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Stream.RESOURCE_TYPE, logicalId, Stream.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kinesisanalytics {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html
     */
    export class ApplicationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationname
         */
        ApplicationName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-inputs
         */
        Inputs: aws.kinesisanalytics.Application.InputProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationdescription
         */
        ApplicationDescription?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html#cfn-kinesisanalytics-application-applicationcode
         */
        ApplicationCode?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-application.html
     */
    export class Application extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationProps();

        static readonly RESOURCE_TYPE = 'AWS::KinesisAnalytics::Application'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Application.RESOURCE_TYPE, logicalId, Application.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kinesisanalytics {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html
     */
    export class ApplicationOutputProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html#cfn-kinesisanalytics-applicationoutput-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html#cfn-kinesisanalytics-applicationoutput-output
         */
        CfnOutput: aws.kinesisanalytics.ApplicationOutput.OutputProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationoutput.html
     */
    export class ApplicationOutput extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationOutputProps();

        static readonly RESOURCE_TYPE = 'AWS::KinesisAnalytics::ApplicationOutput'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ApplicationOutput.RESOURCE_TYPE, logicalId, ApplicationOutput.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kinesisanalytics {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html
     */
    export class ApplicationReferenceDataSourceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource
         */
        ReferenceDataSource: aws.kinesisanalytics.ApplicationReferenceDataSource.ReferenceDataSourceProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisanalytics-applicationreferencedatasource.html
     */
    export class ApplicationReferenceDataSource extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ApplicationReferenceDataSourceProps();

        static readonly RESOURCE_TYPE = 'AWS::KinesisAnalytics::ApplicationReferenceDataSource'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ApplicationReferenceDataSource.RESOURCE_TYPE, logicalId, ApplicationReferenceDataSource.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.kinesisfirehose {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html
     */
    export class DeliveryStreamProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-deliverystreamname
         */
        DeliveryStreamName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration
         */
        ElasticsearchDestinationConfiguration?: aws.kinesisfirehose.DeliveryStream.ElasticsearchDestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration
         */
        ExtendedS3DestinationConfiguration?: aws.kinesisfirehose.DeliveryStream.ExtendedS3DestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration
         */
        RedshiftDestinationConfiguration?: aws.kinesisfirehose.DeliveryStream.RedshiftDestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration
         */
        S3DestinationConfiguration?: aws.kinesisfirehose.DeliveryStream.S3DestinationConfigurationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html
     */
    export class DeliveryStream extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DeliveryStreamProps();

        static readonly RESOURCE_TYPE = 'AWS::KinesisFirehose::DeliveryStream'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DeliveryStream.RESOURCE_TYPE, logicalId, DeliveryStream.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.lambda {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
     */
    export class AliasProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-functionname
         */
        FunctionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-functionversion
         */
        FunctionVersion: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
     */
    export class Alias extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AliasProps();

        static readonly RESOURCE_TYPE = 'AWS::Lambda::Alias'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Alias.RESOURCE_TYPE, logicalId, Alias.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.lambda {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
     */
    export class EventSourceMappingProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-batchsize
         */
        BatchSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-eventsourcearn
         */
        EventSourceArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-functionname
         */
        FunctionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-startingposition
         */
        StartingPosition: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
     */
    export class EventSourceMapping extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EventSourceMappingProps();

        static readonly RESOURCE_TYPE = 'AWS::Lambda::EventSourceMapping'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EventSourceMapping.RESOURCE_TYPE, logicalId, EventSourceMapping.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.lambda {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
     */
    export class FunctionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-code
         */
        Code: aws.lambda.Function.CodeProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-deadletterconfig
         */
        DeadLetterConfig?: aws.lambda.Function.DeadLetterConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment
         */
        Environment?: aws.lambda.Function.EnvironmentProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname
         */
        FunctionName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-handler
         */
        Handler: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-kmskeyarn
         */
        KmsKeyArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-memorysize
         */
        MemorySize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-role
         */
        Role: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-runtime
         */
        Runtime: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-timeout
         */
        Timeout?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tracingconfig
         */
        TracingConfig?: aws.lambda.Function.TracingConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-vpcconfig
         */
        VpcConfig?: aws.lambda.Function.VpcConfigProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
     */
    export class Function extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new FunctionProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Lambda::Function'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Function.RESOURCE_TYPE, logicalId, Function.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.lambda {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
     */
    export class PermissionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-action
         */
        Action: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-eventsourcetoken
         */
        EventSourceToken?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-functionname
         */
        FunctionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-principal
         */
        Principal: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-sourceaccount
         */
        SourceAccount?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-sourcearn
         */
        SourceArn?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
     */
    export class Permission extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new PermissionProps();

        static readonly RESOURCE_TYPE = 'AWS::Lambda::Permission'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Permission.RESOURCE_TYPE, logicalId, Permission.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.lambda {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
     */
    export class VersionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-codesha256
         */
        CodeSha256?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-functionname
         */
        FunctionName: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
     */
    export class Version extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VersionProps();

        /**
         * @cloudformation_attribute Version
         */
        @core.Resource.attribute('Version')
        readonly version: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Lambda::Version'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Version.RESOURCE_TYPE, logicalId, Version.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.logs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html
     */
    export class DestinationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html#cfn-logs-destination-destinationname
         */
        DestinationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html#cfn-logs-destination-destinationpolicy
         */
        DestinationPolicy: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html#cfn-logs-destination-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html#cfn-logs-destination-targetarn
         */
        TargetArn: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-destination.html
     */
    export class Destination extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DestinationProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Logs::Destination'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Destination.RESOURCE_TYPE, logicalId, Destination.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.logs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html
     */
    export class LogGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html#cfn-cwl-loggroup-loggroupname
         */
        LogGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html#cfn-cwl-loggroup-retentionindays
         */
        RetentionInDays?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html
     */
    export class LogGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LogGroupProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Logs::LogGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LogGroup.RESOURCE_TYPE, logicalId, LogGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.logs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html
     */
    export class LogStreamProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html#cfn-logs-logstream-loggroupname
         */
        LogGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html#cfn-logs-logstream-logstreamname
         */
        LogStreamName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-logstream.html
     */
    export class LogStream extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LogStreamProps();

        static readonly RESOURCE_TYPE = 'AWS::Logs::LogStream'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(LogStream.RESOURCE_TYPE, logicalId, LogStream.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.logs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html
     */
    export class MetricFilterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html#cfn-cwl-metricfilter-filterpattern
         */
        FilterPattern: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html#cfn-cwl-metricfilter-loggroupname
         */
        LogGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html#cfn-cwl-metricfilter-metrictransformations
         */
        MetricTransformations: aws.logs.MetricFilter.MetricTransformationProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html
     */
    export class MetricFilter extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new MetricFilterProps();

        static readonly RESOURCE_TYPE = 'AWS::Logs::MetricFilter'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(MetricFilter.RESOURCE_TYPE, logicalId, MetricFilter.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.logs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
     */
    export class SubscriptionFilterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html#cfn-cwl-subscriptionfilter-destinationarn
         */
        DestinationArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html#cfn-cwl-subscriptionfilter-filterpattern
         */
        FilterPattern: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html#cfn-cwl-subscriptionfilter-loggroupname
         */
        LogGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html#cfn-cwl-subscriptionfilter-rolearn
         */
        RoleArn?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
     */
    export class SubscriptionFilter extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubscriptionFilterProps();

        static readonly RESOURCE_TYPE = 'AWS::Logs::SubscriptionFilter'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SubscriptionFilter.RESOURCE_TYPE, logicalId, SubscriptionFilter.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html
     */
    export class AppProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-appsource
         */
        AppSource?: aws.opsworks.App.SourceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-attributes
         */
        Attributes?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-datasources
         */
        DataSources?: aws.opsworks.App.DataSourceProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-domains
         */
        Domains?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-enablessl
         */
        EnableSsl?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-environment
         */
        Environment?: aws.opsworks.App.EnvironmentVariableProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-shortname
         */
        Shortname?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-sslconfiguration
         */
        SslConfiguration?: aws.opsworks.App.SslConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-stackid
         */
        StackId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html#cfn-opsworks-app-type
         */
        Type: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html
     */
    export class App extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AppProps();

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::App'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(App.RESOURCE_TYPE, logicalId, App.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html
     */
    export class ElasticLoadBalancerAttachmentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html#cfn-opsworks-elbattachment-elbname
         */
        ElasticLoadBalancerName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html#cfn-opsworks-elbattachment-layerid
         */
        LayerId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html
     */
    export class ElasticLoadBalancerAttachment extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ElasticLoadBalancerAttachmentProps();

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::ElasticLoadBalancerAttachment'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ElasticLoadBalancerAttachment.RESOURCE_TYPE, logicalId, ElasticLoadBalancerAttachment.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html
     */
    export class InstanceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-agentversion
         */
        AgentVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-amiid
         */
        AmiId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-architecture
         */
        Architecture?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-autoscalingtype
         */
        AutoScalingType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-blockdevicemappings
         */
        BlockDeviceMappings?: aws.opsworks.Instance.BlockDeviceMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-elasticips
         */
        ElasticIps?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-hostname
         */
        Hostname?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-installupdatesonboot
         */
        InstallUpdatesOnBoot?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-layerids
         */
        LayerIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-os
         */
        Os?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-rootdevicetype
         */
        RootDeviceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-sshkeyname
         */
        SshKeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-stackid
         */
        StackId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-subnetid
         */
        SubnetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-tenancy
         */
        Tenancy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-timebasedautoscaling
         */
        TimeBasedAutoScaling?: aws.opsworks.Instance.TimeBasedAutoScalingProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-virtualizationtype
         */
        VirtualizationType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-volumes
         */
        Volumes?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html
     */
    export class Instance extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new InstanceProps();

        /**
         * @cloudformation_attribute AvailabilityZone
         */
        @core.Resource.attribute('AvailabilityZone')
        readonly availabilityZone: core.Token

        /**
         * @cloudformation_attribute PrivateDnsName
         */
        @core.Resource.attribute('PrivateDnsName')
        readonly privateDnsName: core.Token

        /**
         * @cloudformation_attribute PrivateIp
         */
        @core.Resource.attribute('PrivateIp')
        readonly privateIp: core.Token

        /**
         * @cloudformation_attribute PublicDnsName
         */
        @core.Resource.attribute('PublicDnsName')
        readonly publicDnsName: core.Token

        /**
         * @cloudformation_attribute PublicIp
         */
        @core.Resource.attribute('PublicIp')
        readonly publicIp: core.Token

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::Instance'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Instance.RESOURCE_TYPE, logicalId, Instance.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html
     */
    export class LayerProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-attributes
         */
        Attributes?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-autoassignelasticips
         */
        AutoAssignElasticIps: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-autoassignpublicips
         */
        AutoAssignPublicIps: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-custominstanceprofilearn
         */
        CustomInstanceProfileArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-customjson
         */
        CustomJson?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-customrecipes
         */
        CustomRecipes?: aws.opsworks.Layer.RecipesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-customsecuritygroupids
         */
        CustomSecurityGroupIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-enableautohealing
         */
        EnableAutoHealing: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-installupdatesonboot
         */
        InstallUpdatesOnBoot?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-lifecycleeventconfiguration
         */
        LifecycleEventConfiguration?: aws.opsworks.Layer.LifecycleEventConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-loadbasedautoscaling
         */
        LoadBasedAutoScaling?: aws.opsworks.Layer.LoadBasedAutoScalingProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-packages
         */
        Packages?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-shortname
         */
        Shortname: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-stackid
         */
        StackId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-useebsoptimizedinstances
         */
        UseEbsOptimizedInstances?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-volumeconfigurations
         */
        VolumeConfigurations?: aws.opsworks.Layer.VolumeConfigurationProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html
     */
    export class Layer extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new LayerProps();

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::Layer'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Layer.RESOURCE_TYPE, logicalId, Layer.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html
     */
    export class StackProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-agentversion
         */
        AgentVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-attributes
         */
        Attributes?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-chefconfiguration
         */
        ChefConfiguration?: aws.opsworks.Stack.ChefConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-cloneappids
         */
        CloneAppIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-clonepermissions
         */
        ClonePermissions?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-configmanager
         */
        ConfigurationManager?: aws.opsworks.Stack.StackConfigurationManagerProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-custcookbooksource
         */
        CustomCookbooksSource?: aws.opsworks.Stack.SourceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-custjson
         */
        CustomJson?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultaz
         */
        DefaultAvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultinstanceprof
         */
        DefaultInstanceProfileArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultos
         */
        DefaultOs?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultrootdevicetype
         */
        DefaultRootDeviceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultsshkeyname
         */
        DefaultSshKeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#defaultsubnet
         */
        DefaultSubnetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-ecsclusterarn
         */
        EcsClusterArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-elasticips
         */
        ElasticIps?: aws.opsworks.Stack.ElasticIpProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-hostnametheme
         */
        HostnameTheme?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-rdsdbinstances
         */
        RdsDbInstances?: aws.opsworks.Stack.RdsDbInstanceProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-servicerolearn
         */
        ServiceRoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-sourcestackid
         */
        SourceStackId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#usecustcookbooks
         */
        UseCustomCookbooks?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-useopsworkssecuritygroups
         */
        UseOpsworksSecurityGroups?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-vpcid
         */
        VpcId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html
     */
    export class Stack extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StackProps();

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::Stack'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Stack.RESOURCE_TYPE, logicalId, Stack.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html
     */
    export class UserProfileProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-allowselfmanagement
         */
        AllowSelfManagement?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-iamuserarn
         */
        IamUserArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-sshpublickey
         */
        SshPublicKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html#cfn-opsworks-userprofile-sshusername
         */
        SshUsername?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html
     */
    export class UserProfile extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new UserProfileProps();

        /**
         * @cloudformation_attribute SshUsername
         */
        @core.Resource.attribute('SshUsername')
        readonly sshUsername: core.Token

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::UserProfile'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(UserProfile.RESOURCE_TYPE, logicalId, UserProfile.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.opsworks {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html
     */
    export class VolumeProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-ec2volumeid
         */
        Ec2VolumeId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-mountpoint
         */
        MountPoint?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-stackid
         */
        StackId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html
     */
    export class Volume extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new VolumeProps();

        static readonly RESOURCE_TYPE = 'AWS::OpsWorks::Volume'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Volume.RESOURCE_TYPE, logicalId, Volume.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html
     */
    export class DBClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-availabilityzones
         */
        AvailabilityZones?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-backuprententionperiod
         */
        BackupRetentionPeriod?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbclusterparametergroupname
         */
        DBClusterParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-dbsubnetgroupname
         */
        DBSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-databasename
         */
        DatabaseName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-engine
         */
        Engine: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-engineversion
         */
        EngineVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-masteruserpassword
         */
        MasterUserPassword?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-masterusername
         */
        MasterUsername?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-preferredbackupwindow
         */
        PreferredBackupWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-replicationsourceidentifier
         */
        ReplicationSourceIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-snapshotidentifier
         */
        SnapshotIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-storageencrypted
         */
        StorageEncrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-vpcsecuritygroupids
         */
        VpcSecurityGroupIds?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html
     */
    export class DBCluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBClusterProps();

        /**
         * @cloudformation_attribute Endpoint.Address
         */
        @core.Resource.attribute('Endpoint.Address')
        readonly endpointAddress: core.Token

        /**
         * @cloudformation_attribute Endpoint.Port
         */
        @core.Resource.attribute('Endpoint.Port')
        readonly endpointPort: core.Token

        /**
         * @cloudformation_attribute ReadEndpoint.Address
         */
        @core.Resource.attribute('ReadEndpoint.Address')
        readonly readEndpointAddress: core.Token

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBCluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBCluster.RESOURCE_TYPE, logicalId, DBCluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html
     */
    export class DBClusterParameterGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-family
         */
        Family: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-parameters
         */
        Parameters: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html#cfn-rds-dbclusterparametergroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbclusterparametergroup.html
     */
    export class DBClusterParameterGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBClusterParameterGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBClusterParameterGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBClusterParameterGroup.RESOURCE_TYPE, logicalId, DBClusterParameterGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html
     */
    export class DBInstanceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-allocatedstorage
         */
        AllocatedStorage?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-allowmajorversionupgrade
         */
        AllowMajorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-autominorversionupgrade
         */
        AutoMinorVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-backupretentionperiod
         */
        BackupRetentionPeriod?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-charactersetname
         */
        CharacterSetName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-copytagstosnapshot
         */
        CopyTagsToSnapshot?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbclusteridentifier
         */
        DBClusterIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbinstanceclass
         */
        DBInstanceClass: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbinstanceidentifier
         */
        DBInstanceIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbname
         */
        DBName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbparametergroupname
         */
        DBParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsecuritygroups
         */
        DBSecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsnapshotidentifier
         */
        DBSnapshotIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsubnetgroupname
         */
        DBSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-domain
         */
        Domain?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-domainiamrolename
         */
        DomainIAMRoleName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-engine
         */
        Engine?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-engineversion
         */
        EngineVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-licensemodel
         */
        LicenseModel?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-masteruserpassword
         */
        MasterUserPassword?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-masterusername
         */
        MasterUsername?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-monitoringinterval
         */
        MonitoringInterval?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-monitoringrolearn
         */
        MonitoringRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-multiaz
         */
        MultiAZ?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-optiongroupname
         */
        OptionGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-port
         */
        Port?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-preferredbackupwindow
         */
        PreferredBackupWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-publiclyaccessible
         */
        PubliclyAccessible?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-sourcedbinstanceidentifier
         */
        SourceDBInstanceIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-storageencrypted
         */
        StorageEncrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-storagetype
         */
        StorageType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-timezone
         */
        Timezone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-vpcsecuritygroups
         */
        VPCSecurityGroups?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html
     */
    export class DBInstance extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBInstanceProps();

        /**
         * @cloudformation_attribute Endpoint.Address
         */
        @core.Resource.attribute('Endpoint.Address')
        readonly endpointAddress: core.Token

        /**
         * @cloudformation_attribute Endpoint.Port
         */
        @core.Resource.attribute('Endpoint.Port')
        readonly endpointPort: core.Token

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBInstance'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBInstance.RESOURCE_TYPE, logicalId, DBInstance.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html
     */
    export class DBParameterGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html#cfn-rds-dbparametergroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html#cfn-rds-dbparametergroup-family
         */
        Family: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html#cfn-rds-dbparametergroup-parameters
         */
        Parameters?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html#cfn-rds-dbparametergroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbparametergroup.html
     */
    export class DBParameterGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBParameterGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBParameterGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBParameterGroup.RESOURCE_TYPE, logicalId, DBParameterGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html
     */
    export class DBSecurityGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html#cfn-rds-dbsecuritygroup-dbsecuritygroupingress
         */
        DBSecurityGroupIngress: aws.rds.DBSecurityGroup.IngressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html#cfn-rds-dbsecuritygroup-ec2vpcid
         */
        EC2VpcId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html#cfn-rds-dbsecuritygroup-groupdescription
         */
        GroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html#cfn-rds-dbsecuritygroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html
     */
    export class DBSecurityGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBSecurityGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBSecurityGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBSecurityGroup.RESOURCE_TYPE, logicalId, DBSecurityGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html
     */
    export class DBSecurityGroupIngressProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html#cfn-rds-securitygroup-ingress-cidrip
         */
        CIDRIP?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html#cfn-rds-securitygroup-ingress-dbsecuritygroupname
         */
        DBSecurityGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html#cfn-rds-securitygroup-ingress-ec2securitygroupid
         */
        EC2SecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html#cfn-rds-securitygroup-ingress-ec2securitygroupname
         */
        EC2SecurityGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html#cfn-rds-securitygroup-ingress-ec2securitygroupownerid
         */
        EC2SecurityGroupOwnerId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-security-group-ingress.html
     */
    export class DBSecurityGroupIngress extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBSecurityGroupIngressProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBSecurityGroupIngress'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBSecurityGroupIngress.RESOURCE_TYPE, logicalId, DBSecurityGroupIngress.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html
     */
    export class DBSubnetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html#cfn-rds-dbsubnetgroup-dbsubnetgroupdescription
         */
        DBSubnetGroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html#cfn-rds-dbsubnetgroup-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html#cfn-rds-dbsubnetgroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbsubnet-group.html
     */
    export class DBSubnetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DBSubnetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::DBSubnetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(DBSubnetGroup.RESOURCE_TYPE, logicalId, DBSubnetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html
     */
    export class EventSubscriptionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-eventcategories
         */
        EventCategories?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-snstopicarn
         */
        SnsTopicArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourceids
         */
        SourceIds?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html#cfn-rds-eventsubscription-sourcetype
         */
        SourceType?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html
     */
    export class EventSubscription extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new EventSubscriptionProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::EventSubscription'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(EventSubscription.RESOURCE_TYPE, logicalId, EventSubscription.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.rds {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html
     */
    export class OptionGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-enginename
         */
        EngineName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-majorengineversion
         */
        MajorEngineVersion: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-optionconfigurations
         */
        OptionConfigurations: aws.rds.OptionGroup.OptionConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-optiongroupdescription
         */
        OptionGroupDescription: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html#cfn-rds-optiongroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-optiongroup.html
     */
    export class OptionGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new OptionGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::RDS::OptionGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(OptionGroup.RESOURCE_TYPE, logicalId, OptionGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.redshift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html
     */
    export class ClusterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-allowversionupgrade
         */
        AllowVersionUpgrade?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-automatedsnapshotretentionperiod
         */
        AutomatedSnapshotRetentionPeriod?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clusterparametergroupname
         */
        ClusterParameterGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clustersecuritygroups
         */
        ClusterSecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clustersubnetgroupname
         */
        ClusterSubnetGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clustertype
         */
        ClusterType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-clusterversion
         */
        ClusterVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-dbname
         */
        DBName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-elasticip
         */
        ElasticIp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-hsmclientcertidentifier
         */
        HsmClientCertificateIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-HsmConfigurationIdentifier
         */
        HsmConfigurationIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-iamroles
         */
        IamRoles?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-kmskeyid
         */
        KmsKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-loggingproperties
         */
        LoggingProperties?: aws.redshift.Cluster.LoggingPropertiesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-masteruserpassword
         */
        MasterUserPassword: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-masterusername
         */
        MasterUsername: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-nodetype
         */
        NodeType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-nodetype
         */
        NumberOfNodes?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-owneraccount
         */
        OwnerAccount?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-preferredmaintenancewindow
         */
        PreferredMaintenanceWindow?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-publiclyaccessible
         */
        PubliclyAccessible?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-snapshotclusteridentifier
         */
        SnapshotClusterIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-snapshotidentifier
         */
        SnapshotIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html#cfn-redshift-cluster-vpcsecuritygroupids
         */
        VpcSecurityGroupIds?: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-cluster.html
     */
    export class Cluster extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterProps();

        /**
         * @cloudformation_attribute Endpoint.Address
         */
        @core.Resource.attribute('Endpoint.Address')
        readonly endpointAddress: core.Token

        /**
         * @cloudformation_attribute Endpoint.Port
         */
        @core.Resource.attribute('Endpoint.Port')
        readonly endpointPort: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Redshift::Cluster'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Cluster.RESOURCE_TYPE, logicalId, Cluster.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.redshift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html
     */
    export class ClusterParameterGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html#cfn-redshift-clusterparametergroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html#cfn-redshift-clusterparametergroup-parametergroupfamily
         */
        ParameterGroupFamily: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html#cfn-redshift-clusterparametergroup-parameters
         */
        Parameters?: aws.redshift.ClusterParameterGroup.ParameterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html#cfn-redshift-clusterparametergroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clusterparametergroup.html
     */
    export class ClusterParameterGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterParameterGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::Redshift::ClusterParameterGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ClusterParameterGroup.RESOURCE_TYPE, logicalId, ClusterParameterGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.redshift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html
     */
    export class ClusterSecurityGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html#cfn-redshift-clustersecuritygroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html#cfn-redshift-clustersecuritygroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroup.html
     */
    export class ClusterSecurityGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterSecurityGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::Redshift::ClusterSecurityGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ClusterSecurityGroup.RESOURCE_TYPE, logicalId, ClusterSecurityGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.redshift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html
     */
    export class ClusterSecurityGroupIngressProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html#cfn-redshift-clustersecuritygroupingress-cidrip
         */
        CIDRIP?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html#cfn-redshift-clustersecuritygroupingress-clustersecuritygroupname
         */
        ClusterSecurityGroupName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html#cfn-redshift-clustersecuritygroupingress-ec2securitygroupname
         */
        EC2SecurityGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html#cfn-redshift-clustersecuritygroupingress-ec2securitygroupownerid
         */
        EC2SecurityGroupOwnerId?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersecuritygroupingress.html
     */
    export class ClusterSecurityGroupIngress extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterSecurityGroupIngressProps();

        static readonly RESOURCE_TYPE = 'AWS::Redshift::ClusterSecurityGroupIngress'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ClusterSecurityGroupIngress.RESOURCE_TYPE, logicalId, ClusterSecurityGroupIngress.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.redshift {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html
     */
    export class ClusterSubnetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html#cfn-redshift-clustersubnetgroup-description
         */
        Description: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html#cfn-redshift-clustersubnetgroup-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html#cfn-redshift-clustersubnetgroup-tags
         */
        Tags?: TagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-redshift-clustersubnetgroup.html
     */
    export class ClusterSubnetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ClusterSubnetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::Redshift::ClusterSubnetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ClusterSubnetGroup.RESOURCE_TYPE, logicalId, ClusterSubnetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.route53 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html
     */
    export class HealthCheckProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html#cfn-route53-healthcheck-healthcheckconfig
         */
        HealthCheckConfig: aws.route53.HealthCheck.HealthCheckConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html#cfn-route53-healthcheck-healthchecktags
         */
        HealthCheckTags?: aws.route53.HealthCheck.HealthCheckTagProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html
     */
    export class HealthCheck extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new HealthCheckProps();

        static readonly RESOURCE_TYPE = 'AWS::Route53::HealthCheck'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(HealthCheck.RESOURCE_TYPE, logicalId, HealthCheck.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.route53 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
     */
    export class HostedZoneProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html#cfn-route53-hostedzone-hostedzoneconfig
         */
        HostedZoneConfig?: aws.route53.HostedZone.HostedZoneConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html#cfn-route53-hostedzone-hostedzonetags
         */
        HostedZoneTags?: aws.route53.HostedZone.HostedZoneTagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html#cfn-route53-hostedzone-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html#cfn-route53-hostedzone-vpcs
         */
        VPCs?: aws.route53.HostedZone.VPCProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
     */
    export class HostedZone extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new HostedZoneProps();

        /**
         * @cloudformation_attribute NameServers
         */
        @core.Resource.attribute('NameServers')
        readonly nameServers: core.Token

        static readonly RESOURCE_TYPE = 'AWS::Route53::HostedZone'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(HostedZone.RESOURCE_TYPE, logicalId, HostedZone.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.route53 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
     */
    export class RecordSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-aliastarget
         */
        AliasTarget?: aws.route53.RecordSet.AliasTargetProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-comment
         */
        Comment?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-failover
         */
        Failover?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-geolocation
         */
        GeoLocation?: aws.route53.RecordSet.GeoLocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-healthcheckid
         */
        HealthCheckId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-hostedzoneid
         */
        HostedZoneId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-hostedzonename
         */
        HostedZoneName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-region
         */
        Region?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-resourcerecords
         */
        ResourceRecords?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-setidentifier
         */
        SetIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-ttl
         */
        TTL?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-weight
         */
        Weight?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
     */
    export class RecordSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RecordSetProps();

        static readonly RESOURCE_TYPE = 'AWS::Route53::RecordSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(RecordSet.RESOURCE_TYPE, logicalId, RecordSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.route53 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html
     */
    export class RecordSetGroupProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html#cfn-route53-recordsetgroup-comment
         */
        Comment?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html#cfn-route53-recordsetgroup-hostedzoneid
         */
        HostedZoneId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html#cfn-route53-recordsetgroup-hostedzonename
         */
        HostedZoneName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html#cfn-route53-recordsetgroup-recordsets
         */
        RecordSets?: aws.route53.RecordSetGroup.RecordSetProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html
     */
    export class RecordSetGroup extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new RecordSetGroupProps();

        static readonly RESOURCE_TYPE = 'AWS::Route53::RecordSetGroup'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(RecordSetGroup.RESOURCE_TYPE, logicalId, RecordSetGroup.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.s3 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
     */
    export class BucketProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accelerateconfiguration
         */
        AccelerateConfiguration?: aws.s3.Bucket.AccelerateConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-accesscontrol
         */
        AccessControl?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-name
         */
        BucketName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-crossoriginconfig
         */
        CorsConfiguration?: aws.s3.Bucket.CorsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-lifecycleconfig
         */
        LifecycleConfiguration?: aws.s3.Bucket.LifecycleConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-loggingconfig
         */
        LoggingConfiguration?: aws.s3.Bucket.LoggingConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-metricsconfigurations
         */
        MetricsConfigurations?: aws.s3.Bucket.MetricsConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-notification
         */
        NotificationConfiguration?: aws.s3.Bucket.NotificationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-replicationconfiguration
         */
        ReplicationConfiguration?: aws.s3.Bucket.ReplicationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-tags
         */
        Tags?: TagProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-versioning
         */
        VersioningConfiguration?: aws.s3.Bucket.VersioningConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-websiteconfiguration
         */
        WebsiteConfiguration?: aws.s3.Bucket.WebsiteConfigurationProperty;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html
     */
    export class Bucket extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new BucketProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute DomainName
         */
        @core.Resource.attribute('DomainName')
        readonly domainName: core.Token

        /**
         * @cloudformation_attribute DualStackDomainName
         */
        @core.Resource.attribute('DualStackDomainName')
        readonly dualStackDomainName: core.Token

        /**
         * @cloudformation_attribute WebsiteURL
         */
        @core.Resource.attribute('WebsiteURL')
        readonly websiteUrl: core.Token

        static readonly RESOURCE_TYPE = 'AWS::S3::Bucket'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Bucket.RESOURCE_TYPE, logicalId, Bucket.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.s3 {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
     */
    export class BucketPolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-bucket
         */
        Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html#aws-properties-s3-policy-policydocument
         */
        PolicyDocument: object | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html
     */
    export class BucketPolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new BucketPolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::S3::BucketPolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(BucketPolicy.RESOURCE_TYPE, logicalId, BucketPolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sdb {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html
     */
    export class DomainProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html#cfn-sdb-domain-description
         */
        Description?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html
     */
    export class Domain extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DomainProps();

        static readonly RESOURCE_TYPE = 'AWS::SDB::Domain'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Domain.RESOURCE_TYPE, logicalId, Domain.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sns {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html
     */
    export class SubscriptionProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-endpoint
         */
        Endpoint?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-protocol
         */
        Protocol?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#topicarn
         */
        TopicArn?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html
     */
    export class Subscription extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SubscriptionProps();

        static readonly RESOURCE_TYPE = 'AWS::SNS::Subscription'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Subscription.RESOURCE_TYPE, logicalId, Subscription.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sns {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html
     */
    export class TopicProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-displayname
         */
        DisplayName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-subscription
         */
        Subscription?: aws.sns.Topic.SubscriptionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-topicname
         */
        TopicName?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html
     */
    export class Topic extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TopicProps();

        /**
         * @cloudformation_attribute TopicName
         */
        @core.Resource.attribute('TopicName')
        readonly topicName: core.Token

        static readonly RESOURCE_TYPE = 'AWS::SNS::Topic'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Topic.RESOURCE_TYPE, logicalId, Topic.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sns {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html
     */
    export class TopicPolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html#cfn-sns-topicpolicy-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html#cfn-sns-topicpolicy-topics
         */
        Topics: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html
     */
    export class TopicPolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new TopicPolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::SNS::TopicPolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(TopicPolicy.RESOURCE_TYPE, logicalId, TopicPolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sqs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
     */
    export class QueueProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-contentbaseddeduplication
         */
        ContentBasedDeduplication?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-delayseconds
         */
        DelaySeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-fifoqueue
         */
        FifoQueue?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsdatakeyreuseperiodseconds
         */
        KmsDataKeyReusePeriodSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsmasterkeyid
         */
        KmsMasterKeyId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-maxmesgsize
         */
        MaximumMessageSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-msgretentionperiod
         */
        MessageRetentionPeriod?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-name
         */
        QueueName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-receivemsgwaittime
         */
        ReceiveMessageWaitTimeSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-redrive
         */
        RedrivePolicy?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-visiblitytimeout
         */
        VisibilityTimeout?: number | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
     */
    export class Queue extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new QueueProps();

        /**
         * @cloudformation_attribute Arn
         */
        @core.Resource.attribute('Arn')
        readonly arn: core.Token

        /**
         * @cloudformation_attribute QueueName
         */
        @core.Resource.attribute('QueueName')
        readonly queueName: core.Token

        static readonly RESOURCE_TYPE = 'AWS::SQS::Queue'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Queue.RESOURCE_TYPE, logicalId, Queue.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.sqs {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
     */
    export class QueuePolicyProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-policydoc
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-queues
         */
        Queues: (string | core.Token)[] | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
     */
    export class QueuePolicy extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new QueuePolicyProps();

        static readonly RESOURCE_TYPE = 'AWS::SQS::QueuePolicy'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(QueuePolicy.RESOURCE_TYPE, logicalId, QueuePolicy.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ssm {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html
     */
    export class AssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-documentversion
         */
        DocumentVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-instanceid
         */
        InstanceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-parameters
         */
        Parameters?: { [key: string]: aws.ssm.Association.ParameterValuesProperty };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-scheduleexpression
         */
        ScheduleExpression?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-targets
         */
        Targets?: aws.ssm.Association.TargetProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html
     */
    export class Association extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new AssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::SSM::Association'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Association.RESOURCE_TYPE, logicalId, Association.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ssm {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html
     */
    export class DocumentProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html#cfn-ssm-document-content
         */
        Content: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html#cfn-ssm-document-documenttype
         */
        DocumentType?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html
     */
    export class Document extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new DocumentProps();

        static readonly RESOURCE_TYPE = 'AWS::SSM::Document'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Document.RESOURCE_TYPE, logicalId, Document.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.ssm {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html
     */
    export class CfnParameterProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html#cfn-ssm-parameter-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html#cfn-ssm-parameter-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html#cfn-ssm-parameter-allowedpattern
         */
        AllowedPattern?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html#cfn-ssm-parameter-value
         */
        Value: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html#cfn-ssm-parameter-name
         */
        Name?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html
     */
    export class Parameter extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CfnParameterProps();

        /**
         * @cloudformation_attribute Type
         */
        @core.Resource.attribute('Type')
        readonly type: core.Token

        /**
         * @cloudformation_attribute Value
         */
        @core.Resource.attribute('Value')
        readonly value: core.Token

        static readonly RESOURCE_TYPE = 'AWS::SSM::Parameter'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Parameter.RESOURCE_TYPE, logicalId, Parameter.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.stepfunctions {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html
     */
    export class ActivityProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html#cfn-stepfunctions-activity-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-activity.html
     */
    export class Activity extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ActivityProps();

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::StepFunctions::Activity'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Activity.RESOURCE_TYPE, logicalId, Activity.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.stepfunctions {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html
     */
    export class StateMachineProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionstring
         */
        DefinitionString: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-rolearn
         */
        RoleArn: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html
     */
    export class StateMachine extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new StateMachineProps();

        /**
         * @cloudformation_attribute Name
         */
        @core.Resource.attribute('Name')
        readonly name: core.Token

        static readonly RESOURCE_TYPE = 'AWS::StepFunctions::StateMachine'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(StateMachine.RESOURCE_TYPE, logicalId, StateMachine.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html
     */
    export class ByteMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html#cfn-waf-bytematchset-bytematchtuples
         */
        ByteMatchTuples?: aws.waf.ByteMatchSet.ByteMatchTupleProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html#cfn-waf-bytematchset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-bytematchset.html
     */
    export class ByteMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ByteMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::ByteMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ByteMatchSet.RESOURCE_TYPE, logicalId, ByteMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html
     */
    export class IPSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html#cfn-waf-ipset-ipsetdescriptors
         */
        IPSetDescriptors?: aws.waf.IPSet.IPSetDescriptorProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html#cfn-waf-ipset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-ipset.html
     */
    export class IPSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new IPSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::IPSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(IPSet.RESOURCE_TYPE, logicalId, IPSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html
     */
    export class CfnRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html#cfn-waf-rule-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html#cfn-waf-rule-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html#cfn-waf-rule-predicates
         */
        Predicates?: aws.waf.Rule.PredicateProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-rule.html
     */
    export class Rule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CfnRuleProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::Rule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Rule.RESOURCE_TYPE, logicalId, Rule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html
     */
    export class SizeConstraintSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html#cfn-waf-sizeconstraintset-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html#cfn-waf-sizeconstraintset-sizeconstraints
         */
        SizeConstraints: aws.waf.SizeConstraintSet.SizeConstraintProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sizeconstraintset.html
     */
    export class SizeConstraintSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SizeConstraintSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::SizeConstraintSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SizeConstraintSet.RESOURCE_TYPE, logicalId, SizeConstraintSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html
     */
    export class SqlInjectionMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html#cfn-waf-sqlinjectionmatchset-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html#cfn-waf-sqlinjectionmatchset-sqlinjectionmatchtuples
         */
        SqlInjectionMatchTuples?: aws.waf.SqlInjectionMatchSet.SqlInjectionMatchTupleProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-sqlinjectionmatchset.html
     */
    export class SqlInjectionMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SqlInjectionMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::SqlInjectionMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SqlInjectionMatchSet.RESOURCE_TYPE, logicalId, SqlInjectionMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html
     */
    export class WebACLProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html#cfn-waf-webacl-defaultaction
         */
        DefaultAction: aws.waf.WebACL.WafActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html#cfn-waf-webacl-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html#cfn-waf-webacl-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html#cfn-waf-webacl-rules
         */
        Rules?: aws.waf.WebACL.ActivatedRuleProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-webacl.html
     */
    export class WebACL extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WebACLProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::WebACL'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(WebACL.RESOURCE_TYPE, logicalId, WebACL.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.waf {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html
     */
    export class XssMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html#cfn-waf-xssmatchset-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html#cfn-waf-xssmatchset-xssmatchtuples
         */
        XssMatchTuples: aws.waf.XssMatchSet.XssMatchTupleProperty[];

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-waf-xssmatchset.html
     */
    export class XssMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new XssMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAF::XssMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(XssMatchSet.RESOURCE_TYPE, logicalId, XssMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html
     */
    export class ByteMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html#cfn-wafregional-bytematchset-bytematchtuples
         */
        ByteMatchTuples?: aws.wafregional.ByteMatchSet.ByteMatchTupleProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html#cfn-wafregional-bytematchset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-bytematchset.html
     */
    export class ByteMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new ByteMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::ByteMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(ByteMatchSet.RESOURCE_TYPE, logicalId, ByteMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html
     */
    export class IPSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html#cfn-wafregional-ipset-ipsetdescriptors
         */
        IPSetDescriptors?: aws.wafregional.IPSet.IPSetDescriptorProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html#cfn-wafregional-ipset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-ipset.html
     */
    export class IPSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new IPSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::IPSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(IPSet.RESOURCE_TYPE, logicalId, IPSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html
     */
    export class CfnRuleProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html#cfn-wafregional-rule-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html#cfn-wafregional-rule-predicates
         */
        Predicates?: aws.wafregional.Rule.PredicateProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html#cfn-wafregional-rule-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-rule.html
     */
    export class Rule extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new CfnRuleProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::Rule'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Rule.RESOURCE_TYPE, logicalId, Rule.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html
     */
    export class SizeConstraintSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html#cfn-wafregional-sizeconstraintset-sizeconstraints
         */
        SizeConstraints?: aws.wafregional.SizeConstraintSet.SizeConstraintProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html#cfn-wafregional-sizeconstraintset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sizeconstraintset.html
     */
    export class SizeConstraintSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SizeConstraintSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::SizeConstraintSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SizeConstraintSet.RESOURCE_TYPE, logicalId, SizeConstraintSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html
     */
    export class SqlInjectionMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html#cfn-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuples
         */
        SqlInjectionMatchTuples?: aws.wafregional.SqlInjectionMatchSet.SqlInjectionMatchTupleProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html#cfn-wafregional-sqlinjectionmatchset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-sqlinjectionmatchset.html
     */
    export class SqlInjectionMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new SqlInjectionMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::SqlInjectionMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(SqlInjectionMatchSet.RESOURCE_TYPE, logicalId, SqlInjectionMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html
     */
    export class WebACLProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html#cfn-wafregional-webacl-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html#cfn-wafregional-webacl-defaultaction
         */
        DefaultAction: aws.wafregional.WebACL.ActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html#cfn-wafregional-webacl-rules
         */
        Rules?: aws.wafregional.WebACL.RuleProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html#cfn-wafregional-webacl-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webacl.html
     */
    export class WebACL extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WebACLProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::WebACL'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(WebACL.RESOURCE_TYPE, logicalId, WebACL.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html
     */
    export class WebACLAssociationProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html#cfn-wafregional-webaclassociation-resourcearn
         */
        ResourceArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html#cfn-wafregional-webaclassociation-webaclid
         */
        WebACLId: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-webaclassociation.html
     */
    export class WebACLAssociation extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WebACLAssociationProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::WebACLAssociation'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(WebACLAssociation.RESOURCE_TYPE, logicalId, WebACLAssociation.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.wafregional {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html
     */
    export class XssMatchSetProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html#cfn-wafregional-xssmatchset-xssmatchtuples
         */
        XssMatchTuples?: aws.wafregional.XssMatchSet.XssMatchTupleProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html#cfn-wafregional-xssmatchset-name
         */
        Name: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafregional-xssmatchset.html
     */
    export class XssMatchSet extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new XssMatchSetProps();

        static readonly RESOURCE_TYPE = 'AWS::WAFRegional::XssMatchSet'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(XssMatchSet.RESOURCE_TYPE, logicalId, XssMatchSet.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.workspaces {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html
     */
    export class WorkspaceProps {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-bundleid
         */
        BundleId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-directoryid
         */
        DirectoryId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-rootvolumeencryptionenabled
         */
        RootVolumeEncryptionEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-username
         */
        UserName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-uservolumeencryptionenabled
         */
        UserVolumeEncryptionEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html#cfn-workspaces-workspace-volumeencryptionkey
         */
        VolumeEncryptionKey?: string | core.Token;

    }

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-workspaces-workspace.html
     */
    export class Workspace extends core.Resource {
        /**
         * Resource properties
         */
        public Properties = new WorkspaceProps();

        static readonly RESOURCE_TYPE = 'AWS::WorkSpaces::Workspace'
        static readonly REQUIRED_TRANSFORM = ''
        constructor(logicalId?: string) {
            super(Workspace.RESOURCE_TYPE, logicalId, Workspace.REQUIRED_TRANSFORM);
        }
    }
}
export namespace aws.apigateway.ApiKey {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-apikey-stagekey.html
     */
    export class StageKeyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-apikey-stagekey.html#cfn-apigateway-apikey-stagekey-restapiid
         */
        RestApiId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-apikey-stagekey.html#cfn-apigateway-apikey-stagekey-stagename
         */
        StageName?: string | core.Token;

    }
}
export namespace aws.apigateway.Deployment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html
     */
    export class MethodSettingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachedataencrypted
         */
        CacheDataEncrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachettlinseconds
         */
        CacheTtlInSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-cachingenabled
         */
        CachingEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-datatraceenabled
         */
        DataTraceEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-httpmethod
         */
        HttpMethod?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-logginglevel
         */
        LoggingLevel?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-metricsenabled
         */
        MetricsEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-resourcepath
         */
        ResourcePath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingburstlimit
         */
        ThrottlingBurstLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription-methodsetting.html#cfn-apigateway-deployment-stagedescription-methodsetting-throttlingratelimit
         */
        ThrottlingRateLimit?: number | core.Token;

    }
}
export namespace aws.apigateway.Deployment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html
     */
    export class StageDescriptionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclusterenabled
         */
        CacheClusterEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cacheclustersize
         */
        CacheClusterSize?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachedataencrypted
         */
        CacheDataEncrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachettlinseconds
         */
        CacheTtlInSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-cachingenabled
         */
        CachingEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-clientcertificateid
         */
        ClientCertificateId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-datatraceenabled
         */
        DataTraceEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-documentationversion
         */
        DocumentationVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-logginglevel
         */
        LoggingLevel?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings
         */
        MethodSettings?: aws.apigateway.Deployment.MethodSettingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-metricsenabled
         */
        MetricsEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-stagename
         */
        StageName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingburstlimit
         */
        ThrottlingBurstLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingratelimit
         */
        ThrottlingRateLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-variables
         */
        Variables?: { [key: string]: (string | core.Token) };

    }
}
export namespace aws.apigateway.DocumentationPart {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html
     */
    export class LocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-method
         */
        Method?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-statuscode
         */
        StatusCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-documentationpart-location.html#cfn-apigateway-documentationpart-location-type
         */
        Type?: string | core.Token;

    }
}
export namespace aws.apigateway.Method {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html
     */
    export class IntegrationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-cachekeyparameters
         */
        CacheKeyParameters?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-cachenamespace
         */
        CacheNamespace?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-credentials
         */
        Credentials?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-integrationhttpmethod
         */
        IntegrationHttpMethod?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-integrationresponses
         */
        IntegrationResponses?: aws.apigateway.Method.IntegrationResponseProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-passthroughbehavior
         */
        PassthroughBehavior?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-requestparameters
         */
        RequestParameters?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-requesttemplates
         */
        RequestTemplates?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-uri
         */
        Uri?: string | core.Token;

    }
}
export namespace aws.apigateway.Method {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html
     */
    export class IntegrationResponseProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-responseparameters
         */
        ResponseParameters?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-responsetemplates
         */
        ResponseTemplates?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-selectionpattern
         */
        SelectionPattern?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-statuscode
         */
        StatusCode: string | core.Token;

    }
}
export namespace aws.apigateway.Method {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html
     */
    export class MethodResponseProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html#cfn-apigateway-method-methodresponse-responsemodels
         */
        ResponseModels?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html#cfn-apigateway-method-methodresponse-responseparameters
         */
        ResponseParameters?: { [key: string]: (boolean | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-methodresponse.html#cfn-apigateway-method-methodresponse-statuscode
         */
        StatusCode: string | core.Token;

    }
}
export namespace aws.apigateway.RestApi {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html
     */
    export class S3LocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html#cfn-apigateway-restapi-s3location-bucket
         */
        Bucket?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html#cfn-apigateway-restapi-s3location-etag
         */
        ETag?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html#cfn-apigateway-restapi-s3location-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-restapi-bodys3location.html#cfn-apigateway-restapi-s3location-version
         */
        Version?: string | core.Token;

    }
}
export namespace aws.apigateway.Stage {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html
     */
    export class MethodSettingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachedataencrypted
         */
        CacheDataEncrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachettlinseconds
         */
        CacheTtlInSeconds?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachingenabled
         */
        CachingEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-datatraceenabled
         */
        DataTraceEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-httpmethod
         */
        HttpMethod?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-logginglevel
         */
        LoggingLevel?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-metricsenabled
         */
        MetricsEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-resourcepath
         */
        ResourcePath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingburstlimit
         */
        ThrottlingBurstLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingratelimit
         */
        ThrottlingRateLimit?: number | core.Token;

    }
}
export namespace aws.apigateway.UsagePlan {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html
     */
    export class ApiStageProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html#cfn-apigateway-usageplan-apistage-apiid
         */
        ApiId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-apistage.html#cfn-apigateway-usageplan-apistage-stage
         */
        Stage?: string | core.Token;

    }
}
export namespace aws.apigateway.UsagePlan {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html
     */
    export class QuotaSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-limit
         */
        Limit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-offset
         */
        Offset?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-quotasettings.html#cfn-apigateway-usageplan-quotasettings-period
         */
        Period?: string | core.Token;

    }
}
export namespace aws.apigateway.UsagePlan {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html
     */
    export class ThrottleSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html#cfn-apigateway-usageplan-throttlesettings-burstlimit
         */
        BurstLimit?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-usageplan-throttlesettings.html#cfn-apigateway-usageplan-throttlesettings-ratelimit
         */
        RateLimit?: number | core.Token;

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html
     */
    export class CustomizedMetricSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-dimensions
         */
        Dimensions?: aws.applicationautoscaling.ScalingPolicy.MetricDimensionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-namespace
         */
        Namespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-statistic
         */
        Statistic: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-customizedmetricspecification-unit
         */
        Unit?: string | core.Token;

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html
     */
    export class MetricDimensionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html#cfn-applicationautoscaling-scalingpolicy-metricdimension-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html#cfn-applicationautoscaling-scalingpolicy-metricdimension-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html
     */
    export class PredefinedMetricSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predefinedmetricspecification-predefinedmetrictype
         */
        PredefinedMetricType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-applicationautoscaling-scalingpolicy-predefinedmetricspecification-resourcelabel
         */
        ResourceLabel?: string | core.Token;

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html
     */
    export class StepAdjustmentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-metricintervallowerbound
         */
        MetricIntervalLowerBound?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-metricintervalupperbound
         */
        MetricIntervalUpperBound?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustment-scalingadjustment
         */
        ScalingAdjustment: number | core.Token;

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html
     */
    export class StepScalingPolicyConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-adjustmenttype
         */
        AdjustmentType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-cooldown
         */
        Cooldown?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-metricaggregationtype
         */
        MetricAggregationType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-minadjustmentmagnitude
         */
        MinAdjustmentMagnitude?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration-stepadjustments
         */
        StepAdjustments?: aws.applicationautoscaling.ScalingPolicy.StepAdjustmentProperty[];

    }
}
export namespace aws.applicationautoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html
     */
    export class TargetTrackingScalingPolicyConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-customizedmetricspecification
         */
        CustomizedMetricSpecification?: aws.applicationautoscaling.ScalingPolicy.CustomizedMetricSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-predefinedmetricspecification
         */
        PredefinedMetricSpecification?: aws.applicationautoscaling.ScalingPolicy.PredefinedMetricSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleincooldown
         */
        ScaleInCooldown?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-scaleoutcooldown
         */
        ScaleOutCooldown?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration-targetvalue
         */
        TargetValue: number | core.Token;

    }
}
export namespace aws.autoscaling.AutoScalingGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html
     */
    export class MetricsCollectionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html#cfn-as-metricscollection-granularity
         */
        Granularity: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-metricscollection.html#cfn-as-metricscollection-metrics
         */
        Metrics?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.autoscaling.AutoScalingGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html
     */
    export class NotificationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html#cfn-as-group-notificationconfigurations-notificationtypes
         */
        NotificationTypes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-notificationconfigurations.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations-topicarn
         */
        TopicARN: string | core.Token;

    }
}
export namespace aws.autoscaling.AutoScalingGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html
     */
    export class TagPropertyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html#cfn-as-tags-Key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html#cfn-as-tags-PropagateAtLaunch
         */
        PropagateAtLaunch: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-tags.html#cfn-as-tags-Value
         */
        Value: string | core.Token;

    }
}
export namespace aws.autoscaling.LaunchConfiguration {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html
     */
    export class BlockDeviceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-deleteonterm
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-snapshotid
         */
        SnapshotId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-volumesize
         */
        VolumeSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-template.html#cfn-as-launchconfig-blockdev-template-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.autoscaling.LaunchConfiguration {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html
     */
    export class BlockDeviceMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-devicename
         */
        DeviceName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-ebs
         */
        Ebs?: aws.autoscaling.LaunchConfiguration.BlockDeviceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-nodevice
         */
        NoDevice?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig-blockdev-mapping.html#cfn-as-launchconfig-blockdev-mapping-virtualname
         */
        VirtualName?: string | core.Token;

    }
}
export namespace aws.autoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html
     */
    export class CustomizedMetricSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-dimensions
         */
        Dimensions?: aws.autoscaling.ScalingPolicy.MetricDimensionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-namespace
         */
        Namespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-statistic
         */
        Statistic: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-unit
         */
        Unit?: string | core.Token;

    }
}
export namespace aws.autoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html
     */
    export class MetricDimensionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.autoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html
     */
    export class PredefinedMetricSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-predefinedmetrictype
         */
        PredefinedMetricType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-resourcelabel
         */
        ResourceLabel?: string | core.Token;

    }
}
export namespace aws.autoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html
     */
    export class StepAdjustmentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervallowerbound
         */
        MetricIntervalLowerBound?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervalupperbound
         */
        MetricIntervalUpperBound?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustments.html#cfn-autoscaling-scalingpolicy-stepadjustment-scalingadjustment
         */
        ScalingAdjustment: number | core.Token;

    }
}
export namespace aws.autoscaling.ScalingPolicy {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html
     */
    export class TargetTrackingConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-customizedmetricspecification
         */
        CustomizedMetricSpecification?: aws.autoscaling.ScalingPolicy.CustomizedMetricSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-disablescalein
         */
        DisableScaleIn?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-predefinedmetricspecification
         */
        PredefinedMetricSpecification?: aws.autoscaling.ScalingPolicy.PredefinedMetricSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-targetvalue
         */
        TargetValue: number | core.Token;

    }
}
export namespace aws.batch.ComputeEnvironment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html
     */
    export class ComputeResourcesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-spotiamfleetrole
         */
        SpotIamFleetRole?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-maxvcpus
         */
        MaxvCpus: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-bidpercentage
         */
        BidPercentage?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-securitygroupids
         */
        SecurityGroupIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-subnets
         */
        Subnets: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-minvcpus
         */
        MinvCpus: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-imageid
         */
        ImageId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-instancerole
         */
        InstanceRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-instancetypes
         */
        InstanceTypes: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-ec2keypair
         */
        Ec2KeyPair?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-tags
         */
        Tags?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-desiredvcpus
         */
        DesiredvCpus?: number | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html
     */
    export class ContainerPropertiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-mountpoints
         */
        MountPoints?: aws.batch.JobDefinition.MountPointsProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-user
         */
        User?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-volumes
         */
        Volumes?: aws.batch.JobDefinition.VolumesProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-command
         */
        Command?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-memory
         */
        Memory: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-privileged
         */
        Privileged?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-environment
         */
        Environment?: aws.batch.JobDefinition.EnvironmentProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-jobrolearn
         */
        JobRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-readonlyrootfilesystem
         */
        ReadonlyRootFilesystem?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-ulimits
         */
        Ulimits?: aws.batch.JobDefinition.UlimitProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-vcpus
         */
        Vcpus: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-image
         */
        Image: string | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-environment.html
     */
    export class EnvironmentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-environment.html#cfn-batch-jobdefinition-environment-value
         */
        Value?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-environment.html#cfn-batch-jobdefinition-environment-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html
     */
    export class MountPointsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html#cfn-batch-jobdefinition-mountpoints-readonly
         */
        ReadOnly?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html#cfn-batch-jobdefinition-mountpoints-sourcevolume
         */
        SourceVolume?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-mountpoints.html#cfn-batch-jobdefinition-mountpoints-containerpath
         */
        ContainerPath?: string | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-retrystrategy.html
     */
    export class RetryStrategyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-retrystrategy.html#cfn-batch-jobdefinition-retrystrategy-attempts
         */
        Attempts?: number | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html
     */
    export class UlimitProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html#cfn-batch-jobdefinition-ulimit-softlimit
         */
        SoftLimit: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html#cfn-batch-jobdefinition-ulimit-hardlimit
         */
        HardLimit: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-ulimit.html#cfn-batch-jobdefinition-ulimit-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumes.html
     */
    export class VolumesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumes.html#cfn-batch-jobdefinition-volumes-host
         */
        Host?: aws.batch.JobDefinition.VolumesHostProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumes.html#cfn-batch-jobdefinition-volumes-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.batch.JobDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumeshost.html
     */
    export class VolumesHostProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-volumeshost.html#cfn-batch-jobdefinition-volumeshost-sourcepath
         */
        SourcePath?: string | core.Token;

    }
}
export namespace aws.batch.JobQueue {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobqueue-computeenvironmentorder.html
     */
    export class ComputeEnvironmentOrderProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobqueue-computeenvironmentorder.html#cfn-batch-jobqueue-computeenvironmentorder-computeenvironment
         */
        ComputeEnvironment: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobqueue-computeenvironmentorder.html#cfn-batch-jobqueue-computeenvironmentorder-order
         */
        Order: number | core.Token;

    }
}
export namespace aws.certificatemanager.Certificate {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html
     */
    export class DomainValidationOptionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html#cfn-certificatemanager-certificate-domainvalidationoptions-domainname
         */
        DomainName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-certificate-domainvalidationoption.html#cfn-certificatemanager-certificate-domainvalidationoption-validationdomain
         */
        ValidationDomain: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html
     */
    export class CacheBehaviorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-allowedmethods
         */
        AllowedMethods?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-cachedmethods
         */
        CachedMethods?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-compress
         */
        Compress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-defaultttl
         */
        DefaultTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-forwardedvalues
         */
        ForwardedValues: aws.cloudfront.Distribution.ForwardedValuesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-maxttl
         */
        MaxTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-minttl
         */
        MinTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-pathpattern
         */
        PathPattern: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-smoothstreaming
         */
        SmoothStreaming?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-targetoriginid
         */
        TargetOriginId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-trustedsigners
         */
        TrustedSigners?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-viewerprotocolpolicy
         */
        ViewerProtocolPolicy: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html
     */
    export class CookiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html#cfn-cloudfront-forwardedvalues-cookies-forward
         */
        Forward: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html#cfn-cloudfront-forwardedvalues-cookies-whitelistednames
         */
        WhitelistedNames?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html
     */
    export class CustomErrorResponseProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcachingminttl
         */
        ErrorCachingMinTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcode
         */
        ErrorCode: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsecode
         */
        ResponseCode?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsepagepath
         */
        ResponsePagePath?: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html
     */
    export class CustomOriginConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpport
         */
        HTTPPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpsport
         */
        HTTPSPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originprotocolpolicy
         */
        OriginProtocolPolicy: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originsslprotocols
         */
        OriginSSLProtocols?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html
     */
    export class DefaultCacheBehaviorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-allowedmethods
         */
        AllowedMethods?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-cachedmethods
         */
        CachedMethods?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-compress
         */
        Compress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-defaultttl
         */
        DefaultTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-forwardedvalues
         */
        ForwardedValues: aws.cloudfront.Distribution.ForwardedValuesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-maxttl
         */
        MaxTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-minttl
         */
        MinTTL?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-smoothstreaming
         */
        SmoothStreaming?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-targetoriginid
         */
        TargetOriginId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-trustedsigners
         */
        TrustedSigners?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-viewerprotocolpolicy
         */
        ViewerProtocolPolicy: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html
     */
    export class DistributionConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-aliases
         */
        Aliases?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-cachebehaviors
         */
        CacheBehaviors?: aws.cloudfront.Distribution.CacheBehaviorProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-comment
         */
        Comment?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-customerrorresponses
         */
        CustomErrorResponses?: aws.cloudfront.Distribution.CustomErrorResponseProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-defaultcachebehavior
         */
        DefaultCacheBehavior: aws.cloudfront.Distribution.DefaultCacheBehaviorProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-defaultrootobject
         */
        DefaultRootObject?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-enabled
         */
        Enabled: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-httpversion
         */
        HttpVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-logging
         */
        Logging?: aws.cloudfront.Distribution.LoggingProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-origins
         */
        Origins: aws.cloudfront.Distribution.OriginProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-priceclass
         */
        PriceClass?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-restrictions
         */
        Restrictions?: aws.cloudfront.Distribution.RestrictionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-viewercertificate
         */
        ViewerCertificate?: aws.cloudfront.Distribution.ViewerCertificateProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-webaclid
         */
        WebACLId?: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html
     */
    export class ForwardedValuesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-cookies
         */
        Cookies?: aws.cloudfront.Distribution.CookiesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-headers
         */
        Headers?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystring
         */
        QueryString: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystringcachekeys
         */
        QueryStringCacheKeys?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html
     */
    export class GeoRestrictionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-locations
         */
        Locations?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-restrictiontype
         */
        RestrictionType: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html
     */
    export class LoggingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-bucket
         */
        Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-includecookies
         */
        IncludeCookies?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-prefix
         */
        Prefix?: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html
     */
    export class OriginProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-customorigin
         */
        CustomOriginConfig?: aws.cloudfront.Distribution.CustomOriginConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-domainname
         */
        DomainName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-origincustomheaders
         */
        OriginCustomHeaders?: aws.cloudfront.Distribution.OriginCustomHeaderProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-originpath
         */
        OriginPath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-s3origin
         */
        S3OriginConfig?: aws.cloudfront.Distribution.S3OriginConfigProperty;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html
     */
    export class OriginCustomHeaderProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html#cfn-cloudfront-origin-origincustomheader-headername
         */
        HeaderName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html#cfn-cloudfront-origin-origincustomheader-headervalue
         */
        HeaderValue: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions.html
     */
    export class RestrictionsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions.html#cfn-cloudfront-distributionconfig-restrictions-georestriction
         */
        GeoRestriction: aws.cloudfront.Distribution.GeoRestrictionProperty;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-s3origin.html
     */
    export class S3OriginConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-s3origin.html#cfn-cloudfront-s3origin-originaccessidentity
         */
        OriginAccessIdentity?: string | core.Token;

    }
}
export namespace aws.cloudfront.Distribution {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html
     */
    export class ViewerCertificateProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-acmcertificatearn
         */
        AcmCertificateArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-cloudfrontdefaultcertificate
         */
        CloudFrontDefaultCertificate?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-iamcertificateid
         */
        IamCertificateId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-sslsupportmethod
         */
        MinimumProtocolVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-minimumprotocolversion
         */
        SslSupportMethod?: string | core.Token;

    }
}
export namespace aws.cloudtrail.Trail {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html
     */
    export class DataResourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html#cfn-cloudtrail-trail-dataresource-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-dataresource.html#cfn-cloudtrail-trail-dataresource-values
         */
        Values?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.cloudtrail.Trail {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html
     */
    export class EventSelectorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-dataresources
         */
        DataResources?: aws.cloudtrail.Trail.DataResourceProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-includemanagementevents
         */
        IncludeManagementEvents?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudtrail-trail-eventselector.html#cfn-cloudtrail-trail-eventselector-readwritetype
         */
        ReadWriteType?: string | core.Token;

    }
}
export namespace aws.cloudwatch.Alarm {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html
     */
    export class DimensionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html#cfn-cloudwatch-alarm-dimension-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html#cfn-cloudwatch-alarm-dimension-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.codebuild.Project {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html
     */
    export class ArtifactsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-path
         */
        Path?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-packaging
         */
        Packaging?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-location
         */
        Location?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-namespacetype
         */
        NamespaceType?: string | core.Token;

    }
}
export namespace aws.codebuild.Project {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html
     */
    export class EnvironmentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-environmentvariables
         */
        EnvironmentVariables?: aws.codebuild.Project.EnvironmentVariableProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-privilegedmode
         */
        PrivilegedMode?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-image
         */
        Image: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-computetype
         */
        ComputeType: string | core.Token;

    }
}
export namespace aws.codebuild.Project {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html
     */
    export class EnvironmentVariableProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-value
         */
        Value: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.codebuild.Project {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html
     */
    export class SourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-auth
         */
        Auth?: aws.codebuild.Project.SourceAuthProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-buildspec
         */
        BuildSpec?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-location
         */
        Location?: string | core.Token;

    }
}
export namespace aws.codebuild.Project {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html
     */
    export class SourceAuthProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html#cfn-codebuild-project-sourceauth-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-sourceauth.html#cfn-codebuild-project-sourceauth-resource
         */
        Resource?: string | core.Token;

    }
}
export namespace aws.codecommit.Repository {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html
     */
    export class RepositoryTriggerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-events
         */
        Events?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-branches
         */
        Branches?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-customdata
         */
        CustomData?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-destinationarn
         */
        DestinationArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-repositorytrigger.html#cfn-codecommit-repository-repositorytrigger-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html
     */
    export class MinimumHealthyHostsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts-value
         */
        Value: number | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html
     */
    export class AlarmProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html#cfn-codedeploy-deploymentgroup-alarm-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html
     */
    export class AlarmConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-alarms
         */
        Alarms?: aws.codedeploy.DeploymentGroup.AlarmProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-ignorepollalarmfailure
         */
        IgnorePollAlarmFailure?: boolean | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html
     */
    export class AutoRollbackConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration-events
         */
        Events?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html
     */
    export class DeploymentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-ignoreapplicationstopfailures
         */
        IgnoreApplicationStopFailures?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision
         */
        Revision: aws.codedeploy.DeploymentGroup.RevisionLocationProperty;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html
     */
    export class DeploymentStyleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html#cfn-codedeploy-deploymentgroup-deploymentstyle-deploymentoption
         */
        DeploymentOption?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilters.html
     */
    export class EC2TagFilterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilters.html#cfn-properties-codedeploy-deploymentgroup-ec2tagfilters-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilters.html#cfn-properties-codedeploy-deploymentgroup-ec2tagfilters-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilters.html#cfn-properties-codedeploy-deploymentgroup-ec2tagfilters-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-elbinfo.html
     */
    export class ELBInfoProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-elbinfo.html#cfn-codedeploy-deploymentgroup-elbinfo-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html
     */
    export class GitHubLocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation-commitid
         */
        CommitId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation-repository
         */
        Repository: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html
     */
    export class LoadBalancerInfoProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-elbinfolist
         */
        ElbInfoList?: aws.codedeploy.DeploymentGroup.ELBInfoProperty[];

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html
     */
    export class RevisionLocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation
         */
        GitHubLocation?: aws.codedeploy.DeploymentGroup.GitHubLocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-revisiontype
         */
        RevisionType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location
         */
        S3Location?: aws.codedeploy.DeploymentGroup.S3LocationProperty;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html
     */
    export class S3LocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-bucket
         */
        Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-bundletype
         */
        BundleType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-etag
         */
        ETag?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-value
         */
        Version?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters.html
     */
    export class TagFilterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters.html#cfn-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters.html#cfn-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters.html#cfn-properties-codedeploy-deploymentgroup-onpremisesinstancetagfilters-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.codedeploy.DeploymentGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html
     */
    export class TriggerConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggerevents
         */
        TriggerEvents?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggername
         */
        TriggerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggertargetarn
         */
        TriggerTargetArn?: string | core.Token;

    }
}
export namespace aws.codepipeline.CustomActionType {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html
     */
    export class ArtifactDetailsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-maximumcount
         */
        MaximumCount: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-artifactdetails.html#cfn-codepipeline-customactiontype-artifactdetails-minimumcount
         */
        MinimumCount: number | core.Token;

    }
}
export namespace aws.codepipeline.CustomActionType {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html
     */
    export class ConfigurationPropertiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-key
         */
        Key: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-queryable
         */
        Queryable?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-required
         */
        Required: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-secret
         */
        Secret: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-configurationproperties.html#cfn-codepipeline-customactiontype-configurationproperties-type
         */
        Type?: string | core.Token;

    }
}
export namespace aws.codepipeline.CustomActionType {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html
     */
    export class SettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-entityurltemplate
         */
        EntityUrlTemplate?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-executionurltemplate
         */
        ExecutionUrlTemplate?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-revisionurltemplate
         */
        RevisionUrlTemplate?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-customactiontype-settings.html#cfn-codepipeline-customactiontype-settings-thirdpartyconfigurationurl
         */
        ThirdPartyConfigurationUrl?: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html
     */
    export class ActionDeclarationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-actiontypeid
         */
        ActionTypeId: aws.codepipeline.Pipeline.ActionTypeIdProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-configuration
         */
        Configuration?: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-inputartifacts
         */
        InputArtifacts?: aws.codepipeline.Pipeline.InputArtifactProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-outputartifacts
         */
        OutputArtifacts?: aws.codepipeline.Pipeline.OutputArtifactProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-rolearn
         */
        RoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-runorder
         */
        RunOrder?: number | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html
     */
    export class ActionTypeIdProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html#cfn-codepipeline-pipeline-stages-actions-actiontypeid-category
         */
        Category: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html#cfn-codepipeline-pipeline-stages-actions-actiontypeid-owner
         */
        Owner: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html#cfn-codepipeline-pipeline-stages-actions-actiontypeid-provider
         */
        Provider: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-actiontypeid.html#cfn-codepipeline-pipeline-stages-actions-actiontypeid-version
         */
        Version: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html
     */
    export class ArtifactStoreProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-encryptionkey
         */
        EncryptionKey?: aws.codepipeline.Pipeline.EncryptionKeyProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-location
         */
        Location: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore.html#cfn-codepipeline-pipeline-artifactstore-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-blockers.html
     */
    export class BlockerDeclarationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-blockers.html#cfn-codepipeline-pipeline-stages-blockers-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-blockers.html#cfn-codepipeline-pipeline-stages-blockers-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore-encryptionkey.html
     */
    export class EncryptionKeyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore-encryptionkey.html#cfn-codepipeline-pipeline-artifactstore-encryptionkey-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstore-encryptionkey.html#cfn-codepipeline-pipeline-artifactstore-encryptionkey-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-inputartifacts.html
     */
    export class InputArtifactProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-inputartifacts.html#cfn-codepipeline-pipeline-stages-actions-inputartifacts-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-outputartifacts.html
     */
    export class OutputArtifactProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions-outputartifacts.html#cfn-codepipeline-pipeline-stages-actions-outputartifacts-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html
     */
    export class StageDeclarationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html#cfn-codepipeline-pipeline-stages-actions
         */
        Actions: aws.codepipeline.Pipeline.ActionDeclarationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html#cfn-codepipeline-pipeline-stages-blockers
         */
        Blockers?: aws.codepipeline.Pipeline.BlockerDeclarationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages.html#cfn-codepipeline-pipeline-stages-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.codepipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-disableinboundstagetransitions.html
     */
    export class StageTransitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-disableinboundstagetransitions.html#cfn-codepipeline-pipeline-disableinboundstagetransitions-reason
         */
        Reason: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-disableinboundstagetransitions.html#cfn-codepipeline-pipeline-disableinboundstagetransitions-stagename
         */
        StageName: string | core.Token;

    }
}
export namespace aws.cognito.IdentityPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html
     */
    export class CognitoIdentityProviderProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html#cfn-cognito-identitypool-cognitoidentityprovider-serversidetokencheck
         */
        ServerSideTokenCheck?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html#cfn-cognito-identitypool-cognitoidentityprovider-providername
         */
        ProviderName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html#cfn-cognito-identitypool-cognitoidentityprovider-clientid
         */
        ClientId?: string | core.Token;

    }
}
export namespace aws.cognito.IdentityPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html
     */
    export class CognitoStreamsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html#cfn-cognito-identitypool-cognitostreams-streamingstatus
         */
        StreamingStatus?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html#cfn-cognito-identitypool-cognitostreams-streamname
         */
        StreamName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitostreams.html#cfn-cognito-identitypool-cognitostreams-rolearn
         */
        RoleArn?: string | core.Token;

    }
}
export namespace aws.cognito.IdentityPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html
     */
    export class PushSyncProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html#cfn-cognito-identitypool-pushsync-applicationarns
         */
        ApplicationArns?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-pushsync.html#cfn-cognito-identitypool-pushsync-rolearn
         */
        RoleArn?: string | core.Token;

    }
}
export namespace aws.cognito.IdentityPoolRoleAttachment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html
     */
    export class MappingRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html#cfn-cognito-identitypoolroleattachment-mappingrule-matchtype
         */
        MatchType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html#cfn-cognito-identitypoolroleattachment-mappingrule-value
         */
        Value: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html#cfn-cognito-identitypoolroleattachment-mappingrule-claim
         */
        Claim: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-mappingrule.html#cfn-cognito-identitypoolroleattachment-mappingrule-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.cognito.IdentityPoolRoleAttachment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html
     */
    export class RoleMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html#cfn-cognito-identitypoolroleattachment-rolemapping-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html#cfn-cognito-identitypoolroleattachment-rolemapping-ambiguousroleresolution
         */
        AmbiguousRoleResolution?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping.html#cfn-cognito-identitypoolroleattachment-rolemapping-rulesconfiguration
         */
        RulesConfiguration?: aws.cognito.IdentityPoolRoleAttachment.RulesConfigurationTypeProperty;

    }
}
export namespace aws.cognito.IdentityPoolRoleAttachment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rulesconfigurationtype.html
     */
    export class RulesConfigurationTypeProperty {
    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html
     */
    export class AdminCreateUserConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-invitemessagetemplate
         */
        InviteMessageTemplate?: aws.cognito.UserPool.InviteMessageTemplateProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-unusedaccountvaliditydays
         */
        UnusedAccountValidityDays?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-admincreateuserconfig.html#cfn-cognito-userpool-admincreateuserconfig-allowadmincreateuseronly
         */
        AllowAdminCreateUserOnly?: boolean | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html
     */
    export class DeviceConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html#cfn-cognito-userpool-deviceconfiguration-deviceonlyrememberedonuserprompt
         */
        DeviceOnlyRememberedOnUserPrompt?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-deviceconfiguration.html#cfn-cognito-userpool-deviceconfiguration-challengerequiredonnewdevice
         */
        ChallengeRequiredOnNewDevice?: boolean | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-emailconfiguration.html
     */
    export class EmailConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-emailconfiguration.html#cfn-cognito-userpool-emailconfiguration-replytoemailaddress
         */
        ReplyToEmailAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-emailconfiguration.html#cfn-cognito-userpool-emailconfiguration-sourcearn
         */
        SourceArn?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html
     */
    export class InviteMessageTemplateProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html#cfn-cognito-userpool-invitemessagetemplate-emailmessage
         */
        EmailMessage?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html#cfn-cognito-userpool-invitemessagetemplate-smsmessage
         */
        SMSMessage?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-invitemessagetemplate.html#cfn-cognito-userpool-invitemessagetemplate-emailsubject
         */
        EmailSubject?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html
     */
    export class LambdaConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-createauthchallenge
         */
        CreateAuthChallenge?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-preauthentication
         */
        PreAuthentication?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-defineauthchallenge
         */
        DefineAuthChallenge?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-presignup
         */
        PreSignUp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-postauthentication
         */
        PostAuthentication?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-postconfirmation
         */
        PostConfirmation?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-custommessage
         */
        CustomMessage?: string | core.Token;

        /**
         * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-pretokengeneration
         */
        PreTokenGeneration?: string | core.Token;

        /**
         * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-usermigration
         */
        UserMigration?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html#cfn-cognito-userpool-lambdaconfig-verifyauthchallengeresponse
         */
        VerifyAuthChallengeResponse?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-numberattributeconstraints.html
     */
    export class NumberAttributeConstraintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-numberattributeconstraints.html#cfn-cognito-userpool-numberattributeconstraints-minvalue
         */
        MinValue?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-numberattributeconstraints.html#cfn-cognito-userpool-numberattributeconstraints-maxvalue
         */
        MaxValue?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html
     */
    export class PasswordPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requirenumbers
         */
        RequireNumbers?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-minimumlength
         */
        MinimumLength?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requireuppercase
         */
        RequireUppercase?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requirelowercase
         */
        RequireLowercase?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-passwordpolicy.html#cfn-cognito-userpool-passwordpolicy-requiresymbols
         */
        RequireSymbols?: boolean | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-policies.html
     */
    export class PoliciesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-policies.html#cfn-cognito-userpool-policies-passwordpolicy
         */
        PasswordPolicy?: aws.cognito.UserPool.PasswordPolicyProperty;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html
     */
    export class SchemaAttributeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-developeronlyattribute
         */
        DeveloperOnlyAttribute?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-mutable
         */
        Mutable?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-attributedatatype
         */
        AttributeDataType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-stringattributeconstraints
         */
        StringAttributeConstraints?: aws.cognito.UserPool.StringAttributeConstraintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-required
         */
        Required?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-numberattributeconstraints
         */
        NumberAttributeConstraints?: aws.cognito.UserPool.NumberAttributeConstraintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html#cfn-cognito-userpool-schemaattribute-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-smsconfiguration.html
     */
    export class SmsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-smsconfiguration.html#cfn-cognito-userpool-smsconfiguration-externalid
         */
        ExternalId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-smsconfiguration.html#cfn-cognito-userpool-smsconfiguration-snscallerarn
         */
        SnsCallerArn?: string | core.Token;

    }
}
export namespace aws.cognito.UserPool {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-stringattributeconstraints.html
     */
    export class StringAttributeConstraintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-stringattributeconstraints.html#cfn-cognito-userpool-stringattributeconstraints-minlength
         */
        MinLength?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-stringattributeconstraints.html#cfn-cognito-userpool-stringattributeconstraints-maxlength
         */
        MaxLength?: string | core.Token;

    }
}
export namespace aws.cognito.UserPoolUser {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpooluser-attributetype.html
     */
    export class AttributeTypeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpooluser-attributetype.html#cfn-cognito-userpooluser-attributetype-value
         */
        Value?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpooluser-attributetype.html#cfn-cognito-userpooluser-attributetype-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.config.ConfigRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html
     */
    export class ScopeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-complianceresourceid
         */
        ComplianceResourceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-complianceresourcetypes
         */
        ComplianceResourceTypes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-tagkey
         */
        TagKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html#cfn-config-configrule-scope-tagvalue
         */
        TagValue?: string | core.Token;

    }
}
export namespace aws.config.ConfigRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html
     */
    export class SourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-owner
         */
        Owner: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-sourcedetails
         */
        SourceDetails?: aws.config.ConfigRule.SourceDetailProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html#cfn-config-configrule-source-sourceidentifier
         */
        SourceIdentifier: string | core.Token;

    }
}
export namespace aws.config.ConfigRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html
     */
    export class SourceDetailProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-source-sourcedetail-eventsource
         */
        EventSource: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-sourcedetail-maximumexecutionfrequency
         */
        MaximumExecutionFrequency?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source-sourcedetails.html#cfn-config-configrule-source-sourcedetail-messagetype
         */
        MessageType: string | core.Token;

    }
}
export namespace aws.config.ConfigurationRecorder {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html
     */
    export class RecordingGroupProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-allsupported
         */
        AllSupported?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-includeglobalresourcetypes
         */
        IncludeGlobalResourceTypes?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html#cfn-config-configurationrecorder-recordinggroup-resourcetypes
         */
        ResourceTypes?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.config.DeliveryChannel {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html
     */
    export class ConfigSnapshotDeliveryPropertiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html#cfn-config-deliverychannel-configsnapshotdeliveryproperties-deliveryfrequency
         */
        DeliveryFrequency?: string | core.Token;

    }
}
export namespace aws.dms.Endpoint {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html
     */
    export class DynamoDbSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html#cfn-dms-endpoint-dynamodbsettings-serviceaccessrolearn
         */
        ServiceAccessRoleArn?: string | core.Token;

    }
}
export namespace aws.dms.Endpoint {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html
     */
    export class MongoDbSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authsource
         */
        AuthSource?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authmechanism
         */
        AuthMechanism?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-username
         */
        Username?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-docstoinvestigate
         */
        DocsToInvestigate?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-servername
         */
        ServerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-extractdocid
         */
        ExtractDocId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-databasename
         */
        DatabaseName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-authtype
         */
        AuthType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-password
         */
        Password?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-mongodbsettings.html#cfn-dms-endpoint-mongodbsettings-nestinglevel
         */
        NestingLevel?: string | core.Token;

    }
}
export namespace aws.dms.Endpoint {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html
     */
    export class S3SettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-externaltabledefinition
         */
        ExternalTableDefinition?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-bucketname
         */
        BucketName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-bucketfolder
         */
        BucketFolder?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-csvrowdelimiter
         */
        CsvRowDelimiter?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-csvdelimiter
         */
        CsvDelimiter?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-serviceaccessrolearn
         */
        ServiceAccessRoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-s3settings.html#cfn-dms-endpoint-s3settings-compressiontype
         */
        CompressionType?: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html
     */
    export class FieldProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-refvalue
         */
        RefValue?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-stringvalue
         */
        StringValue?: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html
     */
    export class ParameterAttributeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-stringvalue
         */
        StringValue: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html
     */
    export class ParameterObjectProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-attributes
         */
        Attributes: aws.datapipeline.Pipeline.ParameterAttributeProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-id
         */
        Id: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html
     */
    export class ParameterValueProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-stringvalue
         */
        StringValue: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html
     */
    export class PipelineObjectProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-fields
         */
        Fields: aws.datapipeline.Pipeline.FieldProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.datapipeline.Pipeline {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html
     */
    export class PipelineTagProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.directoryservice.MicrosoftAD {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html
     */
    export class VpcSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid
         */
        VpcId: string | core.Token;

    }
}
export namespace aws.directoryservice.SimpleAD {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html
     */
    export class VpcSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid
         */
        VpcId: string | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html
     */
    export class AttributeDefinitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename
         */
        AttributeName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename-attributetype
         */
        AttributeType: string | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html
     */
    export class GlobalSecondaryIndexProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname
         */
        IndexName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-keyschema
         */
        KeySchema: aws.dynamodb.Table.KeySchemaProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-projection
         */
        Projection: aws.dynamodb.Table.ProjectionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput
         */
        ProvisionedThroughput: aws.dynamodb.Table.ProvisionedThroughputProperty;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html
     */
    export class KeySchemaProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-attributename
         */
        AttributeName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-keytype
         */
        KeyType: string | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html
     */
    export class LocalSecondaryIndexProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-indexname
         */
        IndexName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-keyschema
         */
        KeySchema: aws.dynamodb.Table.KeySchemaProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-projection
         */
        Projection: aws.dynamodb.Table.ProjectionProperty;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html
     */
    export class ProjectionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt
         */
        NonKeyAttributes?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype
         */
        ProjectionType?: string | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html
     */
    export class ProvisionedThroughputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits
         */
        ReadCapacityUnits: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits
         */
        WriteCapacityUnits: number | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html
     */
    export class StreamSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html#cfn-dynamodb-streamspecification-streamviewtype
         */
        StreamViewType: string | core.Token;

    }
}
export namespace aws.dynamodb.Table {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html
     */
    export class TimeToLiveSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-attributename
         */
        AttributeName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-enabled
         */
        Enabled: boolean | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html
     */
    export class AssociationParameterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value
         */
        Value: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html
     */
    export class BlockDeviceMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-devicename
         */
        DeviceName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-ebs
         */
        Ebs?: aws.ec2.Instance.EbsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-nodevice
         */
        NoDevice?: aws.ec2.Instance.NoDeviceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-virtualname
         */
        VirtualName?: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html
     */
    export class EbsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid
         */
        SnapshotId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize
         */
        VolumeSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html
     */
    export class InstanceIpv6AddressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address
         */
        Ipv6Address: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html
     */
    export class NetworkInterfaceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip
         */
        AssociatePublicIpAddress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-deviceindex
         */
        DeviceIndex: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset
         */
        GroupSet?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount
         */
        Ipv6AddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses
         */
        Ipv6Addresses?: aws.ec2.Instance.InstanceIpv6AddressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-network-iface
         */
        NetworkInterfaceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddress
         */
        PrivateIpAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddresses
         */
        PrivateIpAddresses?: aws.ec2.Instance.PrivateIpAddressSpecificationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip
         */
        SecondaryPrivateIpAddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid
         */
        SubnetId?: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html
     */
    export class NoDeviceProperty {
    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
     */
    export class PrivateIpAddressSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary
         */
        Primary: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress
         */
        PrivateIpAddress: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html
     */
    export class SsmAssociationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-associationparameters
         */
        AssociationParameters?: aws.ec2.Instance.AssociationParameterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-documentname
         */
        DocumentName: string | core.Token;

    }
}
export namespace aws.ec2.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html
     */
    export class VolumeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-device
         */
        Device: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-volumeid
         */
        VolumeId: string | core.Token;

    }
}
export namespace aws.ec2.NetworkAclEntry {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html
     */
    export class IcmpProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-code
         */
        Code?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html#cfn-ec2-networkaclentry-icmp-type
         */
        Type?: number | core.Token;

    }
}
export namespace aws.ec2.NetworkAclEntry {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html
     */
    export class PortRangeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-from
         */
        From?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-portrange.html#cfn-ec2-networkaclentry-portrange-to
         */
        To?: number | core.Token;

    }
}
export namespace aws.ec2.NetworkInterface {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinterface-instanceipv6address.html
     */
    export class InstanceIpv6AddressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkinterface-instanceipv6address.html#cfn-ec2-networkinterface-instanceipv6address-ipv6address
         */
        Ipv6Address: string | core.Token;

    }
}
export namespace aws.ec2.NetworkInterface {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html
     */
    export class PrivateIpAddressSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary
         */
        Primary: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress
         */
        PrivateIpAddress: string | core.Token;

    }
}
export namespace aws.ec2.SecurityGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
     */
    export class EgressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidrip
         */
        CidrIp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidripv6
         */
        CidrIpv6?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-destinationprefixlistid
         */
        DestinationPrefixListId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-destsecgroupid
         */
        DestinationSecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-fromport
         */
        FromPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-ipprotocol
         */
        IpProtocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-toport
         */
        ToPort?: number | core.Token;

    }
}
export namespace aws.ec2.SecurityGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
     */
    export class IngressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidrip
         */
        CidrIp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidripv6
         */
        CidrIpv6?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-fromport
         */
        FromPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-ipprotocol
         */
        IpProtocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-sourcesecuritygroupid
         */
        SourceSecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-sourcesecuritygroupname
         */
        SourceSecurityGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-sourcesecuritygroupownerid
         */
        SourceSecurityGroupOwnerId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-toport
         */
        ToPort?: number | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html
     */
    export class BlockDeviceMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html#cfn-ec2-spotfleet-blockdevicemapping-devicename
         */
        DeviceName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html#cfn-ec2-spotfleet-blockdevicemapping-ebs
         */
        Ebs?: aws.ec2.SpotFleet.EbsBlockDeviceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html#cfn-ec2-spotfleet-blockdevicemapping-nodevice
         */
        NoDevice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings.html#cfn-ec2-spotfleet-blockdevicemapping-virtualname
         */
        VirtualName?: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html
     */
    export class EbsBlockDeviceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-deleteontermination
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-encrypted
         */
        Encrypted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-snapshotid
         */
        SnapshotId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-volumesize
         */
        VolumeSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-blockdevicemappings-ebs.html#cfn-ec2-spotfleet-ebsblockdevice-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-securitygroups.html
     */
    export class GroupIdentifierProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-securitygroups.html#cfn-ec2-spotfleet-groupidentifier-groupid
         */
        GroupId: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-iaminstanceprofile.html
     */
    export class IamInstanceProfileSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-iaminstanceprofile.html#cfn-ec2-spotfleet-iaminstanceprofilespecification-arn
         */
        Arn?: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-instanceipv6address.html
     */
    export class InstanceIpv6AddressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-instanceipv6address.html#cfn-ec2-spotfleet-instanceipv6address-ipv6address
         */
        Ipv6Address: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html
     */
    export class InstanceNetworkInterfaceSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-associatepublicipaddress
         */
        AssociatePublicIpAddress?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-deleteontermination
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-deviceindex
         */
        DeviceIndex?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-groups
         */
        Groups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-ipv6addresscount
         */
        Ipv6AddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-ipv6addresses
         */
        Ipv6Addresses?: aws.ec2.SpotFleet.InstanceIpv6AddressProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-networkinterfaceid
         */
        NetworkInterfaceId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-privateipaddresses
         */
        PrivateIpAddresses?: aws.ec2.SpotFleet.PrivateIpAddressSpecificationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-secondaryprivateipaddresscount
         */
        SecondaryPrivateIpAddressCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces.html#cfn-ec2-spotfleet-instancenetworkinterfacespecification-subnetid
         */
        SubnetId?: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html
     */
    export class PrivateIpAddressSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html#cfn-ec2-spotfleet-privateipaddressspecification-primary
         */
        Primary?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-networkinterfaces-privateipaddresses.html#cfn-ec2-spotfleet-privateipaddressspecification-privateipaddress
         */
        PrivateIpAddress: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html
     */
    export class SpotFleetLaunchSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-blockdevicemappings
         */
        BlockDeviceMappings?: aws.ec2.SpotFleet.BlockDeviceMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-iaminstanceprofile
         */
        IamInstanceProfile?: aws.ec2.SpotFleet.IamInstanceProfileSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-imageid
         */
        ImageId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-kernelid
         */
        KernelId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-keyname
         */
        KeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-monitoring
         */
        Monitoring?: aws.ec2.SpotFleet.SpotFleetMonitoringProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-networkinterfaces
         */
        NetworkInterfaces?: aws.ec2.SpotFleet.InstanceNetworkInterfaceSpecificationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-placement
         */
        Placement?: aws.ec2.SpotFleet.SpotPlacementProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-ramdiskid
         */
        RamdiskId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-securitygroups
         */
        SecurityGroups?: aws.ec2.SpotFleet.GroupIdentifierProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-spotprice
         */
        SpotPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-subnetid
         */
        SubnetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-userdata
         */
        UserData?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications.html#cfn-ec2-spotfleet-spotfleetlaunchspecification-weightedcapacity
         */
        WeightedCapacity?: number | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-monitoring.html
     */
    export class SpotFleetMonitoringProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-monitoring.html#cfn-ec2-spotfleet-spotfleetmonitoring-enabled
         */
        Enabled?: boolean | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html
     */
    export class SpotFleetRequestConfigDataProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-allocationstrategy
         */
        AllocationStrategy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-excesscapacityterminationpolicy
         */
        ExcessCapacityTerminationPolicy?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-iamfleetrole
         */
        IamFleetRole: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications
         */
        LaunchSpecifications: aws.ec2.SpotFleet.SpotFleetLaunchSpecificationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-replaceunhealthyinstances
         */
        ReplaceUnhealthyInstances?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-spotprice
         */
        SpotPrice: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-targetcapacity
         */
        TargetCapacity: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-terminateinstanceswithexpiration
         */
        TerminateInstancesWithExpiration?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-validfrom
         */
        ValidFrom?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-validuntil
         */
        ValidUntil?: string | core.Token;

    }
}
export namespace aws.ec2.SpotFleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-placement.html
     */
    export class SpotPlacementProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-placement.html#cfn-ec2-spotfleet-spotplacement-availabilityzone
         */
        AvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications-placement.html#cfn-ec2-spotfleet-spotplacement-groupname
         */
        GroupName?: string | core.Token;

    }
}
export namespace aws.ecs.Service {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html
     */
    export class DeploymentConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-maximumpercent
         */
        MaximumPercent?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html#cfn-ecs-service-deploymentconfiguration-minimumhealthypercent
         */
        MinimumHealthyPercent?: number | core.Token;

    }
}
export namespace aws.ecs.Service {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html
     */
    export class LoadBalancerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-containername
         */
        ContainerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-containerport
         */
        ContainerPort: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-loadbalancername
         */
        LoadBalancerName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancers.html#cfn-ecs-service-loadbalancers-targetgrouparn
         */
        TargetGroupArn?: string | core.Token;

    }
}
export namespace aws.ecs.Service {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementconstraint.html
     */
    export class PlacementConstraintProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementconstraint.html#cfn-ecs-service-placementconstraint-expression
         */
        Expression?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementconstraint.html#cfn-ecs-service-placementconstraint-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.ecs.Service {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html
     */
    export class PlacementStrategyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html#cfn-ecs-service-placementstrategy-field
         */
        Field?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html#cfn-ecs-service-placementstrategy-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html
     */
    export class ContainerDefinitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-command
         */
        Command?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-cpu
         */
        Cpu?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-disablenetworking
         */
        DisableNetworking?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dnssearchdomains
         */
        DnsSearchDomains?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dnsservers
         */
        DnsServers?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dockerlabels
         */
        DockerLabels?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-dockersecurityoptions
         */
        DockerSecurityOptions?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-entrypoint
         */
        EntryPoint?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment
         */
        Environment?: aws.ecs.TaskDefinition.KeyValuePairProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-essential
         */
        Essential?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-extrahosts
         */
        ExtraHosts?: aws.ecs.TaskDefinition.HostEntryProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-hostname
         */
        Hostname?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-image
         */
        Image?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-links
         */
        Links?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-logconfiguration
         */
        LogConfiguration?: aws.ecs.TaskDefinition.LogConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-memory
         */
        Memory?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-memoryreservation
         */
        MemoryReservation?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints
         */
        MountPoints?: aws.ecs.TaskDefinition.MountPointProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-portmappings
         */
        PortMappings?: aws.ecs.TaskDefinition.PortMappingProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-privileged
         */
        Privileged?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-readonlyrootfilesystem
         */
        ReadonlyRootFilesystem?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-ulimits
         */
        Ulimits?: aws.ecs.TaskDefinition.UlimitProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-user
         */
        User?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-volumesfrom
         */
        VolumesFrom?: aws.ecs.TaskDefinition.VolumeFromProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-workingdirectory
         */
        WorkingDirectory?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html
     */
    export class HostEntryProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html#cfn-ecs-taskdefinition-containerdefinition-hostentry-hostname
         */
        Hostname: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html#cfn-ecs-taskdefinition-containerdefinition-hostentry-ipaddress
         */
        IpAddress: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes-host.html
     */
    export class HostVolumePropertiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes-host.html#cfn-ecs-taskdefinition-volumes-host-sourcepath
         */
        SourcePath?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html
     */
    export class KeyValuePairProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html#cfn-ecs-taskdefinition-containerdefinition-environment-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-environment.html#cfn-ecs-taskdefinition-containerdefinition-environment-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-logconfiguration.html
     */
    export class LogConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-logconfiguration.html#cfn-ecs-taskdefinition-containerdefinition-logconfiguration-logdriver
         */
        LogDriver: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-logconfiguration.html#cfn-ecs-taskdefinition-containerdefinition-logconfiguration-options
         */
        Options?: { [key: string]: (string | core.Token) };

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html
     */
    export class MountPointProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints-containerpath
         */
        ContainerPath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints-readonly
         */
        ReadOnly?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-mountpoints.html#cfn-ecs-taskdefinition-containerdefinition-mountpoints-sourcevolume
         */
        SourceVolume?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html
     */
    export class PortMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-containerport
         */
        ContainerPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-readonly
         */
        HostPort?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-portmappings.html#cfn-ecs-taskdefinition-containerdefinition-portmappings-sourcevolume
         */
        Protocol?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html
     */
    export class TaskDefinitionPlacementConstraintProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html#cfn-ecs-taskdefinition-taskdefinitionplacementconstraint-expression
         */
        Expression?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html#cfn-ecs-taskdefinition-taskdefinitionplacementconstraint-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html
     */
    export class UlimitProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-hardlimit
         */
        HardLimit: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-ulimit.html#cfn-ecs-taskdefinition-containerdefinition-ulimit-softlimit
         */
        SoftLimit: number | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html
     */
    export class VolumeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html#cfn-ecs-taskdefinition-volumes-host
         */
        Host?: aws.ecs.TaskDefinition.HostVolumePropertiesProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumes.html#cfn-ecs-taskdefinition-volumes-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.ecs.TaskDefinition {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html
     */
    export class VolumeFromProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html#cfn-ecs-taskdefinition-containerdefinition-volumesfrom-readonly
         */
        ReadOnly?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-volumesfrom.html#cfn-ecs-taskdefinition-containerdefinition-volumesfrom-sourcecontainer
         */
        SourceContainer?: string | core.Token;

    }
}
export namespace aws.efs.FileSystem {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-efs-filesystem-filesystemtags.html
     */
    export class ElasticFileSystemTagProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-efs-filesystem-filesystemtags.html#cfn-efs-filesystem-filesystemtags-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-efs-filesystem-filesystemtags.html#cfn-efs-filesystem-filesystemtags-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html
     */
    export class ApplicationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-additionalinfo
         */
        AdditionalInfo?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-args
         */
        Args?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-version
         */
        Version?: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html
     */
    export class AutoScalingPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html#cfn-elasticmapreduce-cluster-autoscalingpolicy-constraints
         */
        Constraints: aws.emr.Cluster.ScalingConstraintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html#cfn-elasticmapreduce-cluster-autoscalingpolicy-rules
         */
        Rules: aws.emr.Cluster.ScalingRuleProperty[];

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html
     */
    export class BootstrapActionConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction
         */
        ScriptBootstrapAction: aws.emr.Cluster.ScriptBootstrapActionConfigProperty;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html
     */
    export class CloudWatchAlarmDefinitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-comparisonoperator
         */
        ComparisonOperator: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-dimensions
         */
        Dimensions?: aws.emr.Cluster.MetricDimensionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-evaluationperiods
         */
        EvaluationPeriods?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-namespace
         */
        Namespace?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-period
         */
        Period: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-statistic
         */
        Statistic?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-threshold
         */
        Threshold: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-unit
         */
        Unit?: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
     */
    export class ConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-classification
         */
        Classification?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurationproperties
         */
        ConfigurationProperties?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurations
         */
        Configurations?: aws.emr.Cluster.ConfigurationProperty[];

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
     */
    export class EbsBlockDeviceConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification
         */
        VolumeSpecification: aws.emr.Cluster.VolumeSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumesperinstance
         */
        VolumesPerInstance?: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
     */
    export class EbsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfigs
         */
        EbsBlockDeviceConfigs?: aws.emr.Cluster.EbsBlockDeviceConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html
     */
    export class InstanceFleetConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-instancetypeconfigs
         */
        InstanceTypeConfigs?: aws.emr.Cluster.InstanceTypeConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-launchspecifications
         */
        LaunchSpecifications?: aws.emr.Cluster.InstanceFleetProvisioningSpecificationsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetondemandcapacity
         */
        TargetOnDemandCapacity?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetspotcapacity
         */
        TargetSpotCapacity?: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetprovisioningspecifications.html
     */
    export class InstanceFleetProvisioningSpecificationsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetprovisioningspecifications.html#cfn-elasticmapreduce-cluster-instancefleetprovisioningspecifications-spotspecification
         */
        SpotSpecification: aws.emr.Cluster.SpotProvisioningSpecificationProperty;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html
     */
    export class InstanceGroupConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-autoscalingpolicy
         */
        AutoScalingPolicy?: aws.emr.Cluster.AutoScalingPolicyProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-bidprice
         */
        BidPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-configurations
         */
        Configurations?: aws.emr.Cluster.ConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfigConfigurations-ebsconfiguration
         */
        EbsConfiguration?: aws.emr.Cluster.EbsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancecount
         */
        InstanceCount: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-market
         */
        Market?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html
     */
    export class InstanceTypeConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-bidprice
         */
        BidPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-bidpriceaspercentageofondemandprice
         */
        BidPriceAsPercentageOfOnDemandPrice?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-configurations
         */
        Configurations?: aws.emr.Cluster.ConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-ebsconfiguration
         */
        EbsConfiguration?: aws.emr.Cluster.EbsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html#cfn-elasticmapreduce-cluster-instancetypeconfig-weightedcapacity
         */
        WeightedCapacity?: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html
     */
    export class JobFlowInstancesConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalmastersecuritygroups
         */
        AdditionalMasterSecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalslavesecuritygroups
         */
        AdditionalSlaveSecurityGroups?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-coreinstancefleet
         */
        CoreInstanceFleet?: aws.emr.Cluster.InstanceFleetConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-coreinstancegroup
         */
        CoreInstanceGroup?: aws.emr.Cluster.InstanceGroupConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-ec2keyname
         */
        Ec2KeyName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-ec2subnetid
         */
        Ec2SubnetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-emrmanagedmastersecuritygroup
         */
        EmrManagedMasterSecurityGroup?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-emrmanagedslavesecuritygroup
         */
        EmrManagedSlaveSecurityGroup?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-hadoopversion
         */
        HadoopVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-masterinstancefleet
         */
        MasterInstanceFleet?: aws.emr.Cluster.InstanceFleetConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-coreinstancegroup
         */
        MasterInstanceGroup?: aws.emr.Cluster.InstanceGroupConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-placement
         */
        Placement?: aws.emr.Cluster.PlacementTypeProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-serviceaccesssecuritygroup
         */
        ServiceAccessSecurityGroup?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-terminationprotected
         */
        TerminationProtected?: boolean | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html
     */
    export class MetricDimensionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html#cfn-elasticmapreduce-cluster-metricdimension-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html#cfn-elasticmapreduce-cluster-metricdimension-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-placementtype.html
     */
    export class PlacementTypeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-placementtype.html#aws-properties-emr-cluster-jobflowinstancesconfig-placementtype
         */
        AvailabilityZone: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html
     */
    export class ScalingActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html#cfn-elasticmapreduce-cluster-scalingaction-market
         */
        Market?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html#cfn-elasticmapreduce-cluster-scalingaction-simplescalingpolicyconfiguration
         */
        SimpleScalingPolicyConfiguration: aws.emr.Cluster.SimpleScalingPolicyConfigurationProperty;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html
     */
    export class ScalingConstraintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html#cfn-elasticmapreduce-cluster-scalingconstraints-maxcapacity
         */
        MaxCapacity: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html#cfn-elasticmapreduce-cluster-scalingconstraints-mincapacity
         */
        MinCapacity: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html
     */
    export class ScalingRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html#cfn-elasticmapreduce-cluster-scalingrule-action
         */
        Action: aws.emr.Cluster.ScalingActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html#cfn-elasticmapreduce-cluster-scalingrule-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html#cfn-elasticmapreduce-cluster-scalingrule-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html#cfn-elasticmapreduce-cluster-scalingrule-trigger
         */
        Trigger: aws.emr.Cluster.ScalingTriggerProperty;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingtrigger.html
     */
    export class ScalingTriggerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingtrigger.html#cfn-elasticmapreduce-cluster-scalingtrigger-cloudwatchalarmdefinition
         */
        CloudWatchAlarmDefinition: aws.emr.Cluster.CloudWatchAlarmDefinitionProperty;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html
     */
    export class ScriptBootstrapActionConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-args
         */
        Args?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-path
         */
        Path: string | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html
     */
    export class SimpleScalingPolicyConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-cluster-simplescalingpolicyconfiguration-adjustmenttype
         */
        AdjustmentType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-cluster-simplescalingpolicyconfiguration-cooldown
         */
        CoolDown?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-cluster-simplescalingpolicyconfiguration-scalingadjustment
         */
        ScalingAdjustment: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html
     */
    export class SpotProvisioningSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-blockdurationminutes
         */
        BlockDurationMinutes?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutaction
         */
        TimeoutAction: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutdurationminutes
         */
        TimeoutDurationMinutes: number | core.Token;

    }
}
export namespace aws.emr.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
     */
    export class VolumeSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-sizeingb
         */
        SizeInGB: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-volumetype
         */
        VolumeType: string | core.Token;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html
     */
    export class ConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html#cfn-elasticmapreduce-instancefleetconfig-configuration-classification
         */
        Classification?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html#cfn-elasticmapreduce-instancefleetconfig-configuration-configurationproperties
         */
        ConfigurationProperties?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html#cfn-elasticmapreduce-instancefleetconfig-configuration-configurations
         */
        Configurations?: aws.emr.InstanceFleetConfig.ConfigurationProperty[];

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html
     */
    export class EbsBlockDeviceConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html#cfn-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig-volumespecification
         */
        VolumeSpecification: aws.emr.InstanceFleetConfig.VolumeSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html#cfn-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig-volumesperinstance
         */
        VolumesPerInstance?: number | core.Token;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html
     */
    export class EbsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html#cfn-elasticmapreduce-instancefleetconfig-ebsconfiguration-ebsblockdeviceconfigs
         */
        EbsBlockDeviceConfigs?: aws.emr.InstanceFleetConfig.EbsBlockDeviceConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html#cfn-elasticmapreduce-instancefleetconfig-ebsconfiguration-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications.html
     */
    export class InstanceFleetProvisioningSpecificationsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications.html#cfn-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications-spotspecification
         */
        SpotSpecification: aws.emr.InstanceFleetConfig.SpotProvisioningSpecificationProperty;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html
     */
    export class InstanceTypeConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-bidprice
         */
        BidPrice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-bidpriceaspercentageofondemandprice
         */
        BidPriceAsPercentageOfOnDemandPrice?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-configurations
         */
        Configurations?: aws.emr.InstanceFleetConfig.ConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-ebsconfiguration
         */
        EbsConfiguration?: aws.emr.InstanceFleetConfig.EbsConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-instancetype
         */
        InstanceType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html#cfn-elasticmapreduce-instancefleetconfig-instancetypeconfig-weightedcapacity
         */
        WeightedCapacity?: number | core.Token;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html
     */
    export class SpotProvisioningSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-blockdurationminutes
         */
        BlockDurationMinutes?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutaction
         */
        TimeoutAction: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutdurationminutes
         */
        TimeoutDurationMinutes: number | core.Token;

    }
}
export namespace aws.emr.InstanceFleetConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html
     */
    export class VolumeSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-sizeingb
         */
        SizeInGB: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html#cfn-elasticmapreduce-instancefleetconfig-volumespecification-volumetype
         */
        VolumeType: string | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html
     */
    export class AutoScalingPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html#cfn-elasticmapreduce-instancegroupconfig-autoscalingpolicy-constraints
         */
        Constraints: aws.emr.InstanceGroupConfig.ScalingConstraintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html#cfn-elasticmapreduce-instancegroupconfig-autoscalingpolicy-rules
         */
        Rules: aws.emr.InstanceGroupConfig.ScalingRuleProperty[];

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html
     */
    export class CloudWatchAlarmDefinitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-comparisonoperator
         */
        ComparisonOperator: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-dimensions
         */
        Dimensions?: aws.emr.InstanceGroupConfig.MetricDimensionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-evaluationperiods
         */
        EvaluationPeriods?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-namespace
         */
        Namespace?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-period
         */
        Period: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-statistic
         */
        Statistic?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-threshold
         */
        Threshold: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition-unit
         */
        Unit?: string | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
     */
    export class ConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-classification
         */
        Classification?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurationproperties
         */
        ConfigurationProperties?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurations
         */
        Configurations?: aws.emr.InstanceGroupConfig.ConfigurationProperty[];

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
     */
    export class EbsBlockDeviceConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification
         */
        VolumeSpecification: aws.emr.InstanceGroupConfig.VolumeSpecificationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumesperinstance
         */
        VolumesPerInstance?: number | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
     */
    export class EbsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfigs
         */
        EbsBlockDeviceConfigs?: aws.emr.InstanceGroupConfig.EbsBlockDeviceConfigProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsoptimized
         */
        EbsOptimized?: boolean | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html
     */
    export class MetricDimensionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html#cfn-elasticmapreduce-instancegroupconfig-metricdimension-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html#cfn-elasticmapreduce-instancegroupconfig-metricdimension-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html
     */
    export class ScalingActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html#cfn-elasticmapreduce-instancegroupconfig-scalingaction-market
         */
        Market?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html#cfn-elasticmapreduce-instancegroupconfig-scalingaction-simplescalingpolicyconfiguration
         */
        SimpleScalingPolicyConfiguration: aws.emr.InstanceGroupConfig.SimpleScalingPolicyConfigurationProperty;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html
     */
    export class ScalingConstraintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html#cfn-elasticmapreduce-instancegroupconfig-scalingconstraints-maxcapacity
         */
        MaxCapacity: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html#cfn-elasticmapreduce-instancegroupconfig-scalingconstraints-mincapacity
         */
        MinCapacity: number | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html
     */
    export class ScalingRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html#cfn-elasticmapreduce-instancegroupconfig-scalingrule-action
         */
        Action: aws.emr.InstanceGroupConfig.ScalingActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html#cfn-elasticmapreduce-instancegroupconfig-scalingrule-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html#cfn-elasticmapreduce-instancegroupconfig-scalingrule-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html#cfn-elasticmapreduce-instancegroupconfig-scalingrule-trigger
         */
        Trigger: aws.emr.InstanceGroupConfig.ScalingTriggerProperty;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingtrigger.html
     */
    export class ScalingTriggerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingtrigger.html#cfn-elasticmapreduce-instancegroupconfig-scalingtrigger-cloudwatchalarmdefinition
         */
        CloudWatchAlarmDefinition: aws.emr.InstanceGroupConfig.CloudWatchAlarmDefinitionProperty;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html
     */
    export class SimpleScalingPolicyConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration-adjustmenttype
         */
        AdjustmentType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration-cooldown
         */
        CoolDown?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html#cfn-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration-scalingadjustment
         */
        ScalingAdjustment: number | core.Token;

    }
}
export namespace aws.emr.InstanceGroupConfig {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
     */
    export class VolumeSpecificationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-sizeingb
         */
        SizeInGB: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-volumetype
         */
        VolumeType: string | core.Token;

    }
}
export namespace aws.emr.Step {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html
     */
    export class HadoopJarStepConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-args
         */
        Args?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-jar
         */
        Jar: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-mainclass
         */
        MainClass?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html#cfn-elasticmapreduce-step-hadoopjarstepconfig-stepproperties
         */
        StepProperties?: aws.emr.Step.KeyValueProperty[];

    }
}
export namespace aws.emr.Step {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html
     */
    export class KeyValueProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html#cfn-elasticmapreduce-step-keyvalue-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html#cfn-elasticmapreduce-step-keyvalue-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.elasticache.ReplicationGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html
     */
    export class NodeGroupConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-primaryavailabilityzone
         */
        PrimaryAvailabilityZone?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-replicaavailabilityzones
         */
        ReplicaAvailabilityZones?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-replicacount
         */
        ReplicaCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-replicationgroup-nodegroupconfiguration.html#cfn-elasticache-replicationgroup-nodegroupconfiguration-slots
         */
        Slots?: string | core.Token;

    }
}
export namespace aws.elasticbeanstalk.ApplicationVersion {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html
     */
    export class SourceBundleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html#cfn-beanstalk-sourcebundle-s3bucket
         */
        S3Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-sourcebundle.html#cfn-beanstalk-sourcebundle-s3key
         */
        S3Key: string | core.Token;

    }
}
export namespace aws.elasticbeanstalk.ConfigurationTemplate {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
     */
    export class ConfigurationOptionSettingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-namespace
         */
        Namespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-optionname
         */
        OptionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.elasticbeanstalk.ConfigurationTemplate {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-configurationtemplate-sourceconfiguration.html
     */
    export class SourceConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-configurationtemplate-sourceconfiguration.html#cfn-beanstalk-configurationtemplate-sourceconfiguration-applicationname
         */
        ApplicationName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-configurationtemplate-sourceconfiguration.html#cfn-beanstalk-configurationtemplate-sourceconfiguration-templatename
         */
        TemplateName: string | core.Token;

    }
}
export namespace aws.elasticbeanstalk.Environment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
     */
    export class OptionSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-namespace
         */
        Namespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-optionname
         */
        OptionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.elasticbeanstalk.Environment {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html
     */
    export class TierProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html#cfn-beanstalk-env-tier-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html#cfn-beanstalk-env-tier-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment-tier.html#cfn-beanstalk-env-tier-version
         */
        Version?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html
     */
    export class AccessLoggingPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-emitinterval
         */
        EmitInterval?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-enabled
         */
        Enabled: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-s3bucketname
         */
        S3BucketName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-accessloggingpolicy.html#cfn-elb-accessloggingpolicy-s3bucketprefix
         */
        S3BucketPrefix?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html
     */
    export class AppCookieStickinessPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html#cfn-elb-appcookiestickinesspolicy-cookiename
         */
        CookieName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-AppCookieStickinessPolicy.html#cfn-elb-appcookiestickinesspolicy-policyname
         */
        PolicyName: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html
     */
    export class ConnectionDrainingPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-enabled
         */
        Enabled: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectiondrainingpolicy.html#cfn-elb-connectiondrainingpolicy-timeout
         */
        Timeout?: number | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html
     */
    export class ConnectionSettingsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-connectionsettings.html#cfn-elb-connectionsettings-idletimeout
         */
        IdleTimeout: number | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html
     */
    export class HealthCheckProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-healthythreshold
         */
        HealthyThreshold: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-interval
         */
        Interval: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-target
         */
        Target: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-timeout
         */
        Timeout: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html#cfn-elb-healthcheck-unhealthythreshold
         */
        UnhealthyThreshold: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html
     */
    export class LBCookieStickinessPolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html#cfn-elb-lbcookiestickinesspolicy-cookieexpirationperiod
         */
        CookieExpirationPeriod?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-LBCookieStickinessPolicy.html#cfn-elb-lbcookiestickinesspolicy-policyname
         */
        PolicyName?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html
     */
    export class ListenersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-instanceport
         */
        InstancePort: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-instanceprotocol
         */
        InstanceProtocol?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-loadbalancerport
         */
        LoadBalancerPort: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-policynames
         */
        PolicyNames?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-protocol
         */
        Protocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-listener.html#cfn-ec2-elb-listener-sslcertificateid
         */
        SSLCertificateId?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancing.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html
     */
    export class PoliciesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-attributes
         */
        Attributes: (object | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-instanceports
         */
        InstancePorts?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-loadbalancerports
         */
        LoadBalancerPorts?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-policyname
         */
        PolicyName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html#cfn-ec2-elb-policy-policytype
         */
        PolicyType: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.Listener {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html
     */
    export class ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn
         */
        TargetGroupArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.Listener {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
     */
    export class CertificateProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn
         */
        CertificateArn?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.ListenerRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html
     */
    export class ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn
         */
        TargetGroupArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.ListenerRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html
     */
    export class RuleConditionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field
         */
        Field?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values
         */
        Values?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html
     */
    export class LoadBalancerAttributeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html#cfn-elasticloadbalancingv2-loadbalancer-loadbalancerattributes-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattributes.html#cfn-elasticloadbalancingv2-loadbalancer-loadbalancerattributes-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.LoadBalancer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-subnetmapping.html
     */
    export class SubnetMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-subnetmapping.html#cfn-elasticloadbalancingv2-loadbalancer-subnetmapping-allocationid
         */
        AllocationId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-subnetmapping.html#cfn-elasticloadbalancingv2-loadbalancer-subnetmapping-subnetid
         */
        SubnetId: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.TargetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-matcher.html
     */
    export class MatcherProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-matcher.html#cfn-elasticloadbalancingv2-targetgroup-matcher-httpcode
         */
        HttpCode: string | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.TargetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html
     */
    export class TargetDescriptionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html#cfn-elasticloadbalancingv2-targetgroup-targetdescription-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html#cfn-elasticloadbalancingv2-targetgroup-targetdescription-port
         */
        Port?: number | core.Token;

    }
}
export namespace aws.elasticloadbalancingv2.TargetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html
     */
    export class TargetGroupAttributeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html#cfn-elasticloadbalancingv2-targetgroup-targetgroupattribute-key
         */
        Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetgroupattribute.html#cfn-elasticloadbalancingv2-targetgroup-targetgroupattribute-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.elasticsearch.Domain {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html
     */
    export class EBSOptionsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-ebsenabled
         */
        EBSEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumesize
         */
        VolumeSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.elasticsearch.Domain {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html
     */
    export class ElasticsearchClusterConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastercount
         */
        DedicatedMasterCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmasterenabled
         */
        DedicatedMasterEnabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastertype
         */
        DedicatedMasterType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instancecount
         */
        InstanceCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instnacetype
         */
        InstanceType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-zoneawarenessenabled
         */
        ZoneAwarenessEnabled?: boolean | core.Token;

    }
}
export namespace aws.elasticsearch.Domain {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html
     */
    export class SnapshotOptionsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html#cfn-elasticsearch-domain-snapshotoptions-automatedsnapshotstarthour
         */
        AutomatedSnapshotStartHour?: number | core.Token;

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html
     */
    export class EcsParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskcount
         */
        TaskCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskdefinitionarn
         */
        TaskDefinitionArn: string | core.Token;

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html
     */
    export class InputTransformerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputpathsmap
         */
        InputPathsMap?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputtemplate
         */
        InputTemplate: string | core.Token;

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html
     */
    export class KinesisParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html#cfn-events-rule-kinesisparameters-partitionkeypath
         */
        PartitionKeyPath: string | core.Token;

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html
     */
    export class RunCommandParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html#cfn-events-rule-runcommandparameters-runcommandtargets
         */
        RunCommandTargets: aws.events.Rule.RunCommandTargetProperty[];

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html
     */
    export class RunCommandTargetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-values
         */
        Values: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.events.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
     */
    export class TargetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-arn
         */
        Arn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-ecsparameters
         */
        EcsParameters?: aws.events.Rule.EcsParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-input
         */
        Input?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputpath
         */
        InputPath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputtransformer
         */
        InputTransformer?: aws.events.Rule.InputTransformerProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-kinesisparameters
         */
        KinesisParameters?: aws.events.Rule.KinesisParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-rolearn
         */
        RoleArn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-runcommandparameters
         */
        RunCommandParameters?: aws.events.Rule.RunCommandParametersProperty;

    }
}
export namespace aws.gamelift.Alias {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html
     */
    export class RoutingStrategyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html#cfn-gamelift-alias-routingstrategy-fleetid
         */
        FleetId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html#cfn-gamelift-alias-routingstrategy-message
         */
        Message?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html#cfn-gamelift-alias-routingstrategy-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.gamelift.Build {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html
     */
    export class S3LocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html#cfn-gamelift-build-storage-bucket
         */
        Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html#cfn-gamelift-build-storage-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-build-storagelocation.html#cfn-gamelift-build-storage-rolearn
         */
        RoleArn: string | core.Token;

    }
}
export namespace aws.gamelift.Fleet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html
     */
    export class IpPermissionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-fromport
         */
        FromPort: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-iprange
         */
        IpRange: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-protocol
         */
        Protocol: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-fleet-ec2inboundpermission.html#cfn-gamelift-fleet-ec2inboundpermissions-toport
         */
        ToPort: number | core.Token;

    }
}
export namespace aws.iam.Group {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
     */
    export class PolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
         */
        PolicyName: string | core.Token;

    }
}
export namespace aws.iam.Role {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
     */
    export class PolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
         */
        PolicyName: string | core.Token;

    }
}
export namespace aws.iam.User {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html
     */
    export class LoginProfileProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html#cfn-iam-user-loginprofile-password
         */
        Password: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user-loginprofile.html#cfn-iam-user-loginprofile-passwordresetrequired
         */
        PasswordResetRequired?: boolean | core.Token;

    }
}
export namespace aws.iam.User {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html
     */
    export class PolicyProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policydocument
         */
        PolicyDocument: object | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html#cfn-iam-policies-policyname
         */
        PolicyName: string | core.Token;

    }
}
export namespace aws.iot.Thing {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html
     */
    export class AttributePayloadProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html#cfn-iot-thing-attributepayload-attributes
         */
        Attributes?: { [key: string]: (string | core.Token) };

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html
     */
    export class ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-cloudwatchalarm
         */
        CloudwatchAlarm?: aws.iot.TopicRule.CloudwatchAlarmActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-cloudwatchmetric
         */
        CloudwatchMetric?: aws.iot.TopicRule.CloudwatchMetricActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-dynamodb
         */
        DynamoDB?: aws.iot.TopicRule.DynamoDBActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-dynamodbv2
         */
        DynamoDBv2?: aws.iot.TopicRule.DynamoDBv2ActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-elasticsearch
         */
        Elasticsearch?: aws.iot.TopicRule.ElasticsearchActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-firehose
         */
        Firehose?: aws.iot.TopicRule.FirehoseActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-kinesis
         */
        Kinesis?: aws.iot.TopicRule.KinesisActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-lambda
         */
        Lambda?: aws.iot.TopicRule.LambdaActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-republish
         */
        Republish?: aws.iot.TopicRule.RepublishActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-s3
         */
        S3?: aws.iot.TopicRule.S3ActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-sns
         */
        Sns?: aws.iot.TopicRule.SnsActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-action.html#cfn-iot-topicrule-action-sqs
         */
        Sqs?: aws.iot.TopicRule.SqsActionProperty;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html
     */
    export class CloudwatchAlarmActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html#cfn-iot-topicrule-cloudwatchalarmaction-alarmname
         */
        AlarmName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html#cfn-iot-topicrule-cloudwatchalarmaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html#cfn-iot-topicrule-cloudwatchalarmaction-statereason
         */
        StateReason: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchalarmaction.html#cfn-iot-topicrule-cloudwatchalarmaction-statevalue
         */
        StateValue: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html
     */
    export class CloudwatchMetricActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-metricnamespace
         */
        MetricNamespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-metrictimestamp
         */
        MetricTimestamp?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-metricunit
         */
        MetricUnit: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-metricvalue
         */
        MetricValue: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-cloudwatchmetricaction.html#cfn-iot-topicrule-cloudwatchmetricaction-rolearn
         */
        RoleArn: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html
     */
    export class DynamoDBActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-hashkeyfield
         */
        HashKeyField: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-hashkeytype
         */
        HashKeyType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-hashkeyvalue
         */
        HashKeyValue: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-payloadfield
         */
        PayloadField?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-rangekeyfield
         */
        RangeKeyField: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-rangekeytype
         */
        RangeKeyType?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-rangekeyvalue
         */
        RangeKeyValue: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbaction.html#cfn-iot-topicrule-dynamodbaction-tablename
         */
        TableName: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbv2action.html
     */
    export class DynamoDBv2ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbv2action.html#cfn-iot-topicrule-dynamodbv2action-putitem
         */
        PutItem?: aws.iot.TopicRule.PutItemInputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-dynamodbv2action.html#cfn-iot-topicrule-dynamodbv2action-rolearn
         */
        RoleArn?: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html
     */
    export class ElasticsearchActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html#cfn-iot-topicrule-elasticsearchaction-endpoint
         */
        Endpoint: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html#cfn-iot-topicrule-elasticsearchaction-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html#cfn-iot-topicrule-elasticsearchaction-index
         */
        Index: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html#cfn-iot-topicrule-elasticsearchaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-elasticsearchaction.html#cfn-iot-topicrule-elasticsearchaction-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html
     */
    export class FirehoseActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html#cfn-iot-topicrule-firehoseaction-deliverystreamname
         */
        DeliveryStreamName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html#cfn-iot-topicrule-firehoseaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-firehoseaction.html#cfn-iot-topicrule-firehoseaction-separator
         */
        Separator?: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html
     */
    export class KinesisActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html#cfn-iot-topicrule-kinesisaction-partitionkey
         */
        PartitionKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html#cfn-iot-topicrule-kinesisaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-kinesisaction.html#cfn-iot-topicrule-kinesisaction-streamname
         */
        StreamName: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html
     */
    export class LambdaActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html#cfn-iot-topicrule-lambdaaction-functionarn
         */
        FunctionArn?: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-putiteminput.html
     */
    export class PutItemInputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-putiteminput.html#cfn-iot-topicrule-putiteminput-tablename
         */
        TableName: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-republishaction.html
     */
    export class RepublishActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-republishaction.html#cfn-iot-topicrule-republishaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-republishaction.html#cfn-iot-topicrule-republishaction-topic
         */
        Topic: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html
     */
    export class S3ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-bucketname
         */
        BucketName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-rolearn
         */
        RoleArn: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html
     */
    export class SnsActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html#cfn-iot-topicrule-snsaction-messageformat
         */
        MessageFormat?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html#cfn-iot-topicrule-snsaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-snsaction.html#cfn-iot-topicrule-snsaction-targetarn
         */
        TargetArn: string | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html
     */
    export class SqsActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html#cfn-iot-topicrule-sqsaction-queueurl
         */
        QueueUrl: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html#cfn-iot-topicrule-sqsaction-rolearn
         */
        RoleArn: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-sqsaction.html#cfn-iot-topicrule-sqsaction-usebase64
         */
        UseBase64?: boolean | core.Token;

    }
}
export namespace aws.iot.TopicRule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html
     */
    export class TopicRulePayloadProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-actions
         */
        Actions: aws.iot.TopicRule.ActionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-awsiotsqlversion
         */
        AwsIotSqlVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-description
         */
        Description?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-ruledisabled
         */
        RuleDisabled: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-sql
         */
        Sql: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html
     */
    export class CSVMappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html#cfn-kinesisanalytics-application-csvmappingparameters-recordrowdelimiter
         */
        RecordRowDelimiter: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-csvmappingparameters.html#cfn-kinesisanalytics-application-csvmappingparameters-recordcolumndelimiter
         */
        RecordColumnDelimiter: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html
     */
    export class InputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-nameprefix
         */
        NamePrefix: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputschema
         */
        InputSchema: aws.kinesisanalytics.Application.InputSchemaProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-kinesisstreamsinput
         */
        KinesisStreamsInput?: aws.kinesisanalytics.Application.KinesisStreamsInputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-kinesisfirehoseinput
         */
        KinesisFirehoseInput?: aws.kinesisanalytics.Application.KinesisFirehoseInputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputparallelism
         */
        InputParallelism?: aws.kinesisanalytics.Application.InputParallelismProperty;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputparallelism.html
     */
    export class InputParallelismProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputparallelism.html#cfn-kinesisanalytics-application-inputparallelism-count
         */
        Count?: number | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html
     */
    export class InputSchemaProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordencoding
         */
        RecordEncoding?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordcolumns
         */
        RecordColumns: aws.kinesisanalytics.Application.RecordColumnProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputschema.html#cfn-kinesisanalytics-application-inputschema-recordformat
         */
        RecordFormat: aws.kinesisanalytics.Application.RecordFormatProperty;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-jsonmappingparameters.html
     */
    export class JSONMappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-jsonmappingparameters.html#cfn-kinesisanalytics-application-jsonmappingparameters-recordrowpath
         */
        RecordRowPath: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html
     */
    export class KinesisFirehoseInputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html#cfn-kinesisanalytics-application-kinesisfirehoseinput-resourcearn
         */
        ResourceARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisfirehoseinput.html#cfn-kinesisanalytics-application-kinesisfirehoseinput-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html
     */
    export class KinesisStreamsInputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html#cfn-kinesisanalytics-application-kinesisstreamsinput-resourcearn
         */
        ResourceARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-kinesisstreamsinput.html#cfn-kinesisanalytics-application-kinesisstreamsinput-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html
     */
    export class MappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html#cfn-kinesisanalytics-application-mappingparameters-jsonmappingparameters
         */
        JSONMappingParameters?: aws.kinesisanalytics.Application.JSONMappingParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-mappingparameters.html#cfn-kinesisanalytics-application-mappingparameters-csvmappingparameters
         */
        CSVMappingParameters?: aws.kinesisanalytics.Application.CSVMappingParametersProperty;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html
     */
    export class RecordColumnProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-mapping
         */
        Mapping?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-sqltype
         */
        SqlType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordcolumn.html#cfn-kinesisanalytics-application-recordcolumn-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.Application {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html
     */
    export class RecordFormatProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html#cfn-kinesisanalytics-application-recordformat-mappingparameters
         */
        MappingParameters?: aws.kinesisanalytics.Application.MappingParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-recordformat.html#cfn-kinesisanalytics-application-recordformat-recordformattype
         */
        RecordFormatType: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationOutput {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-destinationschema.html
     */
    export class DestinationSchemaProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-destinationschema.html#cfn-kinesisanalytics-applicationoutput-destinationschema-recordformattype
         */
        RecordFormatType?: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationOutput {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html
     */
    export class KinesisFirehoseOutputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisfirehoseoutput-resourcearn
         */
        ResourceARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisfirehoseoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisfirehoseoutput-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationOutput {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html
     */
    export class KinesisStreamsOutputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisstreamsoutput-resourcearn
         */
        ResourceARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-kinesisstreamsoutput.html#cfn-kinesisanalytics-applicationoutput-kinesisstreamsoutput-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationOutput {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html
     */
    export class OutputProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-destinationschema
         */
        DestinationSchema: aws.kinesisanalytics.ApplicationOutput.DestinationSchemaProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-kinesisfirehoseoutput
         */
        KinesisFirehoseOutput?: aws.kinesisanalytics.ApplicationOutput.KinesisFirehoseOutputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-kinesisstreamsoutput
         */
        KinesisStreamsOutput?: aws.kinesisanalytics.ApplicationOutput.KinesisStreamsOutputProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationoutput-output.html#cfn-kinesisanalytics-applicationoutput-output-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html
     */
    export class CSVMappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-csvmappingparameters-recordrowdelimiter
         */
        RecordRowDelimiter: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-csvmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-csvmappingparameters-recordcolumndelimiter
         */
        RecordColumnDelimiter: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters.html
     */
    export class JSONMappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-jsonmappingparameters-recordrowpath
         */
        RecordRowPath: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html
     */
    export class MappingParametersProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-mappingparameters-jsonmappingparameters
         */
        JSONMappingParameters?: aws.kinesisanalytics.ApplicationReferenceDataSource.JSONMappingParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-mappingparameters.html#cfn-kinesisanalytics-applicationreferencedatasource-mappingparameters-csvmappingparameters
         */
        CSVMappingParameters?: aws.kinesisanalytics.ApplicationReferenceDataSource.CSVMappingParametersProperty;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html
     */
    export class RecordColumnProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-mapping
         */
        Mapping?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-sqltype
         */
        SqlType: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordcolumn.html#cfn-kinesisanalytics-applicationreferencedatasource-recordcolumn-name
         */
        Name: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html
     */
    export class RecordFormatProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html#cfn-kinesisanalytics-applicationreferencedatasource-recordformat-mappingparameters
         */
        MappingParameters?: aws.kinesisanalytics.ApplicationReferenceDataSource.MappingParametersProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-recordformat.html#cfn-kinesisanalytics-applicationreferencedatasource-recordformat-recordformattype
         */
        RecordFormatType: string | core.Token;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html
     */
    export class ReferenceDataSourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-referenceschema
         */
        ReferenceSchema: aws.kinesisanalytics.ApplicationReferenceDataSource.ReferenceSchemaProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-tablename
         */
        TableName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-referencedatasource-s3referencedatasource
         */
        S3ReferenceDataSource?: aws.kinesisanalytics.ApplicationReferenceDataSource.S3ReferenceDataSourceProperty;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html
     */
    export class ReferenceSchemaProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordencoding
         */
        RecordEncoding?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordcolumns
         */
        RecordColumns: aws.kinesisanalytics.ApplicationReferenceDataSource.RecordColumnProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-referenceschema.html#cfn-kinesisanalytics-applicationreferencedatasource-referenceschema-recordformat
         */
        RecordFormat: aws.kinesisanalytics.ApplicationReferenceDataSource.RecordFormatProperty;

    }
}
export namespace aws.kinesisanalytics.ApplicationReferenceDataSource {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html
     */
    export class S3ReferenceDataSourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-bucketarn
         */
        BucketARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-filekey
         */
        FileKey: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-applicationreferencedatasource-s3referencedatasource.html#cfn-kinesisanalytics-applicationreferencedatasource-s3referencedatasource-referencerolearn
         */
        ReferenceRoleARN: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-bufferinghints.html
     */
    export class BufferingHintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-bufferinghints.html#cfn-kinesisfirehose-deliverystream-bufferinghints-intervalinseconds
         */
        IntervalInSeconds: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-bufferinghints.html#cfn-kinesisfirehose-deliverystream-bufferinghints-sizeinmbs
         */
        SizeInMBs: number | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-cloudwatchloggingoptions.html
     */
    export class CloudWatchLoggingOptionsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-cloudwatchloggingoptions.html#cfn-kinesisfirehose-deliverystream-cloudwatchloggingoptions-enabled
         */
        Enabled?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-cloudwatchloggingoptions.html#cfn-kinesisfirehose-deliverystream-cloudwatchloggingoptions-loggroupname
         */
        LogGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-cloudwatchloggingoptions.html#cfn-kinesisfirehose-deliverystream-cloudwatchloggingoptions-logstreamname
         */
        LogStreamName?: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-copycommand.html
     */
    export class CopyCommandProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-copycommand.html#cfn-kinesisfirehose-deliverystream-copycommand-copyoptions
         */
        CopyOptions?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-copycommand.html#cfn-kinesisfirehose-deliverystream-copycommand-datatablecolumns
         */
        DataTableColumns?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-copycommand.html#cfn-kinesisfirehose-deliverystream-copycommand-datatablename
         */
        DataTableName: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchbufferinghints.html
     */
    export class ElasticsearchBufferingHintsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchbufferinghints.html#cfn-kinesisfirehose-deliverystream-elasticsearchbufferinghints-intervalinseconds
         */
        IntervalInSeconds: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchbufferinghints.html#cfn-kinesisfirehose-deliverystream-elasticsearchbufferinghints-sizeinmbs
         */
        SizeInMBs: number | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html
     */
    export class ElasticsearchDestinationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-bufferinghints
         */
        BufferingHints: aws.kinesisfirehose.DeliveryStream.ElasticsearchBufferingHintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-cloudwatchloggingoptions
         */
        CloudWatchLoggingOptions?: aws.kinesisfirehose.DeliveryStream.CloudWatchLoggingOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-domainarn
         */
        DomainARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-indexname
         */
        IndexName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-indexrotationperiod
         */
        IndexRotationPeriod: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-processingconfiguration
         */
        ProcessingConfiguration?: aws.kinesisfirehose.DeliveryStream.ProcessingConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-retryoptions
         */
        RetryOptions: aws.kinesisfirehose.DeliveryStream.ElasticsearchRetryOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-rolearn
         */
        RoleARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-s3backupmode
         */
        S3BackupMode: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-s3configuration
         */
        S3Configuration: aws.kinesisfirehose.DeliveryStream.S3DestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration-typename
         */
        TypeName: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchretryoptions.html
     */
    export class ElasticsearchRetryOptionsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-elasticsearchretryoptions.html#cfn-kinesisfirehose-deliverystream-elasticsearchretryoptions-durationinseconds
         */
        DurationInSeconds: number | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-encryptionconfiguration.html
     */
    export class EncryptionConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-encryptionconfiguration.html#cfn-kinesisfirehose-deliverystream-encryptionconfiguration-kmsencryptionconfig
         */
        KMSEncryptionConfig?: aws.kinesisfirehose.DeliveryStream.KMSEncryptionConfigProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-encryptionconfiguration.html#cfn-kinesisfirehose-deliverystream-encryptionconfiguration-noencryptionconfig
         */
        NoEncryptionConfig?: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html
     */
    export class ExtendedS3DestinationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-bucketarn
         */
        BucketARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-bufferinghints
         */
        BufferingHints: aws.kinesisfirehose.DeliveryStream.BufferingHintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-cloudwatchloggingoptions
         */
        CloudWatchLoggingOptions?: aws.kinesisfirehose.DeliveryStream.CloudWatchLoggingOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-compressionformat
         */
        CompressionFormat: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-encryptionconfiguration
         */
        EncryptionConfiguration?: aws.kinesisfirehose.DeliveryStream.EncryptionConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-prefix
         */
        Prefix: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-processingconfiguration
         */
        ProcessingConfiguration?: aws.kinesisfirehose.DeliveryStream.ProcessingConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-rolearn
         */
        RoleARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-s3backupconfiguration
         */
        S3BackupConfiguration?: aws.kinesisfirehose.DeliveryStream.S3DestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-s3backupmode
         */
        S3BackupMode?: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kmsencryptionconfig.html
     */
    export class KMSEncryptionConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kmsencryptionconfig.html#cfn-kinesisfirehose-deliverystream-kmsencryptionconfig-awskmskeyarn
         */
        AWSKMSKeyARN: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html
     */
    export class ProcessingConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html#cfn-kinesisfirehose-deliverystream-processingconfiguration-enabled
         */
        Enabled: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html#cfn-kinesisfirehose-deliverystream-processingconfiguration-processors
         */
        Processors: aws.kinesisfirehose.DeliveryStream.ProcessorProperty[];

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processor.html
     */
    export class ProcessorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processor.html#cfn-kinesisfirehose-deliverystream-processor-parameters
         */
        Parameters: aws.kinesisfirehose.DeliveryStream.ProcessorParameterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processor.html#cfn-kinesisfirehose-deliverystream-processor-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processorparameter.html
     */
    export class ProcessorParameterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processorparameter.html#cfn-kinesisfirehose-deliverystream-processorparameter-parametername
         */
        ParameterName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processorparameter.html#cfn-kinesisfirehose-deliverystream-processorparameter-parametervalue
         */
        ParameterValue: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html
     */
    export class RedshiftDestinationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-cloudwatchloggingoptions
         */
        CloudWatchLoggingOptions?: aws.kinesisfirehose.DeliveryStream.CloudWatchLoggingOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-clusterjdbcurl
         */
        ClusterJDBCURL: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-copycommand
         */
        CopyCommand: aws.kinesisfirehose.DeliveryStream.CopyCommandProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-password
         */
        Password: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-processingconfiguration
         */
        ProcessingConfiguration?: aws.kinesisfirehose.DeliveryStream.ProcessingConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-rolearn
         */
        RoleARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-s3configuration
         */
        S3Configuration: aws.kinesisfirehose.DeliveryStream.S3DestinationConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration-username
         */
        Username: string | core.Token;

    }
}
export namespace aws.kinesisfirehose.DeliveryStream {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html
     */
    export class S3DestinationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-bucketarn
         */
        BucketARN: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-bufferinghints
         */
        BufferingHints: aws.kinesisfirehose.DeliveryStream.BufferingHintsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-cloudwatchloggingoptions
         */
        CloudWatchLoggingOptions?: aws.kinesisfirehose.DeliveryStream.CloudWatchLoggingOptionsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-compressionformat
         */
        CompressionFormat: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-encryptionconfiguration
         */
        EncryptionConfiguration?: aws.kinesisfirehose.DeliveryStream.EncryptionConfigurationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-prefix
         */
        Prefix: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-rolearn
         */
        RoleARN: string | core.Token;

    }
}
export namespace aws.lambda.Function {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
     */
    export class CodeProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3bucket
         */
        S3Bucket?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3key
         */
        S3Key?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3objectversion
         */
        S3ObjectVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-zipfile
         */
        ZipFile?: string | core.Token;

    }
}
export namespace aws.lambda.Function {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html
     */
    export class DeadLetterConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html#cfn-lambda-function-deadletterconfig-targetarn
         */
        TargetArn?: string | core.Token;

    }
}
export namespace aws.lambda.Function {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html
     */
    export class EnvironmentProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html#cfn-lambda-function-environment-variables
         */
        Variables?: { [key: string]: (string | core.Token) };

    }
}
export namespace aws.lambda.Function {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html
     */
    export class TracingConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html#cfn-lambda-function-tracingconfig-mode
         */
        Mode?: string | core.Token;

    }
}
export namespace aws.lambda.Function {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html
     */
    export class VpcConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-securitygroupids
         */
        SecurityGroupIds: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-subnetids
         */
        SubnetIds: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.logs.MetricFilter {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html
     */
    export class MetricTransformationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html#cfn-cwl-metricfilter-metrictransformation-metricname
         */
        MetricName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html#cfn-cwl-metricfilter-metrictransformation-metricnamespace
         */
        MetricNamespace: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html#cfn-cwl-metricfilter-metrictransformation-metricvalue
         */
        MetricValue: string | core.Token;

    }
}
export namespace aws.opsworks.App {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html
     */
    export class DataSourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html#cfn-opsworks-app-datasource-arn
         */
        Arn?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html#cfn-opsworks-app-datasource-databasename
         */
        DatabaseName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html#cfn-opsworks-app-datasource-type
         */
        Type?: string | core.Token;

    }
}
export namespace aws.opsworks.App {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html
     */
    export class EnvironmentVariableProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html#cfn-opsworks-app-environment-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html#cfn-opsworks-app-environment-secure
         */
        Secure?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html#value
         */
        Value: string | core.Token;

    }
}
export namespace aws.opsworks.App {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
     */
    export class SourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-pw
         */
        Password?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-revision
         */
        Revision?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-sshkey
         */
        SshKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-url
         */
        Url?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-username
         */
        Username?: string | core.Token;

    }
}
export namespace aws.opsworks.App {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html
     */
    export class SslConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html#cfn-opsworks-app-sslconfig-certificate
         */
        Certificate?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html#cfn-opsworks-app-sslconfig-chain
         */
        Chain?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html#cfn-opsworks-app-sslconfig-privatekey
         */
        PrivateKey?: string | core.Token;

    }
}
export namespace aws.opsworks.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html
     */
    export class BlockDeviceMappingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html#cfn-opsworks-instance-blockdevicemapping-devicename
         */
        DeviceName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html#cfn-opsworks-instance-blockdevicemapping-ebs
         */
        Ebs?: aws.opsworks.Instance.EbsBlockDeviceProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html#cfn-opsworks-instance-blockdevicemapping-nodevice
         */
        NoDevice?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html#cfn-opsworks-instance-blockdevicemapping-virtualname
         */
        VirtualName?: string | core.Token;

    }
}
export namespace aws.opsworks.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html
     */
    export class EbsBlockDeviceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-deleteontermination
         */
        DeleteOnTermination?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-snapshotid
         */
        SnapshotId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-volumesize
         */
        VolumeSize?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html#cfn-opsworks-instance-ebsblockdevice-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.opsworks.Instance {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html
     */
    export class TimeBasedAutoScalingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-friday
         */
        Friday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-monday
         */
        Monday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-saturday
         */
        Saturday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-sunday
         */
        Sunday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-thursday
         */
        Thursday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-tuesday
         */
        Tuesday?: { [key: string]: (string | core.Token) };

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html#cfn-opsworks-instance-timebasedautoscaling-wednesday
         */
        Wednesday?: { [key: string]: (string | core.Token) };

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html
     */
    export class AutoScalingThresholdsProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-cputhreshold
         */
        CpuThreshold?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-ignoremetricstime
         */
        IgnoreMetricsTime?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-instancecount
         */
        InstanceCount?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-loadthreshold
         */
        LoadThreshold?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-memorythreshold
         */
        MemoryThreshold?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html#cfn-opsworks-layer-loadbasedautoscaling-autoscalingthresholds-thresholdwaittime
         */
        ThresholdsWaitTime?: number | core.Token;

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html
     */
    export class LifecycleEventConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html#cfn-opsworks-layer-lifecycleconfiguration-shutdowneventconfiguration
         */
        ShutdownEventConfiguration?: aws.opsworks.Layer.ShutdownEventConfigurationProperty;

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html
     */
    export class LoadBasedAutoScalingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html#cfn-opsworks-layer-loadbasedautoscaling-downscaling
         */
        DownScaling?: aws.opsworks.Layer.AutoScalingThresholdsProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html#cfn-opsworks-layer-loadbasedautoscaling-enable
         */
        Enable?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html#cfn-opsworks-layer-loadbasedautoscaling-upscaling
         */
        UpScaling?: aws.opsworks.Layer.AutoScalingThresholdsProperty;

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html
     */
    export class RecipesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-configure
         */
        Configure?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-deploy
         */
        Deploy?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-setup
         */
        Setup?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-shutdown
         */
        Shutdown?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html#cfn-opsworks-layer-customrecipes-undeploy
         */
        Undeploy?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html
     */
    export class ShutdownEventConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html#cfn-opsworks-layer-lifecycleconfiguration-shutdowneventconfiguration-delayuntilelbconnectionsdrained
         */
        DelayUntilElbConnectionsDrained?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html#cfn-opsworks-layer-lifecycleconfiguration-shutdowneventconfiguration-executiontimeout
         */
        ExecutionTimeout?: number | core.Token;

    }
}
export namespace aws.opsworks.Layer {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html
     */
    export class VolumeConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-iops
         */
        Iops?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-mountpoint
         */
        MountPoint?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-numberofdisks
         */
        NumberOfDisks?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-raidlevel
         */
        RaidLevel?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-size
         */
        Size?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html#cfn-opsworks-layer-volconfig-volumetype
         */
        VolumeType?: string | core.Token;

    }
}
export namespace aws.opsworks.Stack {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html
     */
    export class ChefConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html#cfn-opsworks-chefconfiguration-berkshelfversion
         */
        BerkshelfVersion?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html#cfn-opsworks-chefconfiguration-berkshelfversion
         */
        ManageBerkshelf?: boolean | core.Token;

    }
}
export namespace aws.opsworks.Stack {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html
     */
    export class ElasticIpProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html#cfn-opsworks-stack-elasticip-ip
         */
        Ip: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html#cfn-opsworks-stack-elasticip-name
         */
        Name?: string | core.Token;

    }
}
export namespace aws.opsworks.Stack {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html
     */
    export class RdsDbInstanceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html#cfn-opsworks-stack-rdsdbinstance-dbpassword
         */
        DbPassword: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html#cfn-opsworks-stack-rdsdbinstance-dbuser
         */
        DbUser: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html#cfn-opsworks-stack-rdsdbinstance-rdsdbinstancearn
         */
        RdsDbInstanceArn: string | core.Token;

    }
}
export namespace aws.opsworks.Stack {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html
     */
    export class SourceProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-password
         */
        Password?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-revision
         */
        Revision?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-sshkey
         */
        SshKey?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-type
         */
        Type?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-url
         */
        Url?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html#cfn-opsworks-custcookbooksource-username
         */
        Username?: string | core.Token;

    }
}
export namespace aws.opsworks.Stack {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html
     */
    export class StackConfigurationManagerProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html#cfn-opsworks-configmanager-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html#cfn-opsworks-configmanager-version
         */
        Version?: string | core.Token;

    }
}
export namespace aws.rds.DBSecurityGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html
     */
    export class IngressProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html#cfn-rds-securitygroup-cidrip
         */
        CIDRIP?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html#cfn-rds-securitygroup-ec2securitygroupid
         */
        EC2SecurityGroupId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html#cfn-rds-securitygroup-ec2securitygroupname
         */
        EC2SecurityGroupName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group-rule.html#cfn-rds-securitygroup-ec2securitygroupownerid
         */
        EC2SecurityGroupOwnerId?: string | core.Token;

    }
}
export namespace aws.rds.OptionGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html
     */
    export class OptionConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-dbsecuritygroupmemberships
         */
        DBSecurityGroupMemberships?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-optionname
         */
        OptionName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-optionsettings
         */
        OptionSettings?: aws.rds.OptionGroup.OptionSettingProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-vpcsecuritygroupmemberships
         */
        VpcSecurityGroupMemberships?: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.rds.OptionGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html
     */
    export class OptionSettingProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html#cfn-rds-optiongroup-optionconfigurations-optionsettings-name
         */
        Name?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations-optionsettings.html#cfn-rds-optiongroup-optionconfigurations-optionsettings-value
         */
        Value?: string | core.Token;

    }
}
export namespace aws.redshift.Cluster {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html
     */
    export class LoggingPropertiesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html#cfn-redshift-cluster-loggingproperties-bucketname
         */
        BucketName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-redshift-cluster-loggingproperties.html#cfn-redshift-cluster-loggingproperties-s3keyprefix
         */
        S3KeyPrefix?: string | core.Token;

    }
}
export namespace aws.redshift.ClusterParameterGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html
     */
    export class ParameterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html#cfn-redshift-clusterparametergroup-parameter-parametername
         */
        ParameterName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-property-redshift-clusterparametergroup-parameter.html#cfn-redshift-clusterparametergroup-parameter-parametervalue
         */
        ParameterValue: string | core.Token;

    }
}
export namespace aws.route53.HealthCheck {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-alarmidentifier.html
     */
    export class AlarmIdentifierProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-alarmidentifier.html#cfn-route53-healthcheck-alarmidentifier-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-alarmidentifier.html#cfn-route53-healthcheck-alarmidentifier-region
         */
        Region: string | core.Token;

    }
}
export namespace aws.route53.HealthCheck {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html
     */
    export class HealthCheckConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-alarmidentifier
         */
        AlarmIdentifier?: aws.route53.HealthCheck.AlarmIdentifierProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-childhealthchecks
         */
        ChildHealthChecks?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-enablesni
         */
        EnableSNI?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-failurethreshold
         */
        FailureThreshold?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-fullyqualifieddomainname
         */
        FullyQualifiedDomainName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-healththreshold
         */
        HealthThreshold?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-ipaddress
         */
        IPAddress?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-insufficientdatahealthstatus
         */
        InsufficientDataHealthStatus?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-inverted
         */
        Inverted?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-measurelatency
         */
        MeasureLatency?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-port
         */
        Port?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-requestinterval
         */
        RequestInterval?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-resourcepath
         */
        ResourcePath?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-searchstring
         */
        SearchString?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthcheckconfig.html#cfn-route53-healthcheck-healthcheckconfig-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.route53.HealthCheck {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthchecktag.html
     */
    export class HealthCheckTagProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthchecktag.html#cfn-route53-healthchecktags-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-healthcheck-healthchecktag.html#cfn-route53-healthchecktags-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.route53.HostedZone {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzoneconfig.html
     */
    export class HostedZoneConfigProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzoneconfig.html#cfn-route53-hostedzone-hostedzoneconfig-comment
         */
        Comment?: string | core.Token;

    }
}
export namespace aws.route53.HostedZone {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzonetags.html
     */
    export class HostedZoneTagProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzonetags.html#cfn-route53-hostedzonetags-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-hostedzone-hostedzonetags.html#cfn-route53-hostedzonetags-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.route53.HostedZone {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone-hostedzonevpcs.html
     */
    export class VPCProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone-hostedzonevpcs.html#cfn-route53-hostedzone-hostedzonevpcs-vpcid
         */
        VPCId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone-hostedzonevpcs.html#cfn-route53-hostedzone-hostedzonevpcs-vpcregion
         */
        VPCRegion: string | core.Token;

    }
}
export namespace aws.route53.RecordSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
     */
    export class AliasTargetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-dnshostname
         */
        DNSName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-evaluatetargethealth
         */
        EvaluateTargetHealth?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-hostedzoneid
         */
        HostedZoneId: string | core.Token;

    }
}
export namespace aws.route53.RecordSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
     */
    export class GeoLocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordset-geolocation-continentcode
         */
        ContinentCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordset-geolocation-countrycode
         */
        CountryCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordset-geolocation-subdivisioncode
         */
        SubdivisionCode?: string | core.Token;

    }
}
export namespace aws.route53.RecordSetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html
     */
    export class AliasTargetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-dnshostname
         */
        DNSName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-evaluatetargethealth
         */
        EvaluateTargetHealth?: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-hostedzoneid
         */
        HostedZoneId: string | core.Token;

    }
}
export namespace aws.route53.RecordSetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html
     */
    export class GeoLocationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordsetgroup-geolocation-continentcode
         */
        ContinentCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordset-geolocation-countrycode
         */
        CountryCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset-geolocation.html#cfn-route53-recordset-geolocation-subdivisioncode
         */
        SubdivisionCode?: string | core.Token;

    }
}
export namespace aws.route53.RecordSetGroup {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
     */
    export class RecordSetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-aliastarget
         */
        AliasTarget?: aws.route53.RecordSetGroup.AliasTargetProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-comment
         */
        Comment?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-failover
         */
        Failover?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-geolocation
         */
        GeoLocation?: aws.route53.RecordSetGroup.GeoLocationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-healthcheckid
         */
        HealthCheckId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-hostedzoneid
         */
        HostedZoneId?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-hostedzonename
         */
        HostedZoneName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-region
         */
        Region?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-resourcerecords
         */
        ResourceRecords?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-setidentifier
         */
        SetIdentifier?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-ttl
         */
        TTL?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html#cfn-route53-recordset-weight
         */
        Weight?: number | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html
     */
    export class AbortIncompleteMultipartUploadProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-abortincompletemultipartupload.html#cfn-s3-bucket-abortincompletemultipartupload-daysafterinitiation
         */
        DaysAfterInitiation: number | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html
     */
    export class AccelerateConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-accelerateconfiguration.html#cfn-s3-bucket-accelerateconfiguration-accelerationstatus
         */
        AccelerationStatus: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html
     */
    export class CorsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors.html#cfn-s3-bucket-cors-corsrule
         */
        CorsRules: aws.s3.Bucket.CorsRuleProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html
     */
    export class CorsRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedheaders
         */
        AllowedHeaders?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedmethods
         */
        AllowedMethods: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-allowedorigins
         */
        AllowedOrigins: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-exposedheaders
         */
        ExposedHeaders?: (string | core.Token)[] | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-id
         */
        Id?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-cors-corsrule.html#cfn-s3-bucket-cors-corsrule-maxage
         */
        MaxAge?: number | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html
     */
    export class FilterRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules-name
         */
        Name: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html
     */
    export class LambdaConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-event
         */
        Event: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-filter
         */
        Filter?: aws.s3.Bucket.NotificationFilterProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-lambdaconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig-function
         */
        Function: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html
     */
    export class LifecycleConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig.html#cfn-s3-bucket-lifecycleconfig-rules
         */
        Rules: aws.s3.Bucket.RuleProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html
     */
    export class LoggingConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html#cfn-s3-bucket-loggingconfig-destinationbucketname
         */
        DestinationBucketName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-loggingconfig.html#cfn-s3-bucket-loggingconfig-logfileprefix
         */
        LogFilePrefix?: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html
     */
    export class MetricsConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-id
         */
        Id: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-prefix
         */
        Prefix?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-metricsconfiguration.html#cfn-s3-bucket-metricsconfiguration-tagfilters
         */
        TagFilters?: aws.s3.Bucket.TagFilterProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html
     */
    export class NoncurrentVersionTransitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition-storageclass
         */
        StorageClass: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition-transitionindays
         */
        TransitionInDays: number | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
     */
    export class NotificationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-lambdaconfig
         */
        LambdaConfigurations?: aws.s3.Bucket.LambdaConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-queueconfig
         */
        QueueConfigurations?: aws.s3.Bucket.QueueConfigurationProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html#cfn-s3-bucket-notificationconfig-topicconfig
         */
        TopicConfigurations?: aws.s3.Bucket.TopicConfigurationProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html
     */
    export class NotificationFilterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key
         */
        S3Key: aws.s3.Bucket.S3KeyFilterProperty;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html
     */
    export class QueueConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-event
         */
        Event: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-filter
         */
        Filter?: aws.s3.Bucket.NotificationFilterProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-queueconfig.html#cfn-s3-bucket-notificationconfig-queueconfig-queue
         */
        Queue: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html
     */
    export class RedirectAllRequestsToProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html#cfn-s3-websiteconfiguration-redirectallrequeststo-hostname
         */
        HostName: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-redirectallrequeststo.html#cfn-s3-websiteconfiguration-redirectallrequeststo-protocol
         */
        Protocol?: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html
     */
    export class RedirectRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-hostname
         */
        HostName?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-httpredirectcode
         */
        HttpRedirectCode?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-protocol
         */
        Protocol?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-replacekeyprefixwith
         */
        ReplaceKeyPrefixWith?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-redirectrule.html#cfn-s3-websiteconfiguration-redirectrule-replacekeywith
         */
        ReplaceKeyWith?: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html
     */
    export class ReplicationConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html#cfn-s3-bucket-replicationconfiguration-role
         */
        Role: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration.html#cfn-s3-bucket-replicationconfiguration-rules
         */
        Rules: aws.s3.Bucket.ReplicationRuleProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html
     */
    export class ReplicationDestinationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationconfiguration-rules-destination-bucket
         */
        Bucket: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules-destination.html#cfn-s3-bucket-replicationconfiguration-rules-destination-storageclass
         */
        StorageClass?: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html
     */
    export class ReplicationRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-destination
         */
        Destination: aws.s3.Bucket.ReplicationDestinationProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-id
         */
        Id?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-prefix
         */
        Prefix: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-replicationconfiguration-rules.html#cfn-s3-bucket-replicationconfiguration-rules-status
         */
        Status: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html
     */
    export class RoutingRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html#cfn-s3-websiteconfiguration-routingrules-redirectrule
         */
        RedirectRule: aws.s3.Bucket.RedirectRuleProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition
         */
        RoutingRuleCondition?: aws.s3.Bucket.RoutingRuleConditionProperty;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html
     */
    export class RoutingRuleConditionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition-httperrorcodereturnedequals
         */
        HttpErrorCodeReturnedEquals?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules-routingrulecondition.html#cfn-s3-websiteconfiguration-routingrules-routingrulecondition-keyprefixequals
         */
        KeyPrefixEquals?: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
     */
    export class RuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-abortincompletemultipartupload
         */
        AbortIncompleteMultipartUpload?: aws.s3.Bucket.AbortIncompleteMultipartUploadProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationdate
         */
        ExpirationDate?: Date | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-expirationindays
         */
        ExpirationInDays?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-id
         */
        Id?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversionexpirationindays
         */
        NoncurrentVersionExpirationInDays?: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransition
         */
        NoncurrentVersionTransition?: aws.s3.Bucket.NoncurrentVersionTransitionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-noncurrentversiontransitions
         */
        NoncurrentVersionTransitions?: aws.s3.Bucket.NoncurrentVersionTransitionProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-prefix
         */
        Prefix?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-status
         */
        Status: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-rule-tagfilters
         */
        TagFilters?: aws.s3.Bucket.TagFilterProperty[];

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transition
         */
        Transition?: aws.s3.Bucket.TransitionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html#cfn-s3-bucket-lifecycleconfig-rule-transitions
         */
        Transitions?: aws.s3.Bucket.TransitionProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html
     */
    export class S3KeyFilterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key.html#cfn-s3-bucket-notificationconfiguraiton-config-filter-s3key-rules
         */
        Rules: aws.s3.Bucket.FilterRuleProperty[];

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html
     */
    export class TagFilterProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-tagfilter.html#cfn-s3-bucket-tagfilter-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html
     */
    export class TopicConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-event
         */
        Event: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-filter
         */
        Filter?: aws.s3.Bucket.NotificationFilterProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig-topicconfig.html#cfn-s3-bucket-notificationconfig-topicconfig-topic
         */
        Topic: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html
     */
    export class TransitionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-storageclass
         */
        StorageClass: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-transitiondate
         */
        TransitionDate?: Date | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule-transition.html#cfn-s3-bucket-lifecycleconfig-rule-transition-transitionindays
         */
        TransitionInDays?: number | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html
     */
    export class VersioningConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-versioningconfig.html#cfn-s3-bucket-versioningconfig-status
         */
        Status: string | core.Token;

    }
}
export namespace aws.s3.Bucket {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html
     */
    export class WebsiteConfigurationProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-errordocument
         */
        ErrorDocument?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-indexdocument
         */
        IndexDocument?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-redirectallrequeststo
         */
        RedirectAllRequestsTo?: aws.s3.Bucket.RedirectAllRequestsToProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration.html#cfn-s3-websiteconfiguration-routingrules
         */
        RoutingRules?: aws.s3.Bucket.RoutingRuleProperty[];

    }
}
export namespace aws.sns.Topic {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-subscription.html
     */
    export class SubscriptionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-subscription.html#cfn-sns-topic-subscription-endpoint
         */
        Endpoint: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-subscription.html#cfn-sns-topic-subscription-protocol
         */
        Protocol: string | core.Token;

    }
}
export namespace aws.ssm.Association {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-parametervalues.html
     */
    export class ParameterValuesProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-parametervalues.html#cfn-ssm-association-parametervalues-parametervalues
         */
        ParameterValues: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.ssm.Association {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html
     */
    export class TargetProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html#cfn-ssm-association-target-key
         */
        Key: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-target.html#cfn-ssm-association-target-values
         */
        Values: (string | core.Token)[] | core.Token;

    }
}
export namespace aws.waf.ByteMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html
     */
    export class ByteMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html#cfn-waf-bytematchset-bytematchtuples-fieldtomatch
         */
        FieldToMatch: aws.waf.ByteMatchSet.FieldToMatchProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html#cfn-waf-bytematchset-bytematchtuples-positionalconstraint
         */
        PositionalConstraint: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html#cfn-waf-bytematchset-bytematchtuples-targetstring
         */
        TargetString?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html#cfn-waf-bytematchset-bytematchtuples-targetstringbase64
         */
        TargetStringBase64?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html#cfn-waf-bytematchset-bytematchtuples-texttransformation
         */
        TextTransformation: string | core.Token;

    }
}
export namespace aws.waf.ByteMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html#cfn-waf-bytematchset-bytematchtuples-fieldtomatch-data
         */
        Data?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html#cfn-waf-bytematchset-bytematchtuples-fieldtomatch-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.IPSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-ipset-ipsetdescriptors.html
     */
    export class IPSetDescriptorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-ipset-ipsetdescriptors.html#cfn-waf-ipset-ipsetdescriptors-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-ipset-ipsetdescriptors.html#cfn-waf-ipset-ipsetdescriptors-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.waf.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html
     */
    export class PredicateProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html#cfn-waf-rule-predicates-dataid
         */
        DataId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html#cfn-waf-rule-predicates-negated
         */
        Negated: boolean | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-rule-predicates.html#cfn-waf-rule-predicates-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.SizeConstraintSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint-fieldtomatch.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch-data
         */
        Data?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint-fieldtomatch.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.SizeConstraintSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html
     */
    export class SizeConstraintProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-comparisonoperator
         */
        ComparisonOperator: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch
         */
        FieldToMatch: aws.waf.SizeConstraintSet.FieldToMatchProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-size
         */
        Size: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sizeconstraintset-sizeconstraint.html#cfn-waf-sizeconstraintset-sizeconstraint-texttransformation
         */
        TextTransformation: string | core.Token;

    }
}
export namespace aws.waf.SqlInjectionMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch-data
         */
        Data?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples-fieldtomatch.html#cfn-waf-sizeconstraintset-sizeconstraint-fieldtomatch-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.SqlInjectionMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sqlinjectionmatchset-sqlinjectionmatchtuples.html
     */
    export class SqlInjectionMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sqlinjectionmatchset-sqlinjectionmatchtuples.html#cfn-waf-sqlinjectionmatchset-sqlinjectionmatchtuples-fieldtomatch
         */
        FieldToMatch: aws.waf.SqlInjectionMatchSet.FieldToMatchProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-sqlinjectionmatchset-sqlinjectionmatchtuples.html#cfn-waf-sqlinjectionmatchset-sqlinjectionmatchtuples-texttransformation
         */
        TextTransformation: string | core.Token;

    }
}
export namespace aws.waf.WebACL {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html
     */
    export class ActivatedRuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-action
         */
        Action: aws.waf.WebACL.WafActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-priority
         */
        Priority: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-ruleid
         */
        RuleId: string | core.Token;

    }
}
export namespace aws.waf.WebACL {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-action.html
     */
    export class WafActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-action.html#cfn-waf-webacl-action-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.XssMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple-fieldtomatch.html#cfn-waf-xssmatchset-xssmatchtuple-fieldtomatch-data
         */
        Data?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple-fieldtomatch.html#cfn-waf-xssmatchset-xssmatchtuple-fieldtomatch-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.waf.XssMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple.html
     */
    export class XssMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple.html#cfn-waf-xssmatchset-xssmatchtuple-fieldtomatch
         */
        FieldToMatch: aws.waf.XssMatchSet.FieldToMatchProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-xssmatchset-xssmatchtuple.html#cfn-waf-xssmatchset-xssmatchtuple-texttransformation
         */
        TextTransformation: string | core.Token;

    }
}
export namespace aws.wafregional.ByteMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html
     */
    export class ByteMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html#cfn-wafregional-bytematchset-bytematchtuple-targetstring
         */
        TargetString?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html#cfn-wafregional-bytematchset-bytematchtuple-targetstringbase64
         */
        TargetStringBase64?: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html#cfn-wafregional-bytematchset-bytematchtuple-positionalconstraint
         */
        PositionalConstraint: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html#cfn-wafregional-bytematchset-bytematchtuple-texttransformation
         */
        TextTransformation: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-bytematchtuple.html#cfn-wafregional-bytematchset-bytematchtuple-fieldtomatch
         */
        FieldToMatch: aws.wafregional.ByteMatchSet.FieldToMatchProperty;

    }
}
export namespace aws.wafregional.ByteMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-fieldtomatch.html#cfn-wafregional-bytematchset-fieldtomatch-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-bytematchset-fieldtomatch.html#cfn-wafregional-bytematchset-fieldtomatch-data
         */
        Data?: string | core.Token;

    }
}
export namespace aws.wafregional.IPSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-ipset-ipsetdescriptor.html
     */
    export class IPSetDescriptorProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-ipset-ipsetdescriptor.html#cfn-wafregional-ipset-ipsetdescriptor-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-ipset-ipsetdescriptor.html#cfn-wafregional-ipset-ipsetdescriptor-value
         */
        Value: string | core.Token;

    }
}
export namespace aws.wafregional.Rule {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html
     */
    export class PredicateProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html#cfn-wafregional-rule-predicate-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html#cfn-wafregional-rule-predicate-dataid
         */
        DataId: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-rule-predicate.html#cfn-wafregional-rule-predicate-negated
         */
        Negated: boolean | core.Token;

    }
}
export namespace aws.wafregional.SizeConstraintSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-fieldtomatch.html#cfn-wafregional-sizeconstraintset-fieldtomatch-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-fieldtomatch.html#cfn-wafregional-sizeconstraintset-fieldtomatch-data
         */
        Data?: string | core.Token;

    }
}
export namespace aws.wafregional.SizeConstraintSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html
     */
    export class SizeConstraintProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-comparisonoperator
         */
        ComparisonOperator: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-size
         */
        Size: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-texttransformation
         */
        TextTransformation: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sizeconstraintset-sizeconstraint.html#cfn-wafregional-sizeconstraintset-sizeconstraint-fieldtomatch
         */
        FieldToMatch: aws.wafregional.SizeConstraintSet.FieldToMatchProperty;

    }
}
export namespace aws.wafregional.SqlInjectionMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-fieldtomatch.html#cfn-wafregional-sqlinjectionmatchset-fieldtomatch-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-fieldtomatch.html#cfn-wafregional-sqlinjectionmatchset-fieldtomatch-data
         */
        Data?: string | core.Token;

    }
}
export namespace aws.wafregional.SqlInjectionMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple.html
     */
    export class SqlInjectionMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple.html#cfn-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple-texttransformation
         */
        TextTransformation: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple.html#cfn-wafregional-sqlinjectionmatchset-sqlinjectionmatchtuple-fieldtomatch
         */
        FieldToMatch: aws.wafregional.SqlInjectionMatchSet.FieldToMatchProperty;

    }
}
export namespace aws.wafregional.WebACL {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-action.html
     */
    export class ActionProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-action.html#cfn-wafregional-webacl-action-type
         */
        Type: string | core.Token;

    }
}
export namespace aws.wafregional.WebACL {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html
     */
    export class RuleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html#cfn-wafregional-webacl-rule-action
         */
        Action: aws.wafregional.WebACL.ActionProperty;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html#cfn-wafregional-webacl-rule-priority
         */
        Priority: number | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-webacl-rule.html#cfn-wafregional-webacl-rule-ruleid
         */
        RuleId: string | core.Token;

    }
}
export namespace aws.wafregional.XssMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-fieldtomatch.html
     */
    export class FieldToMatchProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-fieldtomatch.html#cfn-wafregional-xssmatchset-fieldtomatch-type
         */
        Type: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-fieldtomatch.html#cfn-wafregional-xssmatchset-fieldtomatch-data
         */
        Data?: string | core.Token;

    }
}
export namespace aws.wafregional.XssMatchSet {

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-xssmatchtuple.html
     */
    export class XssMatchTupleProperty {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-xssmatchtuple.html#cfn-wafregional-xssmatchset-xssmatchtuple-texttransformation
         */
        TextTransformation: string | core.Token;

        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafregional-xssmatchset-xssmatchtuple.html#cfn-wafregional-xssmatchset-xssmatchtuple-fieldtomatch
         */
        FieldToMatch: aws.wafregional.XssMatchSet.FieldToMatchProperty;

    }
}

/**
 * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
 */
export class TagProperty {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-key
     */
    Key: string | core.Token;

    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-value
     */
    Value: string | core.Token;

}