---
name: aws-quickstart-vpc
types:
    aws-quickstart-vpc:index:AvailabilityZone:
        type: object
        properties:
            availabilityZone:
                type: string
                plain: true
                description: |
                    The availability zone name to deploy the subnet into
            publicSubnetCidr:
                type: string
                plain: true
                description: |
                    CIDR block for the public subnet located in the specified availability zone
            privateSubnetACidr:
                type: string
                plain: true
                description: |
                    CIDR block for a private subnet located in the specified availability zone
            privateSubnetBCidr:
                type: string
                plain: true
                description: |
                    CIDR block for the associated private subnet (2) with a dedicated network ACL located in the specified availability zone. This subnet
                    will only be created if `CreateAdditionalPrivateSubnets` is `true`.
        required:
            - availabilityZone
        description: |
            The list of Configurations in which to create subnets. You can specify availability
            zone with a private or a public subnet cidr block. You can also associated a private
            subnet with a dedicated network ACL.
resources:
    aws-quickstart-vpc:index:Vpc:
        isComponent: true
        inputProperties:
            cidrBlock:
                type: string
                plain: true
                description: |
                    CIDR block for the VPC
            instanceTenancy:
                type: string
                plain: true
                description: |
                    The allowed tenancy of instances launched into the VPC. Defaults to `default`.
            enableDnsHostnames:
                type: boolean
                plain: true
                description: |
                    A boolean flag to enable/disable DNS hostnames in the VPC. Defaults `false`.
            enableDnsSupport:
                type: boolean
                plain: true
                description: |
                    A boolean flag to enable/disable DNS support in the VPC. Defaults true.
            createFlowLogs:
                type: boolean
                plain: true
                description: |
                    Enable Flow Logs to capture IP traffic for the VPC. Defaults to `true`
            flowLogsRetentionPeriodInDays:
                type: number
                plain: true
                description: |
                    Number of days to retain the VPC Flow Logs in CloudWatch. Defaults to `14`.
            flowLogsMaxAggregationInterval:
                type: number
                plain: true
                description: |
                    The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. You can specify 60 seconds
                    (1 minute) or 600 seconds (10 minutes). Default is `600`
            flowLogsLogFormat:
                type: string
                plain: true
                description: |
                    The fields to include in the flow log record, in the order in which they should appear. Specify the fields using the ${field-id} format,
                    separated by spaces. Default is
                    `${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}`
            flowLogsTrafficType:
                type: string
                plain: true
                description: |
                    The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic.
                    Default is `REJECT`.
            createPrivateSubnets:
                type: boolean
                plain: true
                description: |
                    Set to `false` to create only public subnets. If `false`, the CIDR parameters for ALL private subnets will be ignored.
                    Default is `true`.
            createPublicSubnets:
                type: boolean
                plain: true
                description: |
                    Set to `false` to create only private subnets. If `false`, CreatePrivateSubnets must be `true` and the CIDR parameters for ALL public subnets will be
                    ignored. Default is `true`
            createNatGateways:
                type: boolean
                plain: true
                description: |
                    Set to `false` when creating only private subnets. If `true`, both CreatePublicSubnets and CreatePrivateSubnets must also be `true`.
                    Default is `true`
            createAdditionalPrivateSubnets:
                type: boolean
                plain: true
                description: |
                    Set to `true` to create a network ACL protected subnet in each Availability Zone. If `false`, the CIDR parameters for those subnets will be ignored.
                    If `true`, it also requires that the 'Create private subnets' parameter is also `true` to have any effect.
                    Default is `true`
            availabilityZoneConfig:
                type: array
                items:
                    "$ref": "#/types/aws-quickstart-vpc:index:AvailabilityZone"
                    plain: true
                plain: true
                description: |
                    The list of Configurations in which to create subnets. You can specify availability
                    zone with a private or a public subnet cidr block. You can also associated a private
                    subnet with a dedicated network ACL.
        properties:
            publicSubnetIDs:
                type: array
                items:
                    type: string
                description: |
                    The IDs of the Public Subnets Created
            privateSubnetIDs:
                type: array
                items:
                    type: string
                description: |
                    The IDs of the Private Subnets Created
            natGatewayIPs:
                type: array
                items:
                    type: string
                description: |
                    The IPs of the EIPs associated with the Nat Gateways
            vpcID:
                type: string
                description: |
                    The VPC ID
        required:
            - vpcID
        requiredInputs:
            - cidrBlock
            - availabilityZoneConfig
language:
    csharp:
        packageReferences:
            Pulumi: 3.*
            Pulumi.Aws: 4.*
        namespaces:
            aws-quickstart-vpc: AwsQuickStartVpc
    go:
        generateResourceContainerTypes: true
        importBasePath: github.com/pulumi/pulumi-aws-quickstart-vpc/sdk/go/aws
    nodejs:
        dependencies:
            "@pulumi/aws": "^4.5.1"
        devDependencies:
            typescript: "^3.7.0"
    python:
        requires:
            pulumi: ">=3.0.0,<4.0.0"
            pulumi-aws: ">=4.0.0,<5.0.0"
