{
    "name": "awsx",
    "displayName": "AWSx (Pulumi Crosswalk for AWS)",
    "description": "Pulumi Amazon Web Services (AWS) AWSX Components.",
    "keywords": [
        "pulumi",
        "aws",
        "awsx",
        "kind/component",
        "category/cloud"
    ],
    "homepage": "https://pulumi.com",
    "license": "Apache-2.0",
    "repository": "https://github.com/pulumi/pulumi-awsx",
    "publisher": "Pulumi",
    "language": {
        "csharp": {
            "liftSingleValueMethodReturns": true,
            "packageReferences": {
                "Pulumi": "3.*",
                "Pulumi.Aws": "7.*",
                "Pulumi.Docker": "4.*",
                "Pulumi.DockerBuild": "0.*"
            },
            "respectSchemaVersion": true
        },
        "go": {
            "generateResourceContainerTypes": true,
            "importBasePath": "github.com/pulumi/pulumi-awsx/sdk/v3/go/awsx",
            "internalDependencies": [
                "github.com/pulumi/pulumi-docker-build/sdk/go/dockerbuild",
                "github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
            ],
            "liftSingleValueMethodReturns": true,
            "respectSchemaVersion": true
        },
        "java": {
            "dependencies": {
                "com.pulumi:aws": "7.15.0",
                "com.pulumi:docker": "4.6.0",
                "com.pulumi:docker-build": "0.0.14"
            }
        },
        "nodejs": {
            "dependencies": {
                "@aws-sdk/client-ecs": "^3.405.0",
                "@pulumi/aws": "^7.15.0",
                "@pulumi/docker": "^4.6.0",
                "@pulumi/docker-build": "^0.0.14",
                "@types/aws-lambda": "^8.10.23",
                "docker-classic": "npm:@pulumi/docker@3.6.1",
                "mime": "^2.0.0"
            },
            "devDependencies": {
                "@types/mime": "^2.0.0",
                "@types/node": "^18",
                "typescript": "^5.7.0"
            },
            "respectSchemaVersion": true
        },
        "python": {
            "liftSingleValueMethodReturns": true,
            "pyproject": {
                "enabled": true
            },
            "readme": "Pulumi Amazon Web Services (AWS) AWSX Components.",
            "requires": {
                "pulumi-aws": "\u003e=7.0.0,\u003c8.0.0",
                "pulumi-docker": "\u003e=4.6.0,\u003c5.0.0",
                "pulumi-docker-build": "\u003e=0.0.14,\u003c1.0.0"
            },
            "respectSchemaVersion": true,
            "usesIOClasses": true
        }
    },
    "config": {},
    "types": {
        "awsx:awsx:Bucket": {
            "description": "The set of arguments for constructing a Bucket resource.",
            "properties": {
                "accelerationStatus": {
                    "type": "string",
                    "description": "Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketAccelerateConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketAccelerateConfiguration`\" pulumi-lang-go=\"`s3.BucketAccelerateConfiguration`\" pulumi-lang-python=\"`s3.BucketAccelerateConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketAccelerateConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketAccelerateConfiguration`\"\u003e`aws.s3.BucketAccelerateConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "acceleration_status is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketAccelerateConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketAccelerateConfiguration \" pulumi-lang-go=\" s3.BucketAccelerateConfiguration \" pulumi-lang-python=\" s3.BucketAccelerateConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketAccelerateConfiguration \" pulumi-lang-java=\" aws.s3.BucketAccelerateConfiguration \"\u003e aws.s3.BucketAccelerateConfiguration \u003c/span\u003eresource instead."
                },
                "acl": {
                    "type": "string",
                    "description": "The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e.  Conflicts with \u003cspan pulumi-lang-nodejs=\"`grant`\" pulumi-lang-dotnet=\"`Grant`\" pulumi-lang-go=\"`grant`\" pulumi-lang-python=\"`grant`\" pulumi-lang-yaml=\"`grant`\" pulumi-lang-java=\"`grant`\"\u003e`grant`\u003c/span\u003e. The provider will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketAcl`\" pulumi-lang-dotnet=\"`aws.s3.BucketAcl`\" pulumi-lang-go=\"`s3.BucketAcl`\" pulumi-lang-python=\"`s3.BucketAcl`\" pulumi-lang-yaml=\"`aws.s3.BucketAcl`\" pulumi-lang-java=\"`aws.s3.BucketAcl`\"\u003e`aws.s3.BucketAcl`\u003c/span\u003e instead.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `\u003cspan pulumi-lang-nodejs=\"[bucketName]\" pulumi-lang-dotnet=\"[BucketName]\" pulumi-lang-go=\"[bucketName]\" pulumi-lang-python=\"[bucket_name]\" pulumi-lang-yaml=\"[bucketName]\" pulumi-lang-java=\"[bucketName]\"\u003e[bucket_name]\u003c/span\u003e--[azid]--x-s3`. Use the \u003cspan pulumi-lang-nodejs=\"`aws.s3.DirectoryBucket`\" pulumi-lang-dotnet=\"`aws.s3.DirectoryBucket`\" pulumi-lang-go=\"`s3.DirectoryBucket`\" pulumi-lang-python=\"`s3.DirectoryBucket`\" pulumi-lang-yaml=\"`aws.s3.DirectoryBucket`\" pulumi-lang-java=\"`aws.s3.DirectoryBucket`\"\u003e`aws.s3.DirectoryBucket`\u003c/span\u003e resource to manage S3 Express buckets.\n",
                    "language": {
                        "csharp": {
                            "name": "BucketName"
                        }
                    },
                    "willReplaceOnChanges": true
                },
                "bucketPrefix": {
                    "type": "string",
                    "description": "Creates a unique bucket name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).\n",
                    "willReplaceOnChanges": true
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketCorsRule:BucketCorsRule"
                    },
                    "description": "Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketCorsConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketCorsConfiguration`\" pulumi-lang-go=\"`s3.BucketCorsConfiguration`\" pulumi-lang-python=\"`s3.BucketCorsConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketCorsConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketCorsConfiguration`\"\u003e`aws.s3.BucketCorsConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "cors_rule is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketCorsConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketCorsConfiguration \" pulumi-lang-go=\" s3.BucketCorsConfiguration \" pulumi-lang-python=\" s3.BucketCorsConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketCorsConfiguration \" pulumi-lang-java=\" aws.s3.BucketCorsConfiguration \"\u003e aws.s3.BucketCorsConfiguration \u003c/span\u003eresource instead."
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. Once this parameter is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation.\n"
                },
                "grants": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketGrant:BucketGrant"
                    },
                    "description": "An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e. The provider will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketAcl`\" pulumi-lang-dotnet=\"`aws.s3.BucketAcl`\" pulumi-lang-go=\"`s3.BucketAcl`\" pulumi-lang-python=\"`s3.BucketAcl`\" pulumi-lang-yaml=\"`aws.s3.BucketAcl`\" pulumi-lang-java=\"`aws.s3.BucketAcl`\"\u003e`aws.s3.BucketAcl`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "grant is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketAcl \" pulumi-lang-dotnet=\" aws.s3.BucketAcl \" pulumi-lang-go=\" s3.BucketAcl \" pulumi-lang-python=\" s3.BucketAcl \" pulumi-lang-yaml=\" aws.s3.BucketAcl \" pulumi-lang-java=\" aws.s3.BucketAcl \"\u003e aws.s3.BucketAcl \u003c/span\u003eresource instead."
                },
                "lifecycleRules": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketLifecycleRule:BucketLifecycleRule"
                    },
                    "description": "Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketLifecycleConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketLifecycleConfiguration`\" pulumi-lang-go=\"`s3.BucketLifecycleConfiguration`\" pulumi-lang-python=\"`s3.BucketLifecycleConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketLifecycleConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketLifecycleConfiguration`\"\u003e`aws.s3.BucketLifecycleConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "lifecycle_rule is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketLifecycleConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketLifecycleConfiguration \" pulumi-lang-go=\" s3.BucketLifecycleConfiguration \" pulumi-lang-python=\" s3.BucketLifecycleConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketLifecycleConfiguration \" pulumi-lang-java=\" aws.s3.BucketLifecycleConfiguration \"\u003e aws.s3.BucketLifecycleConfiguration \u003c/span\u003eresource instead."
                },
                "logging": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketLogging:BucketLogging",
                    "description": "Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketLogging`\" pulumi-lang-dotnet=\"`aws.s3.BucketLogging`\" pulumi-lang-go=\"`s3.BucketLogging`\" pulumi-lang-python=\"`s3.BucketLogging`\" pulumi-lang-yaml=\"`aws.s3.BucketLogging`\" pulumi-lang-java=\"`aws.s3.BucketLogging`\"\u003e`aws.s3.BucketLogging`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "logging is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketLogging \" pulumi-lang-dotnet=\" aws.s3.BucketLogging \" pulumi-lang-go=\" s3.BucketLogging \" pulumi-lang-python=\" s3.BucketLogging \" pulumi-lang-yaml=\" aws.s3.BucketLogging \" pulumi-lang-java=\" aws.s3.BucketLogging \"\u003e aws.s3.BucketLogging \u003c/span\u003eresource instead."
                },
                "objectLockConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketObjectLockConfiguration:BucketObjectLockConfiguration",
                    "description": "Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details.\nThe provider wil only perform drift detection if a configuration value is provided.\nUse the \u003cspan pulumi-lang-nodejs=\"`objectLockEnabled`\" pulumi-lang-dotnet=\"`ObjectLockEnabled`\" pulumi-lang-go=\"`objectLockEnabled`\" pulumi-lang-python=\"`object_lock_enabled`\" pulumi-lang-yaml=\"`objectLockEnabled`\" pulumi-lang-java=\"`objectLockEnabled`\"\u003e`object_lock_enabled`\u003c/span\u003e parameter and the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketObjectLockConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketObjectLockConfiguration`\" pulumi-lang-go=\"`s3.BucketObjectLockConfiguration`\" pulumi-lang-python=\"`s3.BucketObjectLockConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketObjectLockConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketObjectLockConfiguration`\"\u003e`aws.s3.BucketObjectLockConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "object_lock_configuration is deprecated. Use the top-level parameter\u003cspan pulumi-lang-nodejs=\" objectLockEnabled \" pulumi-lang-dotnet=\" ObjectLockEnabled \" pulumi-lang-go=\" objectLockEnabled \" pulumi-lang-python=\" object_lock_enabled \" pulumi-lang-yaml=\" objectLockEnabled \" pulumi-lang-java=\" objectLockEnabled \"\u003e object_lock_enabled \u003c/span\u003eand the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketObjectLockConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketObjectLockConfiguration \" pulumi-lang-go=\" s3.BucketObjectLockConfiguration \" pulumi-lang-python=\" s3.BucketObjectLockConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketObjectLockConfiguration \" pulumi-lang-java=\" aws.s3.BucketObjectLockConfiguration \"\u003e aws.s3.BucketObjectLockConfiguration \u003c/span\u003eresource instead."
                },
                "objectLockEnabled": {
                    "type": "boolean",
                    "description": "Indicates whether this bucket has an Object Lock configuration enabled. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. This argument is not supported in all regions or partitions.\n",
                    "willReplaceOnChanges": true
                },
                "policy": {
                    "type": "string",
                    "description": "Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide.\nThe provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketPolicy`\" pulumi-lang-dotnet=\"`aws.s3.BucketPolicy`\" pulumi-lang-go=\"`s3.BucketPolicy`\" pulumi-lang-python=\"`s3.BucketPolicy`\" pulumi-lang-yaml=\"`aws.s3.BucketPolicy`\" pulumi-lang-java=\"`aws.s3.BucketPolicy`\"\u003e`aws.s3.BucketPolicy`\u003c/span\u003e instead.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "replicationConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketReplicationConfiguration:BucketReplicationConfiguration",
                    "description": "Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketReplicationConfig`\" pulumi-lang-dotnet=\"`aws.s3.BucketReplicationConfig`\" pulumi-lang-go=\"`s3.BucketReplicationConfig`\" pulumi-lang-python=\"`s3.BucketReplicationConfig`\" pulumi-lang-yaml=\"`aws.s3.BucketReplicationConfig`\" pulumi-lang-java=\"`aws.s3.BucketReplicationConfig`\"\u003e`aws.s3.BucketReplicationConfig`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "replication_configuration is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketReplicationConfig \" pulumi-lang-dotnet=\" aws.s3.BucketReplicationConfig \" pulumi-lang-go=\" s3.BucketReplicationConfig \" pulumi-lang-python=\" s3.BucketReplicationConfig \" pulumi-lang-yaml=\" aws.s3.BucketReplicationConfig \" pulumi-lang-java=\" aws.s3.BucketReplicationConfig \"\u003e aws.s3.BucketReplicationConfig \u003c/span\u003eresource instead."
                },
                "requestPayer": {
                    "type": "string",
                    "description": "Specifies who should bear the cost of Amazon S3 data transfer.\nCan be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer.\nSee [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information.\nThe provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketRequestPaymentConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketRequestPaymentConfiguration`\" pulumi-lang-go=\"`s3.BucketRequestPaymentConfiguration`\" pulumi-lang-python=\"`s3.BucketRequestPaymentConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketRequestPaymentConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketRequestPaymentConfiguration`\"\u003e`aws.s3.BucketRequestPaymentConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "request_payer is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketRequestPaymentConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketRequestPaymentConfiguration \" pulumi-lang-go=\" s3.BucketRequestPaymentConfiguration \" pulumi-lang-python=\" s3.BucketRequestPaymentConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketRequestPaymentConfiguration \" pulumi-lang-java=\" aws.s3.BucketRequestPaymentConfiguration \"\u003e aws.s3.BucketRequestPaymentConfiguration \u003c/span\u003eresource instead."
                },
                "serverSideEncryptionConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketServerSideEncryptionConfiguration:BucketServerSideEncryptionConfiguration",
                    "description": "Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details.\nThe provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketServerSideEncryptionConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketServerSideEncryptionConfiguration`\" pulumi-lang-go=\"`s3.BucketServerSideEncryptionConfiguration`\" pulumi-lang-python=\"`s3.BucketServerSideEncryptionConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketServerSideEncryptionConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketServerSideEncryptionConfiguration`\"\u003e`aws.s3.BucketServerSideEncryptionConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "server_side_encryption_configuration is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketServerSideEncryptionConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketServerSideEncryptionConfiguration \" pulumi-lang-go=\" s3.BucketServerSideEncryptionConfiguration \" pulumi-lang-python=\" s3.BucketServerSideEncryptionConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketServerSideEncryptionConfiguration \" pulumi-lang-java=\" aws.s3.BucketServerSideEncryptionConfiguration \"\u003e aws.s3.BucketServerSideEncryptionConfiguration \u003c/span\u003eresource instead."
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the bucket. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n\nThe following arguments are deprecated, and will be removed in a future major version:\n"
                },
                "versioning": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketVersioning:BucketVersioning",
                    "description": "Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketVersioning`\" pulumi-lang-dotnet=\"`aws.s3.BucketVersioning`\" pulumi-lang-go=\"`s3.BucketVersioning`\" pulumi-lang-python=\"`s3.BucketVersioning`\" pulumi-lang-yaml=\"`aws.s3.BucketVersioning`\" pulumi-lang-java=\"`aws.s3.BucketVersioning`\"\u003e`aws.s3.BucketVersioning`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "versioning is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketVersioning \" pulumi-lang-dotnet=\" aws.s3.BucketVersioning \" pulumi-lang-go=\" s3.BucketVersioning \" pulumi-lang-python=\" s3.BucketVersioning \" pulumi-lang-yaml=\" aws.s3.BucketVersioning \" pulumi-lang-java=\" aws.s3.BucketVersioning \"\u003e aws.s3.BucketVersioning \u003c/span\u003eresource instead."
                },
                "website": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:s3/BucketWebsite:BucketWebsite",
                    "description": "Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided.\nUse the resource \u003cspan pulumi-lang-nodejs=\"`aws.s3.BucketWebsiteConfiguration`\" pulumi-lang-dotnet=\"`aws.s3.BucketWebsiteConfiguration`\" pulumi-lang-go=\"`s3.BucketWebsiteConfiguration`\" pulumi-lang-python=\"`s3.BucketWebsiteConfiguration`\" pulumi-lang-yaml=\"`aws.s3.BucketWebsiteConfiguration`\" pulumi-lang-java=\"`aws.s3.BucketWebsiteConfiguration`\"\u003e`aws.s3.BucketWebsiteConfiguration`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "website is deprecated. Use the\u003cspan pulumi-lang-nodejs=\" aws.s3.BucketWebsiteConfiguration \" pulumi-lang-dotnet=\" aws.s3.BucketWebsiteConfiguration \" pulumi-lang-go=\" s3.BucketWebsiteConfiguration \" pulumi-lang-python=\" s3.BucketWebsiteConfiguration \" pulumi-lang-yaml=\" aws.s3.BucketWebsiteConfiguration \" pulumi-lang-java=\" aws.s3.BucketWebsiteConfiguration \"\u003e aws.s3.BucketWebsiteConfiguration \u003c/span\u003eresource instead."
                }
            },
            "type": "object"
        },
        "awsx:awsx:DefaultBucket": {
            "description": "Bucket with default setup unless explicitly skipped.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:Bucket",
                    "plain": true,
                    "description": "Arguments to use instead of the default values during creation."
                },
                "existing": {
                    "$ref": "#/types/awsx:awsx:ExistingBucket",
                    "plain": true,
                    "description": "Identity of an existing bucket to use. Cannot be used in combination with `args`."
                },
                "skip": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Skip creation of the bucket."
                }
            },
            "type": "object"
        },
        "awsx:awsx:DefaultLogGroup": {
            "description": "Log group with default setup unless explicitly skipped.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:LogGroup",
                    "plain": true,
                    "description": "Arguments to use instead of the default values during creation."
                },
                "existing": {
                    "$ref": "#/types/awsx:awsx:ExistingLogGroup",
                    "plain": true,
                    "description": "Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`."
                },
                "skip": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Skip creation of the log group."
                }
            },
            "type": "object"
        },
        "awsx:awsx:DefaultRoleWithPolicy": {
            "description": "Role and policy attachments with default setup unless explicitly skipped or an existing role ARN provided.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:RoleWithPolicy",
                    "plain": true,
                    "description": "Args to use when creating the role and policies. Can't be specified if `roleArn` is used."
                },
                "roleArn": {
                    "type": "string",
                    "description": "ARN of existing role to use instead of creating a new role. Cannot be used in combination with `args` or `opts`."
                },
                "skip": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Skips creation of the role if set to `true`."
                }
            },
            "type": "object"
        },
        "awsx:awsx:DefaultSecurityGroup": {
            "description": "Security Group with default setup unless explicitly skipped or an existing security group id provided.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:SecurityGroup",
                    "plain": true,
                    "description": "Args to use when creating the security group. Can't be specified if `securityGroupId` is used."
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "Id of existing security group to use instead of creating a new security group. Cannot be used in combination with `args` or `opts`."
                },
                "skip": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Skips creation of the security group if set to `true`."
                }
            },
            "type": "object"
        },
        "awsx:awsx:ExistingBucket": {
            "description": "Reference to an existing bucket.",
            "properties": {
                "arn": {
                    "type": "string",
                    "description": "Arn of the bucket. Only one of [arn] or [name] can be specified."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the bucket. Only one of [arn] or [name] can be specified."
                }
            },
            "type": "object"
        },
        "awsx:awsx:ExistingLogGroup": {
            "description": "Reference to an existing log group.",
            "properties": {
                "arn": {
                    "type": "string",
                    "description": "Arn of the log group. Only one of [arn] or [name] can be specified."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the log group. Only one of [arn] or [name] can be specified."
                },
                "region": {
                    "type": "string",
                    "description": "Region of the log group. If not specified, the provider region will be used."
                }
            },
            "type": "object"
        },
        "awsx:awsx:LogGroup": {
            "description": "The set of arguments for constructing a LogGroup resource.",
            "properties": {
                "deletionProtectionEnabled": {
                    "type": "boolean",
                    "description": "Boolean to indicate whether deletion protection is enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Once set, switching to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e requires explicitly specifying \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e rather than removing this argument.\n"
                },
                "kmsKeyId": {
                    "type": "string",
                    "description": "The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group,\nAWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires\npermissions for the CMK whenever the encrypted data is requested.\n"
                },
                "logGroupClass": {
                    "type": "string",
                    "description": "Specified the log class of the log group. Possible values are: `STANDARD`, `INFREQUENT_ACCESS`, or `DELIVERY`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the log group. If omitted, this provider will assign a random, unique name.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "retentionInDays": {
                    "type": "integer",
                    "description": "Specifies the number of days\nyou want to retain log events in the specified log group.  Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0.\nIf you select 0, the events in the log group are always retained and never expire. If \u003cspan pulumi-lang-nodejs=\"`logGroupClass`\" pulumi-lang-dotnet=\"`LogGroupClass`\" pulumi-lang-go=\"`logGroupClass`\" pulumi-lang-python=\"`log_group_class`\" pulumi-lang-yaml=\"`logGroupClass`\" pulumi-lang-java=\"`logGroupClass`\"\u003e`log_group_class`\u003c/span\u003e is set to `DELIVERY`, this argument is ignored and \u003cspan pulumi-lang-nodejs=\"`retentionInDays`\" pulumi-lang-dotnet=\"`RetentionInDays`\" pulumi-lang-go=\"`retentionInDays`\" pulumi-lang-python=\"`retention_in_days`\" pulumi-lang-yaml=\"`retentionInDays`\" pulumi-lang-java=\"`retentionInDays`\"\u003e`retention_in_days`\u003c/span\u003e is forcibly set to 2.\n"
                },
                "skipDestroy": {
                    "type": "boolean",
                    "description": "Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. .If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                }
            },
            "type": "object"
        },
        "awsx:awsx:OptionalLogGroup": {
            "description": "Log group which is only created if enabled.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:LogGroup",
                    "plain": true,
                    "description": "Arguments to use instead of the default values during creation."
                },
                "enable": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Enable creation of the log group."
                },
                "existing": {
                    "$ref": "#/types/awsx:awsx:ExistingLogGroup",
                    "plain": true,
                    "description": "Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`."
                }
            },
            "type": "object"
        },
        "awsx:awsx:RequiredBucket": {
            "description": "Bucket with default setup.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:Bucket",
                    "plain": true,
                    "description": "Arguments to use instead of the default values during creation."
                },
                "existing": {
                    "$ref": "#/types/awsx:awsx:ExistingBucket",
                    "plain": true,
                    "description": "Identity of an existing bucket to use. Cannot be used in combination with `args`."
                }
            },
            "type": "object"
        },
        "awsx:awsx:RequiredLogGroup": {
            "description": "Log group with default setup.",
            "properties": {
                "args": {
                    "$ref": "#/types/awsx:awsx:LogGroup",
                    "plain": true,
                    "description": "Arguments to use instead of the default values during creation."
                },
                "existing": {
                    "$ref": "#/types/awsx:awsx:ExistingLogGroup",
                    "plain": true,
                    "description": "Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`."
                }
            },
            "type": "object"
        },
        "awsx:awsx:RoleWithPolicy": {
            "description": "The set of arguments for constructing a Role resource and Policy attachments.",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the role.\n"
                },
                "forceDetachPolicies": {
                    "type": "boolean",
                    "description": "Whether to force detaching any policies the role has before destroying it. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "inlinePolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:iam/RoleInlinePolicy:RoleInlinePolicy"
                    },
                    "description": "Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., \u003cspan pulumi-lang-nodejs=\"`inlinePolicy \" pulumi-lang-dotnet=\"`InlinePolicy \" pulumi-lang-go=\"`inlinePolicy \" pulumi-lang-python=\"`inline_policy \" pulumi-lang-yaml=\"`inlinePolicy \" pulumi-lang-java=\"`inlinePolicy \"\u003e`inline_policy \u003c/span\u003e{}`) will cause Pulumi to remove _all_ inline policies added out of band on \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e.\n"
                },
                "managedPolicyArns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., \u003cspan pulumi-lang-nodejs=\"`managedPolicyArns \" pulumi-lang-dotnet=\"`ManagedPolicyArns \" pulumi-lang-go=\"`managedPolicyArns \" pulumi-lang-python=\"`managed_policy_arns \" pulumi-lang-yaml=\"`managedPolicyArns \" pulumi-lang-java=\"`managedPolicyArns \"\u003e`managed_policy_arns \u003c/span\u003e= []`) will cause Pulumi to remove _all_ managed policy attachments.\n"
                },
                "maxSessionDuration": {
                    "type": "integer",
                    "description": "Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique friendly name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "path": {
                    "type": "string",
                    "description": "Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information.\n",
                    "willReplaceOnChanges": true
                },
                "permissionsBoundary": {
                    "type": "string",
                    "description": "ARN of the policy that is used to set the permissions boundary for the role.\n"
                },
                "policyArns": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "plain": true
                    },
                    "plain": true,
                    "description": "ARNs of the policies to attach to the created role."
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value mapping of tags for the IAM role. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                }
            },
            "type": "object"
        },
        "awsx:awsx:SecurityGroup": {
            "description": "The set of arguments for constructing a Security Group resource.",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Security group description. Defaults to `Managed by Pulumi`. Cannot be `\"\"`. **NOTE**: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use \u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e.\n",
                    "default": "Managed by Pulumi",
                    "willReplaceOnChanges": true
                },
                "egress": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ec2/SecurityGroupEgress:SecurityGroupEgress"
                    },
                    "description": "Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in attribute-as-blocks mode.\n"
                },
                "ingress": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ec2/SecurityGroupIngress:SecurityGroupIngress"
                    },
                    "description": "Configuration block for ingress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in attribute-as-blocks mode.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the security group. If omitted, the provider will assign a random, unique name.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "revokeRulesOnDelete": {
                    "type": "boolean",
                    "description": "Instruct the provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "VPC ID. Defaults to the region's default VPC.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "awsx:cloudtrail:LogGroup": {
            "description": "Defines the log group configuration for the CloudWatch Log Group to send logs to.",
            "properties": {
                "kmsKeyId": {
                    "type": "string",
                    "description": "The ARN of the KMS Key to use when encrypting log data."
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix"
                },
                "retentionInDays": {
                    "type": "integer",
                    "description": "Specifies the number of days you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653, and 0. If you select 0, the events in the log group are always retained and never expire."
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. If configured with provider defaultTags present, tags with matching keys will overwrite those defined at the provider-level."
                }
            },
            "type": "object"
        },
        "awsx:ec2:NatGatewayConfiguration": {
            "description": "Configuration for NAT Gateways.",
            "properties": {
                "elasticIpAllocationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "plain": true,
                    "description": "A list of EIP allocation IDs to assign to the NAT Gateways. Optional. If specified, the number of supplied values must match the chosen strategy (either one, or the number of availability zones)."
                },
                "strategy": {
                    "$ref": "#/types/awsx:ec2:NatGatewayStrategy",
                    "plain": true,
                    "description": "The strategy for deploying NAT Gateways."
                }
            },
            "type": "object",
            "required": [
                "strategy"
            ]
        },
        "awsx:ec2:NatGatewayStrategy": {
            "description": "A strategy for creating NAT Gateways for private subnets within a VPC.",
            "type": "string",
            "enum": [
                {
                    "description": "Do not create any NAT Gateways. Resources in private subnets will not be able to access the internet.",
                    "value": "None"
                },
                {
                    "description": "Create a single NAT Gateway for the entire VPC. This configuration is not recommended for production infrastructure as it creates a single point of failure.",
                    "value": "Single"
                },
                {
                    "description": "Create a NAT Gateway in each availability zone. This is the recommended configuration for production infrastructure.",
                    "value": "OnePerAz"
                }
            ]
        },
        "awsx:ec2:ResolvedSubnetSpec": {
            "description": "Configuration for a VPC subnet spec.",
            "properties": {
                "cidrBlocks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of CIDR blocks to assign to the subnet spec for each AZ. If specified, the count must match the number of AZs being used for the VPC, and must also be specified for all other subnet specs."
                },
                "cidrMask": {
                    "type": "integer",
                    "description": "The netmask for the subnet's CIDR block. This is optional, the default value is inferred from the `cidrMask`, `cidrBlocks` or based on an even distribution of available space from the VPC's CIDR block after being divided evenly by availability zone."
                },
                "name": {
                    "type": "string",
                    "description": "The subnet's name. Will be templated upon creation."
                },
                "size": {
                    "type": "integer",
                    "description": "Optional size of the subnet's CIDR block - the number of hosts. This value must be a power of 2 (e.g. 256, 512, 1024, etc.). This is optional, the default value is inferred from the `cidrMask`, `cidrBlocks` or based on an even distribution of available space from the VPC's CIDR block after being divided evenly by availability zone."
                },
                "type": {
                    "$ref": "#/types/awsx:ec2:SubnetType",
                    "description": "The type of subnet."
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "awsx:ec2:SubnetAllocationStrategy": {
            "description": "Strategy for calculating subnet ranges from the subnet specifications.",
            "type": "string",
            "enum": [
                {
                    "description": "Group private subnets first, followed by public subnets, followed by isolated subnets.",
                    "value": "Legacy"
                },
                {
                    "description": "Order remains as specified by specs, allowing gaps where required.",
                    "value": "Auto"
                },
                {
                    "description": "Whole range of VPC must be accounted for, using \"Unused\" spec types for deliberate gaps.",
                    "value": "Exact"
                }
            ]
        },
        "awsx:ec2:SubnetSpec": {
            "description": "Configuration for a VPC subnet.",
            "properties": {
                "assignIpv6AddressOnCreation": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Indicates whether a network interface created in this subnet receives an IPv6 address."
                },
                "cidrBlocks": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "plain": true
                    },
                    "plain": true,
                    "description": "An optional list of CIDR blocks to assign to the subnet spec for each AZ. If specified, the count must match the number of AZs being used for the VPC, and must also be specified for all other subnet specs."
                },
                "cidrMask": {
                    "type": "integer",
                    "plain": true,
                    "description": "The netmask for the subnet's CIDR block. This is optional, the default value is inferred from the `cidrMask`, `cidrBlocks` or based on an even distribution of available space from the VPC's CIDR block after being divided evenly by availability zone."
                },
                "name": {
                    "type": "string",
                    "plain": true,
                    "description": "The subnet's name. Will be templated upon creation."
                },
                "size": {
                    "type": "integer",
                    "plain": true,
                    "description": "Optional size of the subnet's CIDR block - the number of hosts. This value must be a power of 2 (e.g. 256, 512, 1024, etc.). This is optional, the default value is inferred from the `cidrMask`, `cidrBlocks` or based on an even distribution of available space from the VPC's CIDR block after being divided evenly by availability zone."
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource."
                },
                "type": {
                    "$ref": "#/types/awsx:ec2:SubnetType",
                    "plain": true,
                    "description": "The type of subnet."
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "awsx:ec2:SubnetType": {
            "description": "A type of subnet within a VPC.",
            "type": "string",
            "enum": [
                {
                    "description": "A subnet whose hosts can directly communicate with the internet.",
                    "value": "Public"
                },
                {
                    "description": "A subnet whose hosts can not directly communicate with the internet, but can initiate outbound network traffic via a NAT Gateway.",
                    "value": "Private"
                },
                {
                    "description": "A subnet whose hosts have no connectivity with the internet.",
                    "value": "Isolated"
                },
                {
                    "description": "A subnet range which is reserved, but no subnet will be created.",
                    "value": "Unused"
                }
            ]
        },
        "awsx:ec2:VpcEndpointSpec": {
            "description": "Provides a VPC Endpoint resource.\n\n\u003e **NOTE on VPC Endpoints and VPC Endpoint Associations:** The provider provides both standalone VPC Endpoint Associations for\nRoute Tables - (an association between a VPC endpoint and a single \u003cspan pulumi-lang-nodejs=\"`routeTableId`\" pulumi-lang-dotnet=\"`RouteTableId`\" pulumi-lang-go=\"`routeTableId`\" pulumi-lang-python=\"`route_table_id`\" pulumi-lang-yaml=\"`routeTableId`\" pulumi-lang-java=\"`routeTableId`\"\u003e`route_table_id`\u003c/span\u003e),\nSecurity Groups - (an association between a VPC endpoint and a single \u003cspan pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\"\u003e`security_group_id`\u003c/span\u003e),\nand Subnets - (an association between a VPC endpoint and a single \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e) and\na VPC Endpoint resource with \u003cspan pulumi-lang-nodejs=\"`routeTableIds`\" pulumi-lang-dotnet=\"`RouteTableIds`\" pulumi-lang-go=\"`routeTableIds`\" pulumi-lang-python=\"`route_table_ids`\" pulumi-lang-yaml=\"`routeTableIds`\" pulumi-lang-java=\"`routeTableIds`\"\u003e`route_table_ids`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`subnetIds`\" pulumi-lang-dotnet=\"`SubnetIds`\" pulumi-lang-go=\"`subnetIds`\" pulumi-lang-python=\"`subnet_ids`\" pulumi-lang-yaml=\"`subnetIds`\" pulumi-lang-java=\"`subnetIds`\"\u003e`subnet_ids`\u003c/span\u003e attributes.\nDo not use the same resource ID in both a VPC Endpoint resource and a VPC Endpoint Association resource.\nDoing so will cause a conflict of associations and will overwrite the association.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst s3 = new aws.ec2.VpcEndpoint(\"s3\", {\n    vpcId: main.id,\n    serviceName: \"com.amazonaws.us-west-2.s3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ns3 = aws.ec2.VpcEndpoint(\"s3\",\n    vpc_id=main[\"id\"],\n    service_name=\"com.amazonaws.us-west-2.s3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var s3 = new Aws.Ec2.VpcEndpoint(\"s3\", new()\n    {\n        VpcId = main.Id,\n        ServiceName = \"com.amazonaws.us-west-2.s3\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"s3\", \u0026ec2.VpcEndpointArgs{\n\t\t\tVpcId:       pulumi.Any(main.Id),\n\t\t\tServiceName: pulumi.String(\"com.amazonaws.us-west-2.s3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var s3 = new VpcEndpoint(\"s3\", VpcEndpointArgs.builder()\n            .vpcId(main.id())\n            .serviceName(\"com.amazonaws.us-west-2.s3\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  s3:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      vpcId: ${main.id}\n      serviceName: com.amazonaws.us-west-2.s3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic w/ Tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst s3 = new aws.ec2.VpcEndpoint(\"s3\", {\n    vpcId: main.id,\n    serviceName: \"com.amazonaws.us-west-2.s3\",\n    tags: {\n        Environment: \"test\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ns3 = aws.ec2.VpcEndpoint(\"s3\",\n    vpc_id=main[\"id\"],\n    service_name=\"com.amazonaws.us-west-2.s3\",\n    tags={\n        \"Environment\": \"test\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var s3 = new Aws.Ec2.VpcEndpoint(\"s3\", new()\n    {\n        VpcId = main.Id,\n        ServiceName = \"com.amazonaws.us-west-2.s3\",\n        Tags = \n        {\n            { \"Environment\", \"test\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"s3\", \u0026ec2.VpcEndpointArgs{\n\t\t\tVpcId:       pulumi.Any(main.Id),\n\t\t\tServiceName: pulumi.String(\"com.amazonaws.us-west-2.s3\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var s3 = new VpcEndpoint(\"s3\", VpcEndpointArgs.builder()\n            .vpcId(main.id())\n            .serviceName(\"com.amazonaws.us-west-2.s3\")\n            .tags(Map.of(\"Environment\", \"test\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  s3:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      vpcId: ${main.id}\n      serviceName: com.amazonaws.us-west-2.s3\n      tags:\n        Environment: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cross-region enabled AWS services\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst s3 = new aws.ec2.VpcEndpoint(\"s3\", {\n    region: \"us-west-2\",\n    vpcId: main.id,\n    serviceName: \"com.amazonaws.us-east-2.s3\",\n    serviceRegion: \"us-east-2\",\n    tags: {\n        Environment: \"test\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ns3 = aws.ec2.VpcEndpoint(\"s3\",\n    region=\"us-west-2\",\n    vpc_id=main[\"id\"],\n    service_name=\"com.amazonaws.us-east-2.s3\",\n    service_region=\"us-east-2\",\n    tags={\n        \"Environment\": \"test\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var s3 = new Aws.Ec2.VpcEndpoint(\"s3\", new()\n    {\n        Region = \"us-west-2\",\n        VpcId = main.Id,\n        ServiceName = \"com.amazonaws.us-east-2.s3\",\n        ServiceRegion = \"us-east-2\",\n        Tags = \n        {\n            { \"Environment\", \"test\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"s3\", \u0026ec2.VpcEndpointArgs{\n\t\t\tRegion:        pulumi.String(\"us-west-2\"),\n\t\t\tVpcId:         pulumi.Any(main.Id),\n\t\t\tServiceName:   pulumi.String(\"com.amazonaws.us-east-2.s3\"),\n\t\t\tServiceRegion: pulumi.String(\"us-east-2\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var s3 = new VpcEndpoint(\"s3\", VpcEndpointArgs.builder()\n            .region(\"us-west-2\")\n            .vpcId(main.id())\n            .serviceName(\"com.amazonaws.us-east-2.s3\")\n            .serviceRegion(\"us-east-2\")\n            .tags(Map.of(\"Environment\", \"test\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  s3:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      region: us-west-2\n      vpcId: ${main.id}\n      serviceName: com.amazonaws.us-east-2.s3\n      serviceRegion: us-east-2\n      tags:\n        Environment: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Interface Endpoint Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ec2 = new aws.ec2.VpcEndpoint(\"ec2\", {\n    vpcId: main.id,\n    serviceName: \"com.amazonaws.us-west-2.ec2\",\n    vpcEndpointType: \"Interface\",\n    securityGroupIds: [sg1.id],\n    privateDnsEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nec2 = aws.ec2.VpcEndpoint(\"ec2\",\n    vpc_id=main[\"id\"],\n    service_name=\"com.amazonaws.us-west-2.ec2\",\n    vpc_endpoint_type=\"Interface\",\n    security_group_ids=[sg1[\"id\"]],\n    private_dns_enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ec2 = new Aws.Ec2.VpcEndpoint(\"ec2\", new()\n    {\n        VpcId = main.Id,\n        ServiceName = \"com.amazonaws.us-west-2.ec2\",\n        VpcEndpointType = \"Interface\",\n        SecurityGroupIds = new[]\n        {\n            sg1.Id,\n        },\n        PrivateDnsEnabled = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"ec2\", \u0026ec2.VpcEndpointArgs{\n\t\t\tVpcId:           pulumi.Any(main.Id),\n\t\t\tServiceName:     pulumi.String(\"com.amazonaws.us-west-2.ec2\"),\n\t\t\tVpcEndpointType: pulumi.String(\"Interface\"),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tsg1.Id,\n\t\t\t},\n\t\t\tPrivateDnsEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ec2 = new VpcEndpoint(\"ec2\", VpcEndpointArgs.builder()\n            .vpcId(main.id())\n            .serviceName(\"com.amazonaws.us-west-2.ec2\")\n            .vpcEndpointType(\"Interface\")\n            .securityGroupIds(sg1.id())\n            .privateDnsEnabled(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ec2:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      vpcId: ${main.id}\n      serviceName: com.amazonaws.us-west-2.ec2\n      vpcEndpointType: Interface\n      securityGroupIds:\n        - ${sg1.id}\n      privateDnsEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Interface Endpoint Type with User-Defined IP Address\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ec2 = new aws.ec2.VpcEndpoint(\"ec2\", {\n    vpcId: example.id,\n    serviceName: \"com.amazonaws.us-west-2.ec2\",\n    vpcEndpointType: \"Interface\",\n    subnetConfigurations: [\n        {\n            ipv4: \"10.0.1.10\",\n            subnetId: example1.id,\n        },\n        {\n            ipv4: \"10.0.2.10\",\n            subnetId: example2.id,\n        },\n    ],\n    subnetIds: [\n        example1.id,\n        example2.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nec2 = aws.ec2.VpcEndpoint(\"ec2\",\n    vpc_id=example[\"id\"],\n    service_name=\"com.amazonaws.us-west-2.ec2\",\n    vpc_endpoint_type=\"Interface\",\n    subnet_configurations=[\n        {\n            \"ipv4\": \"10.0.1.10\",\n            \"subnet_id\": example1[\"id\"],\n        },\n        {\n            \"ipv4\": \"10.0.2.10\",\n            \"subnet_id\": example2[\"id\"],\n        },\n    ],\n    subnet_ids=[\n        example1[\"id\"],\n        example2[\"id\"],\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ec2 = new Aws.Ec2.VpcEndpoint(\"ec2\", new()\n    {\n        VpcId = example.Id,\n        ServiceName = \"com.amazonaws.us-west-2.ec2\",\n        VpcEndpointType = \"Interface\",\n        SubnetConfigurations = new[]\n        {\n            new Aws.Ec2.Inputs.VpcEndpointSubnetConfigurationArgs\n            {\n                Ipv4 = \"10.0.1.10\",\n                SubnetId = example1.Id,\n            },\n            new Aws.Ec2.Inputs.VpcEndpointSubnetConfigurationArgs\n            {\n                Ipv4 = \"10.0.2.10\",\n                SubnetId = example2.Id,\n            },\n        },\n        SubnetIds = new[]\n        {\n            example1.Id,\n            example2.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"ec2\", \u0026ec2.VpcEndpointArgs{\n\t\t\tVpcId:           pulumi.Any(example.Id),\n\t\t\tServiceName:     pulumi.String(\"com.amazonaws.us-west-2.ec2\"),\n\t\t\tVpcEndpointType: pulumi.String(\"Interface\"),\n\t\t\tSubnetConfigurations: ec2.VpcEndpointSubnetConfigurationArray{\n\t\t\t\t\u0026ec2.VpcEndpointSubnetConfigurationArgs{\n\t\t\t\t\tIpv4:     pulumi.String(\"10.0.1.10\"),\n\t\t\t\t\tSubnetId: pulumi.Any(example1.Id),\n\t\t\t\t},\n\t\t\t\t\u0026ec2.VpcEndpointSubnetConfigurationArgs{\n\t\t\t\t\tIpv4:     pulumi.String(\"10.0.2.10\"),\n\t\t\t\t\tSubnetId: pulumi.Any(example2.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\texample1.Id,\n\t\t\t\texample2.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport com.pulumi.aws.ec2.inputs.VpcEndpointSubnetConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ec2 = new VpcEndpoint(\"ec2\", VpcEndpointArgs.builder()\n            .vpcId(example.id())\n            .serviceName(\"com.amazonaws.us-west-2.ec2\")\n            .vpcEndpointType(\"Interface\")\n            .subnetConfigurations(            \n                VpcEndpointSubnetConfigurationArgs.builder()\n                    .ipv4(\"10.0.1.10\")\n                    .subnetId(example1.id())\n                    .build(),\n                VpcEndpointSubnetConfigurationArgs.builder()\n                    .ipv4(\"10.0.2.10\")\n                    .subnetId(example2.id())\n                    .build())\n            .subnetIds(            \n                example1.id(),\n                example2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ec2:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      vpcId: ${example.id}\n      serviceName: com.amazonaws.us-west-2.ec2\n      vpcEndpointType: Interface\n      subnetConfigurations:\n        - ipv4: 10.0.1.10\n          subnetId: ${example1.id}\n        - ipv4: 10.0.2.10\n          subnetId: ${example2.id}\n      subnetIds:\n        - ${example1.id}\n        - ${example2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Gateway Load Balancer Endpoint Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst example = new aws.ec2.VpcEndpointService(\"example\", {\n    acceptanceRequired: false,\n    allowedPrincipals: [current.then(current =\u003e current.arn)],\n    gatewayLoadBalancerArns: [exampleAwsLb.arn],\n});\nconst exampleVpcEndpoint = new aws.ec2.VpcEndpoint(\"example\", {\n    serviceName: example.serviceName,\n    subnetIds: [exampleAwsSubnet.id],\n    vpcEndpointType: example.serviceType,\n    vpcId: exampleAwsVpc.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\nexample = aws.ec2.VpcEndpointService(\"example\",\n    acceptance_required=False,\n    allowed_principals=[current.arn],\n    gateway_load_balancer_arns=[example_aws_lb[\"arn\"]])\nexample_vpc_endpoint = aws.ec2.VpcEndpoint(\"example\",\n    service_name=example.service_name,\n    subnet_ids=[example_aws_subnet[\"id\"]],\n    vpc_endpoint_type=example.service_type,\n    vpc_id=example_aws_vpc[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var current = Aws.GetCallerIdentity.Invoke();\n\n    var example = new Aws.Ec2.VpcEndpointService(\"example\", new()\n    {\n        AcceptanceRequired = false,\n        AllowedPrincipals = new[]\n        {\n            current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.Arn),\n        },\n        GatewayLoadBalancerArns = new[]\n        {\n            exampleAwsLb.Arn,\n        },\n    });\n\n    var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint(\"example\", new()\n    {\n        ServiceName = example.ServiceName,\n        SubnetIds = new[]\n        {\n            exampleAwsSubnet.Id,\n        },\n        VpcEndpointType = example.ServiceType,\n        VpcId = exampleAwsVpc.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := ec2.NewVpcEndpointService(ctx, \"example\", \u0026ec2.VpcEndpointServiceArgs{\n\t\t\tAcceptanceRequired: pulumi.Bool(false),\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\tpulumi.String(current.Arn),\n\t\t\t},\n\t\t\tGatewayLoadBalancerArns: pulumi.StringArray{\n\t\t\t\texampleAwsLb.Arn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ec2.NewVpcEndpoint(ctx, \"example\", \u0026ec2.VpcEndpointArgs{\n\t\t\tServiceName: example.ServiceName,\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\texampleAwsSubnet.Id,\n\t\t\t},\n\t\t\tVpcEndpointType: example.ServiceType,\n\t\t\tVpcId:           pulumi.Any(exampleAwsVpc.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.ec2.VpcEndpointService;\nimport com.pulumi.aws.ec2.VpcEndpointServiceArgs;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder()\n            .build());\n\n        var example = new VpcEndpointService(\"example\", VpcEndpointServiceArgs.builder()\n            .acceptanceRequired(false)\n            .allowedPrincipals(current.arn())\n            .gatewayLoadBalancerArns(exampleAwsLb.arn())\n            .build());\n\n        var exampleVpcEndpoint = new VpcEndpoint(\"exampleVpcEndpoint\", VpcEndpointArgs.builder()\n            .serviceName(example.serviceName())\n            .subnetIds(exampleAwsSubnet.id())\n            .vpcEndpointType(example.serviceType())\n            .vpcId(exampleAwsVpc.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: aws:ec2:VpcEndpointService\n    properties:\n      acceptanceRequired: false\n      allowedPrincipals:\n        - ${current.arn}\n      gatewayLoadBalancerArns:\n        - ${exampleAwsLb.arn}\n  exampleVpcEndpoint:\n    type: aws:ec2:VpcEndpoint\n    name: example\n    properties:\n      serviceName: ${example.serviceName}\n      subnetIds:\n        - ${exampleAwsSubnet.id}\n      vpcEndpointType: ${example.serviceType}\n      vpcId: ${exampleAwsVpc.id}\nvariables:\n  current:\n    fn::invoke:\n      function: aws:getCallerIdentity\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Lattice Resource Configuration Endpoint Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.VpcEndpoint(\"example\", {\n    resourceConfigurationArn: exampleAwsVpclatticeResourceConfiguration.arn,\n    subnetIds: [exampleAwsSubnet.id],\n    vpcEndpointType: \"Resource\",\n    vpcId: exampleAwsVpc.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.VpcEndpoint(\"example\",\n    resource_configuration_arn=example_aws_vpclattice_resource_configuration[\"arn\"],\n    subnet_ids=[example_aws_subnet[\"id\"]],\n    vpc_endpoint_type=\"Resource\",\n    vpc_id=example_aws_vpc[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Aws.Ec2.VpcEndpoint(\"example\", new()\n    {\n        ResourceConfigurationArn = exampleAwsVpclatticeResourceConfiguration.Arn,\n        SubnetIds = new[]\n        {\n            exampleAwsSubnet.Id,\n        },\n        VpcEndpointType = \"Resource\",\n        VpcId = exampleAwsVpc.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"example\", \u0026ec2.VpcEndpointArgs{\n\t\t\tResourceConfigurationArn: pulumi.Any(exampleAwsVpclatticeResourceConfiguration.Arn),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\texampleAwsSubnet.Id,\n\t\t\t},\n\t\t\tVpcEndpointType: pulumi.String(\"Resource\"),\n\t\t\tVpcId:           pulumi.Any(exampleAwsVpc.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new VpcEndpoint(\"example\", VpcEndpointArgs.builder()\n            .resourceConfigurationArn(exampleAwsVpclatticeResourceConfiguration.arn())\n            .subnetIds(exampleAwsSubnet.id())\n            .vpcEndpointType(\"Resource\")\n            .vpcId(exampleAwsVpc.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      resourceConfigurationArn: ${exampleAwsVpclatticeResourceConfiguration.arn}\n      subnetIds:\n        - ${exampleAwsSubnet.id}\n      vpcEndpointType: Resource\n      vpcId: ${exampleAwsVpc.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Lattice Service Network Endpoint Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.ec2.VpcEndpoint(\"example\", {\n    serviceNetworkArn: exampleAwsVpclatticeServiceNetwork.arn,\n    subnetIds: [exampleAwsSubnet.id],\n    vpcEndpointType: \"ServiceNetwork\",\n    vpcId: exampleAwsVpc.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ec2.VpcEndpoint(\"example\",\n    service_network_arn=example_aws_vpclattice_service_network[\"arn\"],\n    subnet_ids=[example_aws_subnet[\"id\"]],\n    vpc_endpoint_type=\"ServiceNetwork\",\n    vpc_id=example_aws_vpc[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Aws.Ec2.VpcEndpoint(\"example\", new()\n    {\n        ServiceNetworkArn = exampleAwsVpclatticeServiceNetwork.Arn,\n        SubnetIds = new[]\n        {\n            exampleAwsSubnet.Id,\n        },\n        VpcEndpointType = \"ServiceNetwork\",\n        VpcId = exampleAwsVpc.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ec2.NewVpcEndpoint(ctx, \"example\", \u0026ec2.VpcEndpointArgs{\n\t\t\tServiceNetworkArn: pulumi.Any(exampleAwsVpclatticeServiceNetwork.Arn),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\texampleAwsSubnet.Id,\n\t\t\t},\n\t\t\tVpcEndpointType: pulumi.String(\"ServiceNetwork\"),\n\t\t\tVpcId:           pulumi.Any(exampleAwsVpc.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new VpcEndpoint(\"example\", VpcEndpointArgs.builder()\n            .serviceNetworkArn(exampleAwsVpclatticeServiceNetwork.arn())\n            .subnetIds(exampleAwsSubnet.id())\n            .vpcEndpointType(\"ServiceNetwork\")\n            .vpcId(exampleAwsVpc.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: aws:ec2:VpcEndpoint\n    properties:\n      serviceNetworkArn: ${exampleAwsVpclatticeServiceNetwork.arn}\n      subnetIds:\n        - ${exampleAwsSubnet.id}\n      vpcEndpointType: ServiceNetwork\n      vpcId: ${exampleAwsVpc.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Non-AWS Service\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ptfeService = new aws.ec2.VpcEndpoint(\"ptfe_service\", {\n    vpcId: vpcId,\n    serviceName: ptfeServiceConfig,\n    vpcEndpointType: \"Interface\",\n    securityGroupIds: [ptfeServiceAwsSecurityGroup.id],\n    subnetIds: [subnetIds],\n    privateDnsEnabled: false,\n});\nconst internal = aws.route53.getZone({\n    name: \"vpc.internal.\",\n    privateZone: true,\n    vpcId: vpcId,\n});\nconst ptfeServiceRecord = new aws.route53.Record(\"ptfe_service\", {\n    zoneId: internal.then(internal =\u003e internal.zoneId),\n    name: internal.then(internal =\u003e `ptfe.${internal.name}`),\n    type: aws.route53.RecordType.CNAME,\n    ttl: 300,\n    records: [ptfeService.dnsEntries[0].dns_name],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nptfe_service = aws.ec2.VpcEndpoint(\"ptfe_service\",\n    vpc_id=vpc_id,\n    service_name=ptfe_service_config,\n    vpc_endpoint_type=\"Interface\",\n    security_group_ids=[ptfe_service_aws_security_group[\"id\"]],\n    subnet_ids=[subnet_ids],\n    private_dns_enabled=False)\ninternal = aws.route53.get_zone(name=\"vpc.internal.\",\n    private_zone=True,\n    vpc_id=vpc_id)\nptfe_service_record = aws.route53.Record(\"ptfe_service\",\n    zone_id=internal.zone_id,\n    name=f\"ptfe.{internal.name}\",\n    type=aws.route53.RecordType.CNAME,\n    ttl=300,\n    records=[ptfe_service.dns_entries[0].dns_name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ptfeService = new Aws.Ec2.VpcEndpoint(\"ptfe_service\", new()\n    {\n        VpcId = vpcId,\n        ServiceName = ptfeServiceConfig,\n        VpcEndpointType = \"Interface\",\n        SecurityGroupIds = new[]\n        {\n            ptfeServiceAwsSecurityGroup.Id,\n        },\n        SubnetIds = new[]\n        {\n            subnetIds,\n        },\n        PrivateDnsEnabled = false,\n    });\n\n    var @internal = Aws.Route53.GetZone.Invoke(new()\n    {\n        Name = \"vpc.internal.\",\n        PrivateZone = true,\n        VpcId = vpcId,\n    });\n\n    var ptfeServiceRecord = new Aws.Route53.Record(\"ptfe_service\", new()\n    {\n        ZoneId = @internal.Apply(@internal =\u003e @internal.Apply(getZoneResult =\u003e getZoneResult.ZoneId)),\n        Name = @internal.Apply(@internal =\u003e $\"ptfe.{@internal.Apply(getZoneResult =\u003e getZoneResult.Name)}\"),\n        Type = Aws.Route53.RecordType.CNAME,\n        Ttl = 300,\n        Records = new[]\n        {\n            ptfeService.DnsEntries.Apply(dnsEntries =\u003e dnsEntries[0].Dns_name),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nptfeService, err := ec2.NewVpcEndpoint(ctx, \"ptfe_service\", \u0026ec2.VpcEndpointArgs{\nVpcId: pulumi.Any(vpcId),\nServiceName: pulumi.Any(ptfeServiceConfig),\nVpcEndpointType: pulumi.String(\"Interface\"),\nSecurityGroupIds: pulumi.StringArray{\nptfeServiceAwsSecurityGroup.Id,\n},\nSubnetIds: pulumi.StringArray{\nsubnetIds,\n},\nPrivateDnsEnabled: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ninternal, err := route53.LookupZone(ctx, \u0026route53.LookupZoneArgs{\nName: pulumi.StringRef(\"vpc.internal.\"),\nPrivateZone: pulumi.BoolRef(true),\nVpcId: pulumi.StringRef(vpcId),\n}, nil);\nif err != nil {\nreturn err\n}\n_, err = route53.NewRecord(ctx, \"ptfe_service\", \u0026route53.RecordArgs{\nZoneId: pulumi.String(internal.ZoneId),\nName: pulumi.Sprintf(\"ptfe.%v\", internal.Name),\nType: pulumi.String(route53.RecordTypeCNAME),\nTtl: pulumi.Int(300),\nRecords: pulumi.StringArray{\npulumi.String(ptfeService.DnsEntries.ApplyT(func(dnsEntries []ec2.VpcEndpointDnsEntry) (interface{}, error) {\nreturn dnsEntries[0].Dns_name, nil\n}).(pulumi.Interface{}Output)),\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport com.pulumi.aws.route53.Route53Functions;\nimport com.pulumi.aws.route53.inputs.GetZoneArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ptfeService = new VpcEndpoint(\"ptfeService\", VpcEndpointArgs.builder()\n            .vpcId(vpcId)\n            .serviceName(ptfeServiceConfig)\n            .vpcEndpointType(\"Interface\")\n            .securityGroupIds(ptfeServiceAwsSecurityGroup.id())\n            .subnetIds(subnetIds)\n            .privateDnsEnabled(false)\n            .build());\n\n        final var internal = Route53Functions.getZone(GetZoneArgs.builder()\n            .name(\"vpc.internal.\")\n            .privateZone(true)\n            .vpcId(vpcId)\n            .build());\n\n        var ptfeServiceRecord = new Record(\"ptfeServiceRecord\", RecordArgs.builder()\n            .zoneId(internal.zoneId())\n            .name(String.format(\"ptfe.%s\", internal.name()))\n            .type(\"CNAME\")\n            .ttl(300)\n            .records(ptfeService.dnsEntries().applyValue(_dnsEntries -\u003e _dnsEntries[0].dns_name()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ptfeService:\n    type: aws:ec2:VpcEndpoint\n    name: ptfe_service\n    properties:\n      vpcId: ${vpcId}\n      serviceName: ${ptfeServiceConfig}\n      vpcEndpointType: Interface\n      securityGroupIds:\n        - ${ptfeServiceAwsSecurityGroup.id}\n      subnetIds:\n        - ${subnetIds}\n      privateDnsEnabled: false\n  ptfeServiceRecord:\n    type: aws:route53:Record\n    name: ptfe_service\n    properties:\n      zoneId: ${internal.zoneId}\n      name: ptfe.${internal.name}\n      type: CNAME\n      ttl: '300'\n      records:\n        - ${ptfeService.dnsEntries[0].dns_name}\nvariables:\n  internal:\n    fn::invoke:\n      function: aws:route53:getZone\n      arguments:\n        name: vpc.internal.\n        privateZone: true\n        vpcId: ${vpcId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **NOTE The \u003cspan pulumi-lang-nodejs=\"`dnsEntry`\" pulumi-lang-dotnet=\"`DnsEntry`\" pulumi-lang-go=\"`dnsEntry`\" pulumi-lang-python=\"`dns_entry`\" pulumi-lang-yaml=\"`dnsEntry`\" pulumi-lang-java=\"`dnsEntry`\"\u003e`dns_entry`\u003c/span\u003e output is a list of maps:** This provider interpolation support for lists of maps requires the \u003cspan pulumi-lang-nodejs=\"`lookup`\" pulumi-lang-dotnet=\"`Lookup`\" pulumi-lang-go=\"`lookup`\" pulumi-lang-python=\"`lookup`\" pulumi-lang-yaml=\"`lookup`\" pulumi-lang-java=\"`lookup`\"\u003e`lookup`\u003c/span\u003e and `[]` until full support of lists of maps is available\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n* `id` - (String) ID of the VPC endpoint.\n\n#### Optional\n\n* `account_id` (String) AWS Account where this resource is managed.\n\n* `region` (String) Region where this resource is managed.\n\nUsing `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example:\n\n% pulumi import aws_vpc_endpoint.example vpce-3ecf2a57\n\n",
            "properties": {
                "autoAccept": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account)."
                },
                "dnsOptions": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ec2/VpcEndpointDnsOptions:VpcEndpointDnsOptions",
                    "description": "The DNS options for the endpoint. See\u003cspan pulumi-lang-nodejs=\" dnsOptions \" pulumi-lang-dotnet=\" DnsOptions \" pulumi-lang-go=\" dnsOptions \" pulumi-lang-python=\" dns_options \" pulumi-lang-yaml=\" dnsOptions \" pulumi-lang-java=\" dnsOptions \"\u003e dns_options \u003c/span\u003ebelow.\n"
                },
                "ipAddressType": {
                    "type": "string",
                    "description": "The IP address type for the endpoint. Valid values are \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dualstack`\" pulumi-lang-dotnet=\"`Dualstack`\" pulumi-lang-go=\"`dualstack`\" pulumi-lang-python=\"`dualstack`\" pulumi-lang-yaml=\"`dualstack`\" pulumi-lang-java=\"`dualstack`\"\u003e`dualstack`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "A policy to attach to the endpoint that controls access to the service. This is a JSON formatted string. Defaults to full access. All `Gateway` and some `Interface` endpoints support policies - see the [relevant AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) for more details.\n"
                },
                "privateDnsEnabled": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Whether or not to associate a private hosted zone with the specified VPC. Applicable for endpoints of type Interface. Defaults to `false`."
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "resourceConfigurationArn": {
                    "type": "string",
                    "description": "The ARN of a Resource Configuration to connect this VPC Endpoint to. Exactly one of \u003cspan pulumi-lang-nodejs=\"`resourceConfigurationArn`\" pulumi-lang-dotnet=\"`ResourceConfigurationArn`\" pulumi-lang-go=\"`resourceConfigurationArn`\" pulumi-lang-python=\"`resource_configuration_arn`\" pulumi-lang-yaml=\"`resourceConfigurationArn`\" pulumi-lang-java=\"`resourceConfigurationArn`\"\u003e`resource_configuration_arn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`serviceName`\" pulumi-lang-dotnet=\"`ServiceName`\" pulumi-lang-go=\"`serviceName`\" pulumi-lang-python=\"`service_name`\" pulumi-lang-yaml=\"`serviceName`\" pulumi-lang-java=\"`serviceName`\"\u003e`service_name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`serviceNetworkArn`\" pulumi-lang-dotnet=\"`ServiceNetworkArn`\" pulumi-lang-go=\"`serviceNetworkArn`\" pulumi-lang-python=\"`service_network_arn`\" pulumi-lang-yaml=\"`serviceNetworkArn`\" pulumi-lang-java=\"`serviceNetworkArn`\"\u003e`service_network_arn`\u003c/span\u003e is required.\n",
                    "willReplaceOnChanges": true
                },
                "routeTableIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "One or more route table IDs. Applicable for endpoints of type `Gateway`.\n"
                },
                "securityGroupIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID of one or more security groups to associate with the network interface. Applicable for endpoints of type `Interface`.\nIf no security groups are specified, the VPC's [default security group](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup) is associated with the endpoint.\n"
                },
                "serviceName": {
                    "type": "string",
                    "plain": true,
                    "description": "The service name. For AWS services the service name is usually in the form `com.amazonaws.\u003cregion\u003e.\u003cservice\u003e` (the SageMaker Notebook service is an exception to this rule, the service name is in the form `aws.sagemaker.\u003cregion\u003e.notebook`)."
                },
                "serviceNetworkArn": {
                    "type": "string",
                    "description": "The ARN of a Service Network to connect this VPC Endpoint to. Exactly one of \u003cspan pulumi-lang-nodejs=\"`resourceConfigurationArn`\" pulumi-lang-dotnet=\"`ResourceConfigurationArn`\" pulumi-lang-go=\"`resourceConfigurationArn`\" pulumi-lang-python=\"`resource_configuration_arn`\" pulumi-lang-yaml=\"`resourceConfigurationArn`\" pulumi-lang-java=\"`resourceConfigurationArn`\"\u003e`resource_configuration_arn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`serviceName`\" pulumi-lang-dotnet=\"`ServiceName`\" pulumi-lang-go=\"`serviceName`\" pulumi-lang-python=\"`service_name`\" pulumi-lang-yaml=\"`serviceName`\" pulumi-lang-java=\"`serviceName`\"\u003e`service_name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`serviceNetworkArn`\" pulumi-lang-dotnet=\"`ServiceNetworkArn`\" pulumi-lang-go=\"`serviceNetworkArn`\" pulumi-lang-python=\"`service_network_arn`\" pulumi-lang-yaml=\"`serviceNetworkArn`\" pulumi-lang-java=\"`serviceNetworkArn`\"\u003e`service_network_arn`\u003c/span\u003e is required.\n",
                    "willReplaceOnChanges": true
                },
                "serviceRegion": {
                    "type": "string",
                    "description": "The AWS region of the VPC Endpoint Service. If specified, the VPC endpoint will connect to the service in the provided region. Applicable for endpoints of type `Interface`.\n",
                    "willReplaceOnChanges": true
                },
                "subnetConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ec2/VpcEndpointSubnetConfiguration:VpcEndpointSubnetConfiguration"
                    },
                    "description": "Subnet configuration for the endpoint, used to select specific IPv4 and/or IPv6 addresses to the endpoint. See\u003cspan pulumi-lang-nodejs=\" subnetConfiguration \" pulumi-lang-dotnet=\" SubnetConfiguration \" pulumi-lang-go=\" subnetConfiguration \" pulumi-lang-python=\" subnet_configuration \" pulumi-lang-yaml=\" subnetConfiguration \" pulumi-lang-java=\" subnetConfiguration \"\u003e subnet_configuration \u003c/span\u003ebelow.\n"
                },
                "subnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID of one or more subnets in which to create a network interface for the endpoint. Applicable for endpoints of type `GatewayLoadBalancer` and `Interface`. Interface type endpoints cannot function without being assigned to a subnet.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "vpcEndpointType": {
                    "type": "string",
                    "description": "The VPC endpoint type, `Gateway`, `GatewayLoadBalancer`,`Interface`, `Resource` or `ServiceNetwork`. Defaults to `Gateway`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "serviceName"
            ]
        },
        "awsx:ecr:BuilderVersion": {
            "description": "The version of the Docker builder",
            "type": "string",
            "enum": [
                {
                    "description": "The first generation builder for Docker Daemon.",
                    "value": "BuilderV1"
                },
                {
                    "description": "The builder based on moby/buildkit project",
                    "value": "BuilderBuildKit"
                }
            ]
        },
        "awsx:ecr:DockerBuild": {
            "description": "Arguments for building a docker image",
            "properties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "An optional map of named build-time argument variables to set during the Docker build.  This flag allows you to pass built-time variables that can be accessed like environment variables inside the `RUN` instruction."
                },
                "builderVersion": {
                    "$ref": "#/types/awsx:ecr:BuilderVersion",
                    "plain": true,
                    "description": "The version of the Docker builder."
                },
                "cacheFrom": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Images to consider as cache sources"
                },
                "context": {
                    "type": "string",
                    "description": "Path to a directory to use for the Docker build context, usually the directory in which the Dockerfile resides (although dockerfile may be used to choose a custom location independent of this choice). If not specified, the context defaults to the current working directory; if a relative path is used, it is relative to the current working directory that Pulumi is evaluating."
                },
                "dockerfile": {
                    "type": "string",
                    "description": "dockerfile may be used to override the default Dockerfile name and/or location.  By default, it is assumed to be a file named Dockerfile in the root of the build context."
                },
                "imageName": {
                    "type": "string",
                    "description": "Custom name for the underlying Docker image resource. If omitted, the image tag assigned by the provider will be used"
                },
                "imageTag": {
                    "type": "string",
                    "description": "Custom image tag for the resulting docker image. If omitted a random string will be used"
                },
                "platform": {
                    "type": "string",
                    "description": "The architecture of the platform you want to build this image for, e.g. `linux/arm64`."
                },
                "target": {
                    "type": "string",
                    "description": "The target of the dockerfile to build"
                }
            },
            "type": "object"
        },
        "awsx:ecr:lifecyclePolicy": {
            "description": "Simplified lifecycle policy model consisting of one or more rules that determine which images in a repository should be expired. See https://docs.aws.amazon.com/AmazonECR/latest/userguide/lifecycle_policy_examples.html for more details.",
            "properties": {
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecr:lifecyclePolicyRule"
                    },
                    "description": "Specifies the rules to determine how images should be retired from this repository. Rules are ordered from lowest priority to highest.  If there is a rule with a `selection` value of `any`, then it will have the highest priority."
                },
                "skip": {
                    "type": "boolean",
                    "plain": true,
                    "description": "Skips creation of the policy if set to `true`."
                }
            },
            "type": "object"
        },
        "awsx:ecr:lifecyclePolicyRule": {
            "description": "A lifecycle policy rule that determine which images in a repository should be expired.",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Describes the purpose of a rule within a lifecycle policy."
                },
                "maximumAgeLimit": {
                    "type": "number",
                    "description": "The maximum age limit (in days) for your images. Either [maximumNumberOfImages] or [maximumAgeLimit] must be provided."
                },
                "maximumNumberOfImages": {
                    "type": "number",
                    "description": "The maximum number of images that you want to retain in your repository. Either [maximumNumberOfImages] or [maximumAgeLimit] must be provided."
                },
                "tagPrefixList": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of image tag prefixes on which to take action with your lifecycle policy. Only used if you specified \"tagStatus\": \"tagged\". For example, if your images are tagged as prod, prod1, prod2, and so on, you would use the tag prefix prod to specify all of them. If you specify multiple tags, only the images with all specified tags are selected."
                },
                "tagStatus": {
                    "$ref": "#/types/awsx:ecr:lifecycleTagStatus",
                    "description": "Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are tagged, untagged, or any. If you specify any, then all images have the rule evaluated against them. If you specify tagged, then you must also specify a tagPrefixList value. If you specify untagged, then you must omit tagPrefixList."
                }
            },
            "type": "object",
            "required": [
                "tagStatus"
            ]
        },
        "awsx:ecr:lifecycleTagStatus": {
            "type": "string",
            "enum": [
                {
                    "name": "any",
                    "description": "Evaluate rule against all images",
                    "value": "any"
                },
                {
                    "name": "untagged",
                    "description": "Only evaluate rule against untagged images",
                    "value": "untagged"
                },
                {
                    "name": "tagged",
                    "description": "Only evaluated rule against images with specified prefixes",
                    "value": "tagged"
                }
            ]
        },
        "awsx:ecs:EC2ServiceTaskDefinition": {
            "description": "Create a TaskDefinition resource with the given unique name, arguments, and options.\nCreates required log-group and task \u0026 execution roles.\nPresents required Service load balancers if target group included in port mappings.",
            "properties": {
                "container": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                    "plain": true,
                    "description": "Single container to make a TaskDefinition from.  Useful for simple cases where there aren't\nmultiple containers, especially when creating a TaskDefinition to call [run] on.\n\nEither [container] or [containers] must be provided."
                },
                "containers": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                        "plain": true
                    },
                    "plain": true,
                    "description": "All the containers to make a TaskDefinition from.  Useful when creating a Service that will\ncontain many containers within.\n\nEither [container] or [containers] must be provided."
                },
                "cpu": {
                    "type": "string",
                    "description": "The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions]"
                },
                "enableFaultInjection": {
                    "type": "boolean",
                    "description": "Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ephemeralStorage": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage",
                    "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.\n",
                    "willReplaceOnChanges": true
                },
                "executionRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "The execution role that the Amazon ECS container agent and the Docker daemon can assume.\nWill be created automatically if not defined."
                },
                "family": {
                    "type": "string",
                    "description": "An optional unique name for your task definition. If not specified, then a default will be created."
                },
                "ipcMode": {
                    "type": "string",
                    "description": "IPC resource namespace to be used for the containers in the task The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "logGroup": {
                    "$ref": "#/types/awsx:awsx:DefaultLogGroup",
                    "plain": true,
                    "description": "A set of volume blocks that containers in your task may use."
                },
                "memory": {
                    "type": "string",
                    "description": "The amount (in MiB) of memory used by the task.  If not provided, a default will be computed\nbased on the cumulative needs specified by [containerDefinitions]"
                },
                "networkMode": {
                    "type": "string",
                    "description": "Docker networking mode to use for the containers in the task. Valid values are \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\"\u003e`bridge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "pidMode": {
                    "type": "string",
                    "description": "Process namespace to use for the containers in the task. The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint"
                    },
                    "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "proxyConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration",
                    "description": "Configuration block for the App Mesh proxy. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "runtimePlatform": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform",
                    "description": "Configuration block for\u003cspan pulumi-lang-nodejs=\" runtimePlatform \" pulumi-lang-dotnet=\" RuntimePlatform \" pulumi-lang-go=\" runtimePlatform \" pulumi-lang-python=\" runtime_platform \" pulumi-lang-yaml=\" runtimePlatform \" pulumi-lang-java=\" runtimePlatform \"\u003e runtime_platform \u003c/span\u003ethat containers in your task may use.\n",
                    "willReplaceOnChanges": true
                },
                "skipDestroy": {
                    "type": "boolean",
                    "description": "Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "IAM role that allows your Amazon ECS container task to make calls to other AWS services.\nWill be created automatically if not defined."
                },
                "trackLatest": {
                    "type": "boolean",
                    "description": "Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Useful in the event the task definition is modified outside of this resource.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume"
                    },
                    "description": "Repeatable configuration block for volumes that containers in your task may use. Detailed below.\n\n\u003e **NOTE:** Proper escaping is required for JSON field values containing quotes (`\"`) such as \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e values. If directly setting the JSON, they should be escaped as `\\\"` in the JSON,  e.g., `\"value\": \"I \\\"love\\\" escaped quotes\"`. If using a variable value, they should be escaped as `\\\\\\\"` in the variable, e.g., `value = \"I \\\\\\\"love\\\\\\\" escaped quotes\"` in the variable and `\"value\": \"${var.myvariable}\"` in the JSON.\n\n\u003e **Note:** Fault injection only works with tasks using the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e network modes. Fault injection isn't available on Windows.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "awsx:ecs:FargateServiceTaskDefinition": {
            "description": "Create a TaskDefinition resource with the given unique name, arguments, and options.\nCreates required log-group and task \u0026 execution roles.\nPresents required Service load balancers if target group included in port mappings.",
            "properties": {
                "container": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                    "plain": true,
                    "description": "Single container to make a TaskDefinition from.  Useful for simple cases where there aren't\nmultiple containers, especially when creating a TaskDefinition to call [run] on.\n\nEither [container] or [containers] must be provided."
                },
                "containers": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                        "plain": true
                    },
                    "plain": true,
                    "description": "All the containers to make a TaskDefinition from.  Useful when creating a Service that will\ncontain many containers within.\n\nEither [container] or [containers] must be provided."
                },
                "cpu": {
                    "type": "string",
                    "description": "The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions]"
                },
                "enableFaultInjection": {
                    "type": "boolean",
                    "description": "Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ephemeralStorage": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage",
                    "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.\n",
                    "willReplaceOnChanges": true
                },
                "executionRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "The execution role that the Amazon ECS container agent and the Docker daemon can assume.\nWill be created automatically if not defined."
                },
                "family": {
                    "type": "string",
                    "description": "An optional unique name for your task definition. If not specified, then a default will be created."
                },
                "ipcMode": {
                    "type": "string",
                    "description": "IPC resource namespace to be used for the containers in the task The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "logGroup": {
                    "$ref": "#/types/awsx:awsx:DefaultLogGroup",
                    "plain": true,
                    "description": "A set of volume blocks that containers in your task may use."
                },
                "memory": {
                    "type": "string",
                    "description": "The amount (in MiB) of memory used by the task.  If not provided, a default will be computed\nbased on the cumulative needs specified by [containerDefinitions]"
                },
                "pidMode": {
                    "type": "string",
                    "description": "Process namespace to use for the containers in the task. The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint"
                    },
                    "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "proxyConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration",
                    "description": "Configuration block for the App Mesh proxy. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "runtimePlatform": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform",
                    "description": "Configuration block for\u003cspan pulumi-lang-nodejs=\" runtimePlatform \" pulumi-lang-dotnet=\" RuntimePlatform \" pulumi-lang-go=\" runtimePlatform \" pulumi-lang-python=\" runtime_platform \" pulumi-lang-yaml=\" runtimePlatform \" pulumi-lang-java=\" runtimePlatform \"\u003e runtime_platform \u003c/span\u003ethat containers in your task may use.\n",
                    "willReplaceOnChanges": true
                },
                "skipDestroy": {
                    "type": "boolean",
                    "description": "Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "IAM role that allows your Amazon ECS container task to make calls to other AWS services.\nWill be created automatically if not defined."
                },
                "trackLatest": {
                    "type": "boolean",
                    "description": "Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Useful in the event the task definition is modified outside of this resource.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume"
                    },
                    "description": "Repeatable configuration block for volumes that containers in your task may use. Detailed below.\n\n\u003e **NOTE:** Proper escaping is required for JSON field values containing quotes (`\"`) such as \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e values. If directly setting the JSON, they should be escaped as `\\\"` in the JSON,  e.g., `\"value\": \"I \\\"love\\\" escaped quotes\"`. If using a variable value, they should be escaped as `\\\\\\\"` in the variable, e.g., `value = \"I \\\\\\\"love\\\\\\\" escaped quotes\"` in the variable and `\"value\": \"${var.myvariable}\"` in the JSON.\n\n\u003e **Note:** Fault injection only works with tasks using the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e network modes. Fault injection isn't available on Windows.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionContainerDefinition": {
            "description": "List of container definitions that are passed to the Docker daemon on a container instance",
            "properties": {
                "command": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "cpu": {
                    "type": "integer"
                },
                "dependsOn": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDependency"
                    }
                },
                "disableNetworking": {
                    "type": "boolean"
                },
                "dnsSearchDomains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "dnsServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "dockerLabels": {
                    "$ref": "pulumi.json#/Any"
                },
                "dockerSecurityOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "entryPoint": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "environment": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionKeyValuePair"
                    },
                    "description": "The environment variables to pass to a container"
                },
                "environmentFiles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionEnvironmentFile"
                    },
                    "description": "The list of one or more files that contain the environment variables to pass to a container"
                },
                "essential": {
                    "type": "boolean"
                },
                "extraHosts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionHostEntry"
                    }
                },
                "firelensConfiguration": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionFirelensConfiguration"
                },
                "healthCheck": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionHealthCheck"
                },
                "hostname": {
                    "type": "string"
                },
                "image": {
                    "type": "string",
                    "description": "The image used to start a container. This string is passed directly to the Docker daemon."
                },
                "interactive": {
                    "type": "boolean"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "linuxParameters": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionLinuxParameters"
                },
                "logConfiguration": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionLogConfiguration"
                },
                "memory": {
                    "type": "integer",
                    "description": "The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed."
                },
                "memoryReservation": {
                    "type": "integer"
                },
                "mountPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionMountPoint"
                    }
                },
                "name": {
                    "type": "string",
                    "description": "The name of a container. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed"
                },
                "portMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionPortMapping"
                    },
                    "description": "Port mappings allow containers to access ports on the host container instance to send or receive traffic."
                },
                "privileged": {
                    "type": "boolean"
                },
                "pseudoTerminal": {
                    "type": "boolean"
                },
                "readonlyRootFilesystem": {
                    "type": "boolean"
                },
                "repositoryCredentials": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionRepositoryCredentials"
                },
                "resourceRequirements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionResourceRequirement"
                    }
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionSecret"
                    }
                },
                "startTimeout": {
                    "type": "integer"
                },
                "stopTimeout": {
                    "type": "integer"
                },
                "systemControls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionSystemControl"
                    }
                },
                "ulimits": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionUlimit"
                    }
                },
                "user": {
                    "type": "string"
                },
                "volumesFrom": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionVolumeFrom"
                    }
                },
                "workingDirectory": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "image",
                "name"
            ]
        },
        "awsx:ecs:TaskDefinitionContainerDependency": {
            "properties": {
                "condition": {
                    "type": "string"
                },
                "containerName": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionDevice": {
            "properties": {
                "containerPath": {
                    "type": "string"
                },
                "hostPath": {
                    "type": "string"
                },
                "permissions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionEnvironmentFile": {
            "properties": {
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionFirelensConfiguration": {
            "properties": {
                "options": {
                    "$ref": "pulumi.json#/Any"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionHealthCheck": {
            "description": "The health check command and associated configuration parameters for the container.",
            "properties": {
                "command": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A string array representing the command that the container runs to determine if it is healthy."
                },
                "interval": {
                    "type": "integer",
                    "description": "The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds."
                },
                "retries": {
                    "type": "integer",
                    "description": "The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is three retries."
                },
                "startPeriod": {
                    "type": "integer",
                    "description": "The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default."
                },
                "timeout": {
                    "type": "integer",
                    "description": "The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5 seconds."
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionHostEntry": {
            "properties": {
                "hostname": {
                    "type": "string"
                },
                "ipAddress": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionKernelCapabilities": {
            "properties": {
                "add": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "drop": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionKeyValuePair": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionLinuxParameters": {
            "properties": {
                "capabilities": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionKernelCapabilities"
                },
                "devices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionDevice"
                    }
                },
                "initProcessEnabled": {
                    "type": "boolean"
                },
                "maxSwap": {
                    "type": "integer"
                },
                "sharedMemorySize": {
                    "type": "integer"
                },
                "swappiness": {
                    "type": "integer"
                },
                "tmpfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionTmpfs"
                    }
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionLogConfiguration": {
            "properties": {
                "logDriver": {
                    "type": "string"
                },
                "options": {
                    "$ref": "pulumi.json#/Any"
                },
                "secretOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionSecret"
                    }
                }
            },
            "type": "object",
            "required": [
                "logDriver"
            ]
        },
        "awsx:ecs:TaskDefinitionMountPoint": {
            "properties": {
                "containerPath": {
                    "type": "string"
                },
                "readOnly": {
                    "type": "boolean"
                },
                "sourceVolume": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionPortMapping": {
            "properties": {
                "appProtocol": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionPortMappingAppProtocol"
                },
                "containerPort": {
                    "type": "integer"
                },
                "containerPortRange": {
                    "type": "string"
                },
                "hostPort": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "protocol": {
                    "type": "string"
                },
                "targetGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2FtargetGroup:TargetGroup"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionPortMappingAppProtocol": {
            "type": "string",
            "enum": [
                {
                    "name": "Http",
                    "value": "http"
                },
                {
                    "name": "Http2",
                    "value": "http2"
                },
                {
                    "name": "Grpc",
                    "value": "grpc"
                }
            ]
        },
        "awsx:ecs:TaskDefinitionRepositoryCredentials": {
            "properties": {
                "credentialsParameter": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionResourceRequirement": {
            "properties": {
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "type",
                "value"
            ]
        },
        "awsx:ecs:TaskDefinitionSecret": {
            "properties": {
                "name": {
                    "type": "string"
                },
                "valueFrom": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "valueFrom"
            ]
        },
        "awsx:ecs:TaskDefinitionSystemControl": {
            "properties": {
                "namespace": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:ecs:TaskDefinitionTmpfs": {
            "properties": {
                "containerPath": {
                    "type": "string"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "size": {
                    "type": "integer"
                }
            },
            "type": "object",
            "required": [
                "size"
            ]
        },
        "awsx:ecs:TaskDefinitionUlimit": {
            "properties": {
                "hardLimit": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "softLimit": {
                    "type": "integer"
                }
            },
            "type": "object",
            "required": [
                "hardLimit",
                "name",
                "softLimit"
            ]
        },
        "awsx:ecs:TaskDefinitionVolumeFrom": {
            "properties": {
                "readOnly": {
                    "type": "boolean"
                },
                "sourceContainer": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "awsx:lb:Listener": {
            "description": "Provides a Load Balancer Listener resource.\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`aws.alb.Listener`\" pulumi-lang-dotnet=\"`aws.alb.Listener`\" pulumi-lang-go=\"`alb.Listener`\" pulumi-lang-python=\"`alb.Listener`\" pulumi-lang-yaml=\"`aws.alb.Listener`\" pulumi-lang-java=\"`aws.alb.Listener`\"\u003e`aws.alb.Listener`\u003c/span\u003e is known as \u003cspan pulumi-lang-nodejs=\"`aws.lb.Listener`\" pulumi-lang-dotnet=\"`aws.lb.Listener`\" pulumi-lang-go=\"`lb.Listener`\" pulumi-lang-python=\"`lb.Listener`\" pulumi-lang-yaml=\"`aws.lb.Listener`\" pulumi-lang-java=\"`aws.lb.Listener`\"\u003e`aws.lb.Listener`\u003c/span\u003e. The functionality is identical.\n\n## Example Usage\n\n### Forward Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"front_end\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 443,\n    protocol: \"HTTPS\",\n    sslPolicy: \"ELBSecurityPolicy-2016-08\",\n    certificateArn: \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    defaultActions: [{\n        type: \"forward\",\n        targetGroupArn: frontEndTargetGroup.arn,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_target_group = aws.lb.TargetGroup(\"front_end\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=443,\n    protocol=\"HTTPS\",\n    ssl_policy=\"ELBSecurityPolicy-2016-08\",\n    certificate_arn=\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    default_actions=[{\n        \"type\": \"forward\",\n        \"target_group_arn\": front_end_target_group.arn,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndTargetGroup = new Aws.LB.TargetGroup(\"front_end\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 443,\n        Protocol = \"HTTPS\",\n        SslPolicy = \"ELBSecurityPolicy-2016-08\",\n        CertificateArn = \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"forward\",\n                TargetGroupArn = frontEndTargetGroup.Arn,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(443),\n\t\t\tProtocol:        pulumi.String(\"HTTPS\"),\n\t\t\tSslPolicy:       pulumi.String(\"ELBSecurityPolicy-2016-08\"),\n\t\t\tCertificateArn:  pulumi.String(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t\tTargetGroupArn: frontEndTargetGroup.Arn,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndTargetGroup = new TargetGroup(\"frontEndTargetGroup\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(443)\n            .protocol(\"HTTPS\")\n            .sslPolicy(\"ELBSecurityPolicy-2016-08\")\n            .certificateArn(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\")\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .type(\"forward\")\n                .targetGroupArn(frontEndTargetGroup.arn())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndTargetGroup:\n    type: aws:lb:TargetGroup\n    name: front_end\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '443'\n      protocol: HTTPS\n      sslPolicy: ELBSecurityPolicy-2016-08\n      certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\n      defaultActions:\n        - type: forward\n          targetGroupArn: ${frontEndTargetGroup.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith weighted target groups:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndBlue = new aws.lb.TargetGroup(\"front_end_blue\", {});\nconst frontEndGreen = new aws.lb.TargetGroup(\"front_end_green\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 443,\n    protocol: \"HTTPS\",\n    sslPolicy: \"ELBSecurityPolicy-2016-08\",\n    certificateArn: \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    defaultActions: [{\n        type: \"forward\",\n        forward: {\n            targetGroups: [\n                {\n                    arn: frontEndBlue.arn,\n                    weight: 100,\n                },\n                {\n                    arn: frontEndGreen.arn,\n                    weight: 0,\n                },\n            ],\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_blue = aws.lb.TargetGroup(\"front_end_blue\")\nfront_end_green = aws.lb.TargetGroup(\"front_end_green\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=443,\n    protocol=\"HTTPS\",\n    ssl_policy=\"ELBSecurityPolicy-2016-08\",\n    certificate_arn=\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    default_actions=[{\n        \"type\": \"forward\",\n        \"forward\": {\n            \"target_groups\": [\n                {\n                    \"arn\": front_end_blue.arn,\n                    \"weight\": 100,\n                },\n                {\n                    \"arn\": front_end_green.arn,\n                    \"weight\": 0,\n                },\n            ],\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndBlue = new Aws.LB.TargetGroup(\"front_end_blue\");\n\n    var frontEndGreen = new Aws.LB.TargetGroup(\"front_end_green\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 443,\n        Protocol = \"HTTPS\",\n        SslPolicy = \"ELBSecurityPolicy-2016-08\",\n        CertificateArn = \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"forward\",\n                Forward = new Aws.LB.Inputs.ListenerDefaultActionForwardArgs\n                {\n                    TargetGroups = new[]\n                    {\n                        new Aws.LB.Inputs.ListenerDefaultActionForwardTargetGroupArgs\n                        {\n                            Arn = frontEndBlue.Arn,\n                            Weight = 100,\n                        },\n                        new Aws.LB.Inputs.ListenerDefaultActionForwardTargetGroupArgs\n                        {\n                            Arn = frontEndGreen.Arn,\n                            Weight = 0,\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndBlue, err := lb.NewTargetGroup(ctx, \"front_end_blue\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndGreen, err := lb.NewTargetGroup(ctx, \"front_end_green\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(443),\n\t\t\tProtocol:        pulumi.String(\"HTTPS\"),\n\t\t\tSslPolicy:       pulumi.String(\"ELBSecurityPolicy-2016-08\"),\n\t\t\tCertificateArn:  pulumi.String(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"forward\"),\n\t\t\t\t\tForward: \u0026lb.ListenerDefaultActionForwardArgs{\n\t\t\t\t\t\tTargetGroups: lb.ListenerDefaultActionForwardTargetGroupArray{\n\t\t\t\t\t\t\t\u0026lb.ListenerDefaultActionForwardTargetGroupArgs{\n\t\t\t\t\t\t\t\tArn:    frontEndBlue.Arn,\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(100),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026lb.ListenerDefaultActionForwardTargetGroupArgs{\n\t\t\t\t\t\t\t\tArn:    frontEndGreen.Arn,\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionForwardArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndBlue = new TargetGroup(\"frontEndBlue\");\n\n        var frontEndGreen = new TargetGroup(\"frontEndGreen\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(443)\n            .protocol(\"HTTPS\")\n            .sslPolicy(\"ELBSecurityPolicy-2016-08\")\n            .certificateArn(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\")\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .type(\"forward\")\n                .forward(ListenerDefaultActionForwardArgs.builder()\n                    .targetGroups(                    \n                        ListenerDefaultActionForwardTargetGroupArgs.builder()\n                            .arn(frontEndBlue.arn())\n                            .weight(100)\n                            .build(),\n                        ListenerDefaultActionForwardTargetGroupArgs.builder()\n                            .arn(frontEndGreen.arn())\n                            .weight(0)\n                            .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndBlue:\n    type: aws:lb:TargetGroup\n    name: front_end_blue\n  frontEndGreen:\n    type: aws:lb:TargetGroup\n    name: front_end_green\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '443'\n      protocol: HTTPS\n      sslPolicy: ELBSecurityPolicy-2016-08\n      certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\n      defaultActions:\n        - type: forward\n          forward:\n            targetGroups:\n              - arn: ${frontEndBlue.arn}\n                weight: 100\n              - arn: ${frontEndGreen.arn}\n                weight: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo a NLB:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEndAwsLb.arn,\n    port: 443,\n    protocol: \"TLS\",\n    sslPolicy: \"ELBSecurityPolicy-2016-08\",\n    certificateArn: \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    alpnPolicy: \"HTTP2Preferred\",\n    defaultActions: [{\n        type: \"forward\",\n        targetGroupArn: frontEndAwsLbTargetGroup.arn,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end_aws_lb[\"arn\"],\n    port=443,\n    protocol=\"TLS\",\n    ssl_policy=\"ELBSecurityPolicy-2016-08\",\n    certificate_arn=\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n    alpn_policy=\"HTTP2Preferred\",\n    default_actions=[{\n        \"type\": \"forward\",\n        \"target_group_arn\": front_end_aws_lb_target_group[\"arn\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEndAwsLb.Arn,\n        Port = 443,\n        Protocol = \"TLS\",\n        SslPolicy = \"ELBSecurityPolicy-2016-08\",\n        CertificateArn = \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n        AlpnPolicy = \"HTTP2Preferred\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"forward\",\n                TargetGroupArn = frontEndAwsLbTargetGroup.Arn,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn),\n\t\t\tPort:            pulumi.Int(443),\n\t\t\tProtocol:        pulumi.String(\"TLS\"),\n\t\t\tSslPolicy:       pulumi.String(\"ELBSecurityPolicy-2016-08\"),\n\t\t\tCertificateArn:  pulumi.String(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\"),\n\t\t\tAlpnPolicy:      pulumi.String(\"HTTP2Preferred\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t\tTargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new Listener(\"frontEnd\", ListenerArgs.builder()\n            .loadBalancerArn(frontEndAwsLb.arn())\n            .port(443)\n            .protocol(\"TLS\")\n            .sslPolicy(\"ELBSecurityPolicy-2016-08\")\n            .certificateArn(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\")\n            .alpnPolicy(\"HTTP2Preferred\")\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .type(\"forward\")\n                .targetGroupArn(frontEndAwsLbTargetGroup.arn())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEndAwsLb.arn}\n      port: '443'\n      protocol: TLS\n      sslPolicy: ELBSecurityPolicy-2016-08\n      certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\n      alpnPolicy: HTTP2Preferred\n      defaultActions:\n        - type: forward\n          targetGroupArn: ${frontEndAwsLbTargetGroup.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redirect Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 80,\n    protocol: \"HTTP\",\n    defaultActions: [{\n        type: \"redirect\",\n        redirect: {\n            port: \"443\",\n            protocol: \"HTTPS\",\n            statusCode: \"HTTP_301\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=80,\n    protocol=\"HTTP\",\n    default_actions=[{\n        \"type\": \"redirect\",\n        \"redirect\": {\n            \"port\": \"443\",\n            \"protocol\": \"HTTPS\",\n            \"status_code\": \"HTTP_301\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 80,\n        Protocol = \"HTTP\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"redirect\",\n                Redirect = new Aws.LB.Inputs.ListenerDefaultActionRedirectArgs\n                {\n                    Port = \"443\",\n                    Protocol = \"HTTPS\",\n                    StatusCode = \"HTTP_301\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(80),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"redirect\"),\n\t\t\t\t\tRedirect: \u0026lb.ListenerDefaultActionRedirectArgs{\n\t\t\t\t\t\tPort:       pulumi.String(\"443\"),\n\t\t\t\t\t\tProtocol:   pulumi.String(\"HTTPS\"),\n\t\t\t\t\t\tStatusCode: pulumi.String(\"HTTP_301\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(80)\n            .protocol(\"HTTP\")\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .type(\"redirect\")\n                .redirect(ListenerDefaultActionRedirectArgs.builder()\n                    .port(\"443\")\n                    .protocol(\"HTTPS\")\n                    .statusCode(\"HTTP_301\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '80'\n      protocol: HTTP\n      defaultActions:\n        - type: redirect\n          redirect:\n            port: '443'\n            protocol: HTTPS\n            statusCode: HTTP_301\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Fixed-response Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 80,\n    protocol: \"HTTP\",\n    defaultActions: [{\n        type: \"fixed-response\",\n        fixedResponse: {\n            contentType: \"text/plain\",\n            messageBody: \"Fixed response content\",\n            statusCode: \"200\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=80,\n    protocol=\"HTTP\",\n    default_actions=[{\n        \"type\": \"fixed-response\",\n        \"fixed_response\": {\n            \"content_type\": \"text/plain\",\n            \"message_body\": \"Fixed response content\",\n            \"status_code\": \"200\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 80,\n        Protocol = \"HTTP\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"fixed-response\",\n                FixedResponse = new Aws.LB.Inputs.ListenerDefaultActionFixedResponseArgs\n                {\n                    ContentType = \"text/plain\",\n                    MessageBody = \"Fixed response content\",\n                    StatusCode = \"200\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(80),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"fixed-response\"),\n\t\t\t\t\tFixedResponse: \u0026lb.ListenerDefaultActionFixedResponseArgs{\n\t\t\t\t\t\tContentType: pulumi.String(\"text/plain\"),\n\t\t\t\t\t\tMessageBody: pulumi.String(\"Fixed response content\"),\n\t\t\t\t\t\tStatusCode:  pulumi.String(\"200\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionFixedResponseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(80)\n            .protocol(\"HTTP\")\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .type(\"fixed-response\")\n                .fixedResponse(ListenerDefaultActionFixedResponseArgs.builder()\n                    .contentType(\"text/plain\")\n                    .messageBody(\"Fixed response content\")\n                    .statusCode(\"200\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '80'\n      protocol: HTTP\n      defaultActions:\n        - type: fixed-response\n          fixedResponse:\n            contentType: text/plain\n            messageBody: Fixed response content\n            statusCode: '200'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Authenticate-cognito Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"front_end\", {});\nconst pool = new aws.cognito.UserPool(\"pool\", {});\nconst client = new aws.cognito.UserPoolClient(\"client\", {});\nconst domain = new aws.cognito.UserPoolDomain(\"domain\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 80,\n    protocol: \"HTTP\",\n    defaultActions: [\n        {\n            type: \"authenticate-cognito\",\n            authenticateCognito: {\n                userPoolArn: pool.arn,\n                userPoolClientId: client.id,\n                userPoolDomain: domain.domain,\n            },\n        },\n        {\n            type: \"forward\",\n            targetGroupArn: frontEndTargetGroup.arn,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_target_group = aws.lb.TargetGroup(\"front_end\")\npool = aws.cognito.UserPool(\"pool\")\nclient = aws.cognito.UserPoolClient(\"client\")\ndomain = aws.cognito.UserPoolDomain(\"domain\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=80,\n    protocol=\"HTTP\",\n    default_actions=[\n        {\n            \"type\": \"authenticate-cognito\",\n            \"authenticate_cognito\": {\n                \"user_pool_arn\": pool.arn,\n                \"user_pool_client_id\": client.id,\n                \"user_pool_domain\": domain.domain,\n            },\n        },\n        {\n            \"type\": \"forward\",\n            \"target_group_arn\": front_end_target_group.arn,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndTargetGroup = new Aws.LB.TargetGroup(\"front_end\");\n\n    var pool = new Aws.Cognito.UserPool(\"pool\");\n\n    var client = new Aws.Cognito.UserPoolClient(\"client\");\n\n    var domain = new Aws.Cognito.UserPoolDomain(\"domain\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 80,\n        Protocol = \"HTTP\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"authenticate-cognito\",\n                AuthenticateCognito = new Aws.LB.Inputs.ListenerDefaultActionAuthenticateCognitoArgs\n                {\n                    UserPoolArn = pool.Arn,\n                    UserPoolClientId = client.Id,\n                    UserPoolDomain = domain.Domain,\n                },\n            },\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"forward\",\n                TargetGroupArn = frontEndTargetGroup.Arn,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cognito\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cognito.NewUserPool(ctx, \"pool\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tclient, err := cognito.NewUserPoolClient(ctx, \"client\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdomain, err := cognito.NewUserPoolDomain(ctx, \"domain\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(80),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"authenticate-cognito\"),\n\t\t\t\t\tAuthenticateCognito: \u0026lb.ListenerDefaultActionAuthenticateCognitoArgs{\n\t\t\t\t\t\tUserPoolArn:      pool.Arn,\n\t\t\t\t\t\tUserPoolClientId: client.ID(),\n\t\t\t\t\t\tUserPoolDomain:   domain.Domain,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t\tTargetGroupArn: frontEndTargetGroup.Arn,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolClient;\nimport com.pulumi.aws.cognito.UserPoolDomain;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionAuthenticateCognitoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndTargetGroup = new TargetGroup(\"frontEndTargetGroup\");\n\n        var pool = new UserPool(\"pool\");\n\n        var client = new UserPoolClient(\"client\");\n\n        var domain = new UserPoolDomain(\"domain\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(80)\n            .protocol(\"HTTP\")\n            .defaultActions(            \n                ListenerDefaultActionArgs.builder()\n                    .type(\"authenticate-cognito\")\n                    .authenticateCognito(ListenerDefaultActionAuthenticateCognitoArgs.builder()\n                        .userPoolArn(pool.arn())\n                        .userPoolClientId(client.id())\n                        .userPoolDomain(domain.domain())\n                        .build())\n                    .build(),\n                ListenerDefaultActionArgs.builder()\n                    .type(\"forward\")\n                    .targetGroupArn(frontEndTargetGroup.arn())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndTargetGroup:\n    type: aws:lb:TargetGroup\n    name: front_end\n  pool:\n    type: aws:cognito:UserPool\n  client:\n    type: aws:cognito:UserPoolClient\n  domain:\n    type: aws:cognito:UserPoolDomain\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '80'\n      protocol: HTTP\n      defaultActions:\n        - type: authenticate-cognito\n          authenticateCognito:\n            userPoolArn: ${pool.arn}\n            userPoolClientId: ${client.id}\n            userPoolDomain: ${domain.domain}\n        - type: forward\n          targetGroupArn: ${frontEndTargetGroup.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Authenticate-OIDC Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.LoadBalancer(\"front_end\", {});\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"front_end\", {});\nconst frontEndListener = new aws.lb.Listener(\"front_end\", {\n    loadBalancerArn: frontEnd.arn,\n    port: 80,\n    protocol: \"HTTP\",\n    defaultActions: [\n        {\n            type: \"authenticate-oidc\",\n            authenticateOidc: {\n                authorizationEndpoint: \"https://example.com/authorization_endpoint\",\n                clientId: \"client_id\",\n                clientSecret: \"client_secret\",\n                issuer: \"https://example.com\",\n                tokenEndpoint: \"https://example.com/token_endpoint\",\n                userInfoEndpoint: \"https://example.com/user_info_endpoint\",\n            },\n        },\n        {\n            type: \"forward\",\n            targetGroupArn: frontEndTargetGroup.arn,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.LoadBalancer(\"front_end\")\nfront_end_target_group = aws.lb.TargetGroup(\"front_end\")\nfront_end_listener = aws.lb.Listener(\"front_end\",\n    load_balancer_arn=front_end.arn,\n    port=80,\n    protocol=\"HTTP\",\n    default_actions=[\n        {\n            \"type\": \"authenticate-oidc\",\n            \"authenticate_oidc\": {\n                \"authorization_endpoint\": \"https://example.com/authorization_endpoint\",\n                \"client_id\": \"client_id\",\n                \"client_secret\": \"client_secret\",\n                \"issuer\": \"https://example.com\",\n                \"token_endpoint\": \"https://example.com/token_endpoint\",\n                \"user_info_endpoint\": \"https://example.com/user_info_endpoint\",\n            },\n        },\n        {\n            \"type\": \"forward\",\n            \"target_group_arn\": front_end_target_group.arn,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontEnd = new Aws.LB.LoadBalancer(\"front_end\");\n\n    var frontEndTargetGroup = new Aws.LB.TargetGroup(\"front_end\");\n\n    var frontEndListener = new Aws.LB.Listener(\"front_end\", new()\n    {\n        LoadBalancerArn = frontEnd.Arn,\n        Port = 80,\n        Protocol = \"HTTP\",\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"authenticate-oidc\",\n                AuthenticateOidc = new Aws.LB.Inputs.ListenerDefaultActionAuthenticateOidcArgs\n                {\n                    AuthorizationEndpoint = \"https://example.com/authorization_endpoint\",\n                    ClientId = \"client_id\",\n                    ClientSecret = \"client_secret\",\n                    Issuer = \"https://example.com\",\n                    TokenEndpoint = \"https://example.com/token_endpoint\",\n                    UserInfoEndpoint = \"https://example.com/user_info_endpoint\",\n                },\n            },\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"forward\",\n                TargetGroupArn = frontEndTargetGroup.Arn,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontEnd, err := lb.NewLoadBalancer(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"front_end\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"front_end\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEnd.Arn,\n\t\t\tPort:            pulumi.Int(80),\n\t\t\tProtocol:        pulumi.String(\"HTTP\"),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"authenticate-oidc\"),\n\t\t\t\t\tAuthenticateOidc: \u0026lb.ListenerDefaultActionAuthenticateOidcArgs{\n\t\t\t\t\t\tAuthorizationEndpoint: pulumi.String(\"https://example.com/authorization_endpoint\"),\n\t\t\t\t\t\tClientId:              pulumi.String(\"client_id\"),\n\t\t\t\t\t\tClientSecret:          pulumi.String(\"client_secret\"),\n\t\t\t\t\t\tIssuer:                pulumi.String(\"https://example.com\"),\n\t\t\t\t\t\tTokenEndpoint:         pulumi.String(\"https://example.com/token_endpoint\"),\n\t\t\t\t\t\tUserInfoEndpoint:      pulumi.String(\"https://example.com/user_info_endpoint\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t\tTargetGroupArn: frontEndTargetGroup.Arn,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionAuthenticateOidcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var frontEnd = new LoadBalancer(\"frontEnd\");\n\n        var frontEndTargetGroup = new TargetGroup(\"frontEndTargetGroup\");\n\n        var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder()\n            .loadBalancerArn(frontEnd.arn())\n            .port(80)\n            .protocol(\"HTTP\")\n            .defaultActions(            \n                ListenerDefaultActionArgs.builder()\n                    .type(\"authenticate-oidc\")\n                    .authenticateOidc(ListenerDefaultActionAuthenticateOidcArgs.builder()\n                        .authorizationEndpoint(\"https://example.com/authorization_endpoint\")\n                        .clientId(\"client_id\")\n                        .clientSecret(\"client_secret\")\n                        .issuer(\"https://example.com\")\n                        .tokenEndpoint(\"https://example.com/token_endpoint\")\n                        .userInfoEndpoint(\"https://example.com/user_info_endpoint\")\n                        .build())\n                    .build(),\n                ListenerDefaultActionArgs.builder()\n                    .type(\"forward\")\n                    .targetGroupArn(frontEndTargetGroup.arn())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontEnd:\n    type: aws:lb:LoadBalancer\n    name: front_end\n  frontEndTargetGroup:\n    type: aws:lb:TargetGroup\n    name: front_end\n  frontEndListener:\n    type: aws:lb:Listener\n    name: front_end\n    properties:\n      loadBalancerArn: ${frontEnd.arn}\n      port: '80'\n      protocol: HTTP\n      defaultActions:\n        - type: authenticate-oidc\n          authenticateOidc:\n            authorizationEndpoint: https://example.com/authorization_endpoint\n            clientId: client_id\n            clientSecret: client_secret\n            issuer: https://example.com\n            tokenEndpoint: https://example.com/token_endpoint\n            userInfoEndpoint: https://example.com/user_info_endpoint\n        - type: forward\n          targetGroupArn: ${frontEndTargetGroup.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### JWT Validation Action\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.lb.Listener(\"test\", {\n    loadBalancerArn: testAwsLb.id,\n    protocol: \"HTTPS\",\n    port: 443,\n    sslPolicy: \"ELBSecurityPolicy-2016-08\",\n    certificateArn: testAwsIamServerCertificate.arn,\n    defaultActions: [\n        {\n            type: \"jwt-validation\",\n            jwtValidation: {\n                issuer: \"https://example.com\",\n                jwksEndpoint: \"https://example.com/.well-known/jwks.json\",\n                additionalClaims: [\n                    {\n                        format: \"string-array\",\n                        name: \"claim_name1\",\n                        values: [\n                            \"value1\",\n                            \"value2\",\n                        ],\n                    },\n                    {\n                        format: \"single-string\",\n                        name: \"claim_name2\",\n                        values: [\"value1\"],\n                    },\n                ],\n            },\n        },\n        {\n            targetGroupArn: testAwsLbTargetGroup.id,\n            type: \"forward\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.lb.Listener(\"test\",\n    load_balancer_arn=test_aws_lb[\"id\"],\n    protocol=\"HTTPS\",\n    port=443,\n    ssl_policy=\"ELBSecurityPolicy-2016-08\",\n    certificate_arn=test_aws_iam_server_certificate[\"arn\"],\n    default_actions=[\n        {\n            \"type\": \"jwt-validation\",\n            \"jwt_validation\": {\n                \"issuer\": \"https://example.com\",\n                \"jwks_endpoint\": \"https://example.com/.well-known/jwks.json\",\n                \"additional_claims\": [\n                    {\n                        \"format\": \"string-array\",\n                        \"name\": \"claim_name1\",\n                        \"values\": [\n                            \"value1\",\n                            \"value2\",\n                        ],\n                    },\n                    {\n                        \"format\": \"single-string\",\n                        \"name\": \"claim_name2\",\n                        \"values\": [\"value1\"],\n                    },\n                ],\n            },\n        },\n        {\n            \"target_group_arn\": test_aws_lb_target_group[\"id\"],\n            \"type\": \"forward\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Aws.LB.Listener(\"test\", new()\n    {\n        LoadBalancerArn = testAwsLb.Id,\n        Protocol = \"HTTPS\",\n        Port = 443,\n        SslPolicy = \"ELBSecurityPolicy-2016-08\",\n        CertificateArn = testAwsIamServerCertificate.Arn,\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                Type = \"jwt-validation\",\n                JwtValidation = new Aws.LB.Inputs.ListenerDefaultActionJwtValidationArgs\n                {\n                    Issuer = \"https://example.com\",\n                    JwksEndpoint = \"https://example.com/.well-known/jwks.json\",\n                    AdditionalClaims = new[]\n                    {\n                        new Aws.LB.Inputs.ListenerDefaultActionJwtValidationAdditionalClaimArgs\n                        {\n                            Format = \"string-array\",\n                            Name = \"claim_name1\",\n                            Values = new[]\n                            {\n                                \"value1\",\n                                \"value2\",\n                            },\n                        },\n                        new Aws.LB.Inputs.ListenerDefaultActionJwtValidationAdditionalClaimArgs\n                        {\n                            Format = \"single-string\",\n                            Name = \"claim_name2\",\n                            Values = new[]\n                            {\n                                \"value1\",\n                            },\n                        },\n                    },\n                },\n            },\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                TargetGroupArn = testAwsLbTargetGroup.Id,\n                Type = \"forward\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewListener(ctx, \"test\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: pulumi.Any(testAwsLb.Id),\n\t\t\tProtocol:        pulumi.String(\"HTTPS\"),\n\t\t\tPort:            pulumi.Int(443),\n\t\t\tSslPolicy:       pulumi.String(\"ELBSecurityPolicy-2016-08\"),\n\t\t\tCertificateArn:  pulumi.Any(testAwsIamServerCertificate.Arn),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tType: pulumi.String(\"jwt-validation\"),\n\t\t\t\t\tJwtValidation: \u0026lb.ListenerDefaultActionJwtValidationArgs{\n\t\t\t\t\t\tIssuer:       pulumi.String(\"https://example.com\"),\n\t\t\t\t\t\tJwksEndpoint: pulumi.String(\"https://example.com/.well-known/jwks.json\"),\n\t\t\t\t\t\tAdditionalClaims: lb.ListenerDefaultActionJwtValidationAdditionalClaimArray{\n\t\t\t\t\t\t\t\u0026lb.ListenerDefaultActionJwtValidationAdditionalClaimArgs{\n\t\t\t\t\t\t\t\tFormat: pulumi.String(\"string-array\"),\n\t\t\t\t\t\t\t\tName:   pulumi.String(\"claim_name1\"),\n\t\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"value2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026lb.ListenerDefaultActionJwtValidationAdditionalClaimArgs{\n\t\t\t\t\t\t\t\tFormat: pulumi.String(\"single-string\"),\n\t\t\t\t\t\t\t\tName:   pulumi.String(\"claim_name2\"),\n\t\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tTargetGroupArn: pulumi.Any(testAwsLbTargetGroup.Id),\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionJwtValidationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new Listener(\"test\", ListenerArgs.builder()\n            .loadBalancerArn(testAwsLb.id())\n            .protocol(\"HTTPS\")\n            .port(443)\n            .sslPolicy(\"ELBSecurityPolicy-2016-08\")\n            .certificateArn(testAwsIamServerCertificate.arn())\n            .defaultActions(            \n                ListenerDefaultActionArgs.builder()\n                    .type(\"jwt-validation\")\n                    .jwtValidation(ListenerDefaultActionJwtValidationArgs.builder()\n                        .issuer(\"https://example.com\")\n                        .jwksEndpoint(\"https://example.com/.well-known/jwks.json\")\n                        .additionalClaims(                        \n                            ListenerDefaultActionJwtValidationAdditionalClaimArgs.builder()\n                                .format(\"string-array\")\n                                .name(\"claim_name1\")\n                                .values(                                \n                                    \"value1\",\n                                    \"value2\")\n                                .build(),\n                            ListenerDefaultActionJwtValidationAdditionalClaimArgs.builder()\n                                .format(\"single-string\")\n                                .name(\"claim_name2\")\n                                .values(\"value1\")\n                                .build())\n                        .build())\n                    .build(),\n                ListenerDefaultActionArgs.builder()\n                    .targetGroupArn(testAwsLbTargetGroup.id())\n                    .type(\"forward\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: aws:lb:Listener\n    properties:\n      loadBalancerArn: ${testAwsLb.id}\n      protocol: HTTPS\n      port: '443'\n      sslPolicy: ELBSecurityPolicy-2016-08\n      certificateArn: ${testAwsIamServerCertificate.arn}\n      defaultActions:\n        - type: jwt-validation\n          jwtValidation:\n            issuer: https://example.com\n            jwksEndpoint: https://example.com/.well-known/jwks.json\n            additionalClaims:\n              - format: string-array\n                name: claim_name1\n                values:\n                  - value1\n                  - value2\n              - format: single-string\n                name: claim_name2\n                values:\n                  - value1\n        - targetGroupArn: ${testAwsLbTargetGroup.id}\n          type: forward\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Gateway Load Balancer Listener\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lb.LoadBalancer(\"example\", {\n    loadBalancerType: \"gateway\",\n    name: \"example\",\n    subnetMappings: [{\n        subnetId: exampleAwsSubnet.id,\n    }],\n});\nconst exampleTargetGroup = new aws.lb.TargetGroup(\"example\", {\n    name: \"example\",\n    port: 6081,\n    protocol: \"GENEVE\",\n    vpcId: exampleAwsVpc.id,\n    healthCheck: {\n        port: \"80\",\n        protocol: \"HTTP\",\n    },\n});\nconst exampleListener = new aws.lb.Listener(\"example\", {\n    loadBalancerArn: example.id,\n    defaultActions: [{\n        targetGroupArn: exampleTargetGroup.id,\n        type: \"forward\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lb.LoadBalancer(\"example\",\n    load_balancer_type=\"gateway\",\n    name=\"example\",\n    subnet_mappings=[{\n        \"subnet_id\": example_aws_subnet[\"id\"],\n    }])\nexample_target_group = aws.lb.TargetGroup(\"example\",\n    name=\"example\",\n    port=6081,\n    protocol=\"GENEVE\",\n    vpc_id=example_aws_vpc[\"id\"],\n    health_check={\n        \"port\": \"80\",\n        \"protocol\": \"HTTP\",\n    })\nexample_listener = aws.lb.Listener(\"example\",\n    load_balancer_arn=example.id,\n    default_actions=[{\n        \"target_group_arn\": example_target_group.id,\n        \"type\": \"forward\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Aws.LB.LoadBalancer(\"example\", new()\n    {\n        LoadBalancerType = \"gateway\",\n        Name = \"example\",\n        SubnetMappings = new[]\n        {\n            new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs\n            {\n                SubnetId = exampleAwsSubnet.Id,\n            },\n        },\n    });\n\n    var exampleTargetGroup = new Aws.LB.TargetGroup(\"example\", new()\n    {\n        Name = \"example\",\n        Port = 6081,\n        Protocol = \"GENEVE\",\n        VpcId = exampleAwsVpc.Id,\n        HealthCheck = new Aws.LB.Inputs.TargetGroupHealthCheckArgs\n        {\n            Port = \"80\",\n            Protocol = \"HTTP\",\n        },\n    });\n\n    var exampleListener = new Aws.LB.Listener(\"example\", new()\n    {\n        LoadBalancerArn = example.Id,\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                TargetGroupArn = exampleTargetGroup.Id,\n                Type = \"forward\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := lb.NewLoadBalancer(ctx, \"example\", \u0026lb.LoadBalancerArgs{\n\t\t\tLoadBalancerType: pulumi.String(\"gateway\"),\n\t\t\tName:             pulumi.String(\"example\"),\n\t\t\tSubnetMappings: lb.LoadBalancerSubnetMappingArray{\n\t\t\t\t\u0026lb.LoadBalancerSubnetMappingArgs{\n\t\t\t\t\tSubnetId: pulumi.Any(exampleAwsSubnet.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTargetGroup, err := lb.NewTargetGroup(ctx, \"example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:     pulumi.String(\"example\"),\n\t\t\tPort:     pulumi.Int(6081),\n\t\t\tProtocol: pulumi.String(\"GENEVE\"),\n\t\t\tVpcId:    pulumi.Any(exampleAwsVpc.Id),\n\t\t\tHealthCheck: \u0026lb.TargetGroupHealthCheckArgs{\n\t\t\t\tPort:     pulumi.String(\"80\"),\n\t\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"example\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: example.ID(),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tTargetGroupArn: exampleTargetGroup.ID(),\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.LoadBalancerArgs;\nimport com.pulumi.aws.lb.inputs.LoadBalancerSubnetMappingArgs;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport com.pulumi.aws.lb.inputs.TargetGroupHealthCheckArgs;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new LoadBalancer(\"example\", LoadBalancerArgs.builder()\n            .loadBalancerType(\"gateway\")\n            .name(\"example\")\n            .subnetMappings(LoadBalancerSubnetMappingArgs.builder()\n                .subnetId(exampleAwsSubnet.id())\n                .build())\n            .build());\n\n        var exampleTargetGroup = new TargetGroup(\"exampleTargetGroup\", TargetGroupArgs.builder()\n            .name(\"example\")\n            .port(6081)\n            .protocol(\"GENEVE\")\n            .vpcId(exampleAwsVpc.id())\n            .healthCheck(TargetGroupHealthCheckArgs.builder()\n                .port(\"80\")\n                .protocol(\"HTTP\")\n                .build())\n            .build());\n\n        var exampleListener = new Listener(\"exampleListener\", ListenerArgs.builder()\n            .loadBalancerArn(example.id())\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .targetGroupArn(exampleTargetGroup.id())\n                .type(\"forward\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: aws:lb:LoadBalancer\n    properties:\n      loadBalancerType: gateway\n      name: example\n      subnetMappings:\n        - subnetId: ${exampleAwsSubnet.id}\n  exampleTargetGroup:\n    type: aws:lb:TargetGroup\n    name: example\n    properties:\n      name: example\n      port: 6081\n      protocol: GENEVE\n      vpcId: ${exampleAwsVpc.id}\n      healthCheck:\n        port: 80\n        protocol: HTTP\n  exampleListener:\n    type: aws:lb:Listener\n    name: example\n    properties:\n      loadBalancerArn: ${example.id}\n      defaultActions:\n        - targetGroupArn: ${exampleTargetGroup.id}\n          type: forward\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Mutual TLS Authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = new aws.lb.LoadBalancer(\"example\", {loadBalancerType: \"application\"});\nconst exampleTargetGroup = new aws.lb.TargetGroup(\"example\", {});\nconst exampleListener = new aws.lb.Listener(\"example\", {\n    loadBalancerArn: example.id,\n    defaultActions: [{\n        targetGroupArn: exampleTargetGroup.id,\n        type: \"forward\",\n    }],\n    mutualAuthentication: {\n        mode: \"verify\",\n        trustStoreArn: \"...\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.lb.LoadBalancer(\"example\", load_balancer_type=\"application\")\nexample_target_group = aws.lb.TargetGroup(\"example\")\nexample_listener = aws.lb.Listener(\"example\",\n    load_balancer_arn=example.id,\n    default_actions=[{\n        \"target_group_arn\": example_target_group.id,\n        \"type\": \"forward\",\n    }],\n    mutual_authentication={\n        \"mode\": \"verify\",\n        \"trust_store_arn\": \"...\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Aws.LB.LoadBalancer(\"example\", new()\n    {\n        LoadBalancerType = \"application\",\n    });\n\n    var exampleTargetGroup = new Aws.LB.TargetGroup(\"example\");\n\n    var exampleListener = new Aws.LB.Listener(\"example\", new()\n    {\n        LoadBalancerArn = example.Id,\n        DefaultActions = new[]\n        {\n            new Aws.LB.Inputs.ListenerDefaultActionArgs\n            {\n                TargetGroupArn = exampleTargetGroup.Id,\n                Type = \"forward\",\n            },\n        },\n        MutualAuthentication = new Aws.LB.Inputs.ListenerMutualAuthenticationArgs\n        {\n            Mode = \"verify\",\n            TrustStoreArn = \"...\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := lb.NewLoadBalancer(ctx, \"example\", \u0026lb.LoadBalancerArgs{\n\t\t\tLoadBalancerType: pulumi.String(\"application\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTargetGroup, err := lb.NewTargetGroup(ctx, \"example\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"example\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: example.ID(),\n\t\t\tDefaultActions: lb.ListenerDefaultActionArray{\n\t\t\t\t\u0026lb.ListenerDefaultActionArgs{\n\t\t\t\t\tTargetGroupArn: exampleTargetGroup.ID(),\n\t\t\t\t\tType:           pulumi.String(\"forward\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMutualAuthentication: \u0026lb.ListenerMutualAuthenticationArgs{\n\t\t\t\tMode:          pulumi.String(\"verify\"),\n\t\t\t\tTrustStoreArn: pulumi.String(\"...\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.LoadBalancer;\nimport com.pulumi.aws.lb.LoadBalancerArgs;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.Listener;\nimport com.pulumi.aws.lb.ListenerArgs;\nimport com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs;\nimport com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new LoadBalancer(\"example\", LoadBalancerArgs.builder()\n            .loadBalancerType(\"application\")\n            .build());\n\n        var exampleTargetGroup = new TargetGroup(\"exampleTargetGroup\");\n\n        var exampleListener = new Listener(\"exampleListener\", ListenerArgs.builder()\n            .loadBalancerArn(example.id())\n            .defaultActions(ListenerDefaultActionArgs.builder()\n                .targetGroupArn(exampleTargetGroup.id())\n                .type(\"forward\")\n                .build())\n            .mutualAuthentication(ListenerMutualAuthenticationArgs.builder()\n                .mode(\"verify\")\n                .trustStoreArn(\"...\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: aws:lb:LoadBalancer\n    properties:\n      loadBalancerType: application\n  exampleTargetGroup:\n    type: aws:lb:TargetGroup\n    name: example\n  exampleListener:\n    type: aws:lb:Listener\n    name: example\n    properties:\n      loadBalancerArn: ${example.id}\n      defaultActions:\n        - targetGroupArn: ${exampleTargetGroup.id}\n          type: forward\n      mutualAuthentication:\n        mode: verify\n        trustStoreArn: '...'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the load balancer listener.\n\nUsing `pulumi import`, import listeners using their ARN. For example:\n\n% pulumi import aws_lb_listener.front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96\n\n",
            "properties": {
                "alpnPolicy": {
                    "type": "string",
                    "description": "Name of the Application-Layer Protocol Negotiation (ALPN) policy. Can be set if \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is `TLS`. Valid values are `HTTP1Only`, `HTTP2Only`, `HTTP2Optional`, `HTTP2Preferred`, and `None`.\n"
                },
                "certificateArn": {
                    "type": "string",
                    "description": "ARN of the default SSL server certificate. Exactly one certificate is required if the protocol is HTTPS. For adding additional SSL certificates, see the \u003cspan pulumi-lang-nodejs=\"`aws.lb.ListenerCertificate`\" pulumi-lang-dotnet=\"`aws.lb.ListenerCertificate`\" pulumi-lang-go=\"`lb.ListenerCertificate`\" pulumi-lang-python=\"`lb.ListenerCertificate`\" pulumi-lang-yaml=\"`aws.lb.ListenerCertificate`\" pulumi-lang-java=\"`aws.lb.ListenerCertificate`\"\u003e`aws.lb.ListenerCertificate`\u003c/span\u003e resource.\n"
                },
                "defaultActions": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/ListenerDefaultAction:ListenerDefaultAction"
                    },
                    "description": "Configuration block for default actions. See below.\n"
                },
                "mutualAuthentication": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/ListenerMutualAuthentication:ListenerMutualAuthentication",
                    "description": "The mutual authentication configuration information. See below.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port on which the load balancer is listening. Not valid for Gateway Load Balancers.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for connections from clients to the load balancer. For Application Load Balancers, valid values are `HTTP` and `HTTPS`, with a default of `HTTP`. For Network Load Balancers, valid values are `TCP`, `TLS`, `UDP`, and `TCP_UDP`. Not valid to use `UDP` or `TCP_UDP` if dual-stack mode is enabled. Not valid for Gateway Load Balancers.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertIssuerHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert-Issuer` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertLeafHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert-Leaf` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertSerialNumberHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert-Serial-Number` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertSubjectHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert-Subject` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznMtlsClientcertValidityHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Mtls-Clientcert-Validity` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznTlsCipherSuiteHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Tls-Cipher-Suite` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpRequestXAmznTlsVersionHeaderName": {
                    "type": "string",
                    "description": "Enables you to modify the header name of the `X-Amzn-Tls-Version` HTTP request header. Can only be set if protocol is `HTTPS` for Application Load Balancers.\n"
                },
                "routingHttpResponseAccessControlAllowCredentialsHeaderValue": {
                    "type": "string",
                    "description": "Specifies which headers the browser can expose to the requesting client. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. The only valid value is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "routingHttpResponseAccessControlAllowHeadersHeaderValue": {
                    "type": "string",
                    "description": "Specifies which headers can be used during the request. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Valid values are `*`, `Accept`, `Accept-Language`, `Cache-Control`, `Content-Language`, `Content-Length`, `Content-Type`, `Expires`, `Last-Modified`, `Pragma`. Dependent on your use-case other headers can be exposed and then set as a value consult the Access-Control-Allow-Headers documentation.\n"
                },
                "routingHttpResponseAccessControlAllowMethodsHeaderValue": {
                    "type": "string",
                    "description": "Set which HTTP methods are allowed when accessing the server from a different origin. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Valid values are `GET`, `HEAD`, `POST`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE` or `PATCH`.\n"
                },
                "routingHttpResponseAccessControlAllowOriginHeaderValue": {
                    "type": "string",
                    "description": "Specifies which origins are allowed to access the server. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. A valid value is a URI, eg: `https://example.com`.\n"
                },
                "routingHttpResponseAccessControlExposeHeadersHeaderValue": {
                    "type": "string",
                    "description": "Specifies whether the browser should include credentials such as cookies or authentication when making requests. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Valid values are `*`, `Cache-Control`, `Content-Language`, `Content-Length`, `Content-Type`, `Expires`, `Last-Modified`, or `Pragma`. Dependent on your use-case other headers can be exposed, consult the Access-Control-Expose-Headers documentation.\n"
                },
                "routingHttpResponseAccessControlMaxAgeHeaderValue": {
                    "type": "string",
                    "description": "Specifies how long the results of a preflight request can be cached, in seconds. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Valid values are between \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`86400`\" pulumi-lang-dotnet=\"`86400`\" pulumi-lang-go=\"`86400`\" pulumi-lang-python=\"`86400`\" pulumi-lang-yaml=\"`86400`\" pulumi-lang-java=\"`86400`\"\u003e`86400`\u003c/span\u003e. This value is browser specific, consult the Access-Control-Max-Age documentation.\n"
                },
                "routingHttpResponseContentSecurityPolicyHeaderValue": {
                    "type": "string",
                    "description": "Specifies restrictions enforced by the browser to help minimize the risk of certain types of security threats. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Values for this are extensive, and can be impactful when set, consult Content-Security-Policy documentation.\n"
                },
                "routingHttpResponseServerEnabled": {
                    "type": "boolean",
                    "description": "Enables you to allow or remove the HTTP response server header. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "routingHttpResponseStrictTransportSecurityHeaderValue": {
                    "type": "string",
                    "description": "Informs browsers that the site should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be converted to HTTPS. Default values are `max-age=31536000; includeSubDomains; preload` consult the Strict-Transport-Security documentation for further details.\n"
                },
                "routingHttpResponseXContentTypeOptionsHeaderValue": {
                    "type": "string",
                    "description": "Indicates whether the MIME types advertised in the Content-Type headers should be followed and not be changed. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. The only valid value is \u003cspan pulumi-lang-nodejs=\"`nosniff`\" pulumi-lang-dotnet=\"`Nosniff`\" pulumi-lang-go=\"`nosniff`\" pulumi-lang-python=\"`nosniff`\" pulumi-lang-yaml=\"`nosniff`\" pulumi-lang-java=\"`nosniff`\"\u003e`nosniff`\u003c/span\u003e.\n"
                },
                "routingHttpResponseXFrameOptionsHeaderValue": {
                    "type": "string",
                    "description": "Indicates whether the browser is allowed to render a page in a frame, iframe, embed or object. Can only be set if protocol is `HTTP` or `HTTPS` for Application Load Balancers. Not supported for Network Load Balancer, or with a Gateway Load Balancer. The only valid values are `DENY`, `SAMEORIGIN`, or `ALLOW-FROM https://example.com`.\n"
                },
                "sslPolicy": {
                    "type": "string",
                    "description": "Name of the SSL Policy for the listener. Required if \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is `HTTPS` or `TLS`. Default is `ELBSecurityPolicy-2016-08`.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. .If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n"
                },
                "tcpIdleTimeoutSeconds": {
                    "type": "integer",
                    "description": "TCP idle timeout value in seconds. Can only be set if protocol is `TCP` on Network Load Balancer, or with a Gateway Load Balancer. Not supported for Application Load Balancers. Valid values are between \u003cspan pulumi-lang-nodejs=\"`60`\" pulumi-lang-dotnet=\"`60`\" pulumi-lang-go=\"`60`\" pulumi-lang-python=\"`60`\" pulumi-lang-yaml=\"`60`\" pulumi-lang-java=\"`60`\"\u003e`60`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`6000`\" pulumi-lang-dotnet=\"`6000`\" pulumi-lang-go=\"`6000`\" pulumi-lang-python=\"`6000`\" pulumi-lang-yaml=\"`6000`\" pulumi-lang-java=\"`6000`\"\u003e`6000`\u003c/span\u003e inclusive. Default: \u003cspan pulumi-lang-nodejs=\"`350`\" pulumi-lang-dotnet=\"`350`\" pulumi-lang-go=\"`350`\" pulumi-lang-python=\"`350`\" pulumi-lang-yaml=\"`350`\" pulumi-lang-java=\"`350`\"\u003e`350`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "awsx:lb:TargetGroup": {
            "description": "Provides a Target Group resource for use with Load Balancer resources.\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`aws.alb.TargetGroup`\" pulumi-lang-dotnet=\"`aws.alb.TargetGroup`\" pulumi-lang-go=\"`alb.TargetGroup`\" pulumi-lang-python=\"`alb.TargetGroup`\" pulumi-lang-yaml=\"`aws.alb.TargetGroup`\" pulumi-lang-java=\"`aws.alb.TargetGroup`\"\u003e`aws.alb.TargetGroup`\u003c/span\u003e is known as \u003cspan pulumi-lang-nodejs=\"`aws.lb.TargetGroup`\" pulumi-lang-dotnet=\"`aws.lb.TargetGroup`\" pulumi-lang-go=\"`lb.TargetGroup`\" pulumi-lang-python=\"`lb.TargetGroup`\" pulumi-lang-yaml=\"`aws.lb.TargetGroup`\" pulumi-lang-java=\"`aws.lb.TargetGroup`\"\u003e`aws.lb.TargetGroup`\u003c/span\u003e. The functionality is identical.\n\n## Example Usage\n\n### Instance Target Group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst main = new aws.ec2.Vpc(\"main\", {cidrBlock: \"10.0.0.0/16\"});\nconst test = new aws.lb.TargetGroup(\"test\", {\n    name: \"tf-example-lb-tg\",\n    port: 80,\n    protocol: \"HTTP\",\n    vpcId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmain = aws.ec2.Vpc(\"main\", cidr_block=\"10.0.0.0/16\")\ntest = aws.lb.TargetGroup(\"test\",\n    name=\"tf-example-lb-tg\",\n    port=80,\n    protocol=\"HTTP\",\n    vpc_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Aws.Ec2.Vpc(\"main\", new()\n    {\n        CidrBlock = \"10.0.0.0/16\",\n    });\n\n    var test = new Aws.LB.TargetGroup(\"test\", new()\n    {\n        Name = \"tf-example-lb-tg\",\n        Port = 80,\n        Protocol = \"HTTP\",\n        VpcId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := ec2.NewVpc(ctx, \"main\", \u0026ec2.VpcArgs{\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewTargetGroup(ctx, \"test\", \u0026lb.TargetGroupArgs{\n\t\t\tName:     pulumi.String(\"tf-example-lb-tg\"),\n\t\t\tPort:     pulumi.Int(80),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tVpcId:    main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Vpc;\nimport com.pulumi.aws.ec2.VpcArgs;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new Vpc(\"main\", VpcArgs.builder()\n            .cidrBlock(\"10.0.0.0/16\")\n            .build());\n\n        var test = new TargetGroup(\"test\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-tg\")\n            .port(80)\n            .protocol(\"HTTP\")\n            .vpcId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-tg\n      port: 80\n      protocol: HTTP\n      vpcId: ${main.id}\n  main:\n    type: aws:ec2:Vpc\n    properties:\n      cidrBlock: 10.0.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### IP Target Group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst main = new aws.ec2.Vpc(\"main\", {cidrBlock: \"10.0.0.0/16\"});\nconst ip_example = new aws.lb.TargetGroup(\"ip-example\", {\n    name: \"tf-example-lb-tg\",\n    port: 80,\n    protocol: \"HTTP\",\n    targetType: \"ip\",\n    vpcId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nmain = aws.ec2.Vpc(\"main\", cidr_block=\"10.0.0.0/16\")\nip_example = aws.lb.TargetGroup(\"ip-example\",\n    name=\"tf-example-lb-tg\",\n    port=80,\n    protocol=\"HTTP\",\n    target_type=\"ip\",\n    vpc_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Aws.Ec2.Vpc(\"main\", new()\n    {\n        CidrBlock = \"10.0.0.0/16\",\n    });\n\n    var ip_example = new Aws.LB.TargetGroup(\"ip-example\", new()\n    {\n        Name = \"tf-example-lb-tg\",\n        Port = 80,\n        Protocol = \"HTTP\",\n        TargetType = \"ip\",\n        VpcId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := ec2.NewVpc(ctx, \"main\", \u0026ec2.VpcArgs{\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewTargetGroup(ctx, \"ip-example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:       pulumi.String(\"tf-example-lb-tg\"),\n\t\t\tPort:       pulumi.Int(80),\n\t\t\tProtocol:   pulumi.String(\"HTTP\"),\n\t\t\tTargetType: pulumi.String(\"ip\"),\n\t\t\tVpcId:      main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.ec2.Vpc;\nimport com.pulumi.aws.ec2.VpcArgs;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new Vpc(\"main\", VpcArgs.builder()\n            .cidrBlock(\"10.0.0.0/16\")\n            .build());\n\n        var ip_example = new TargetGroup(\"ip-example\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-tg\")\n            .port(80)\n            .protocol(\"HTTP\")\n            .targetType(\"ip\")\n            .vpcId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip-example:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-tg\n      port: 80\n      protocol: HTTP\n      targetType: ip\n      vpcId: ${main.id}\n  main:\n    type: aws:ec2:Vpc\n    properties:\n      cidrBlock: 10.0.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Lambda Target Group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst lambda_example = new aws.lb.TargetGroup(\"lambda-example\", {\n    name: \"tf-example-lb-tg\",\n    targetType: \"lambda\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nlambda_example = aws.lb.TargetGroup(\"lambda-example\",\n    name=\"tf-example-lb-tg\",\n    target_type=\"lambda\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lambda_example = new Aws.LB.TargetGroup(\"lambda-example\", new()\n    {\n        Name = \"tf-example-lb-tg\",\n        TargetType = \"lambda\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewTargetGroup(ctx, \"lambda-example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:       pulumi.String(\"tf-example-lb-tg\"),\n\t\t\tTargetType: pulumi.String(\"lambda\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var lambda_example = new TargetGroup(\"lambda-example\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-tg\")\n            .targetType(\"lambda\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  lambda-example:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-tg\n      targetType: lambda\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ALB Target Group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst alb_example = new aws.lb.TargetGroup(\"alb-example\", {\n    name: \"tf-example-lb-alb-tg\",\n    targetType: \"alb\",\n    port: 80,\n    protocol: \"TCP\",\n    vpcId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nalb_example = aws.lb.TargetGroup(\"alb-example\",\n    name=\"tf-example-lb-alb-tg\",\n    target_type=\"alb\",\n    port=80,\n    protocol=\"TCP\",\n    vpc_id=main[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var alb_example = new Aws.LB.TargetGroup(\"alb-example\", new()\n    {\n        Name = \"tf-example-lb-alb-tg\",\n        TargetType = \"alb\",\n        Port = 80,\n        Protocol = \"TCP\",\n        VpcId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewTargetGroup(ctx, \"alb-example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:       pulumi.String(\"tf-example-lb-alb-tg\"),\n\t\t\tTargetType: pulumi.String(\"alb\"),\n\t\t\tPort:       pulumi.Int(80),\n\t\t\tProtocol:   pulumi.String(\"TCP\"),\n\t\t\tVpcId:      pulumi.Any(main.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var alb_example = new TargetGroup(\"alb-example\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-alb-tg\")\n            .targetType(\"alb\")\n            .port(80)\n            .protocol(\"TCP\")\n            .vpcId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  alb-example:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-alb-tg\n      targetType: alb\n      port: 80\n      protocol: TCP\n      vpcId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Target group with unhealthy connection termination disabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst tcp_example = new aws.lb.TargetGroup(\"tcp-example\", {\n    name: \"tf-example-lb-nlb-tg\",\n    port: 25,\n    protocol: \"TCP\",\n    vpcId: main.id,\n    targetHealthStates: [{\n        enableUnhealthyConnectionTermination: false,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntcp_example = aws.lb.TargetGroup(\"tcp-example\",\n    name=\"tf-example-lb-nlb-tg\",\n    port=25,\n    protocol=\"TCP\",\n    vpc_id=main[\"id\"],\n    target_health_states=[{\n        \"enable_unhealthy_connection_termination\": False,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tcp_example = new Aws.LB.TargetGroup(\"tcp-example\", new()\n    {\n        Name = \"tf-example-lb-nlb-tg\",\n        Port = 25,\n        Protocol = \"TCP\",\n        VpcId = main.Id,\n        TargetHealthStates = new[]\n        {\n            new Aws.LB.Inputs.TargetGroupTargetHealthStateArgs\n            {\n                EnableUnhealthyConnectionTermination = false,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewTargetGroup(ctx, \"tcp-example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:     pulumi.String(\"tf-example-lb-nlb-tg\"),\n\t\t\tPort:     pulumi.Int(25),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tVpcId:    pulumi.Any(main.Id),\n\t\t\tTargetHealthStates: lb.TargetGroupTargetHealthStateArray{\n\t\t\t\t\u0026lb.TargetGroupTargetHealthStateArgs{\n\t\t\t\t\tEnableUnhealthyConnectionTermination: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport com.pulumi.aws.lb.inputs.TargetGroupTargetHealthStateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var tcp_example = new TargetGroup(\"tcp-example\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-nlb-tg\")\n            .port(25)\n            .protocol(\"TCP\")\n            .vpcId(main.id())\n            .targetHealthStates(TargetGroupTargetHealthStateArgs.builder()\n                .enableUnhealthyConnectionTermination(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tcp-example:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-nlb-tg\n      port: 25\n      protocol: TCP\n      vpcId: ${main.id}\n      targetHealthStates:\n        - enableUnhealthyConnectionTermination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Target group with health requirements\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst tcp_example = new aws.lb.TargetGroup(\"tcp-example\", {\n    name: \"tf-example-lb-nlb-tg\",\n    port: 80,\n    protocol: \"TCP\",\n    vpcId: main.id,\n    targetGroupHealth: {\n        dnsFailover: {\n            minimumHealthyTargetsCount: \"1\",\n            minimumHealthyTargetsPercentage: \"off\",\n        },\n        unhealthyStateRouting: {\n            minimumHealthyTargetsCount: 1,\n            minimumHealthyTargetsPercentage: \"off\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntcp_example = aws.lb.TargetGroup(\"tcp-example\",\n    name=\"tf-example-lb-nlb-tg\",\n    port=80,\n    protocol=\"TCP\",\n    vpc_id=main[\"id\"],\n    target_group_health={\n        \"dns_failover\": {\n            \"minimum_healthy_targets_count\": \"1\",\n            \"minimum_healthy_targets_percentage\": \"off\",\n        },\n        \"unhealthy_state_routing\": {\n            \"minimum_healthy_targets_count\": 1,\n            \"minimum_healthy_targets_percentage\": \"off\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tcp_example = new Aws.LB.TargetGroup(\"tcp-example\", new()\n    {\n        Name = \"tf-example-lb-nlb-tg\",\n        Port = 80,\n        Protocol = \"TCP\",\n        VpcId = main.Id,\n        TargetGroupHealth = new Aws.LB.Inputs.TargetGroupTargetGroupHealthArgs\n        {\n            DnsFailover = new Aws.LB.Inputs.TargetGroupTargetGroupHealthDnsFailoverArgs\n            {\n                MinimumHealthyTargetsCount = \"1\",\n                MinimumHealthyTargetsPercentage = \"off\",\n            },\n            UnhealthyStateRouting = new Aws.LB.Inputs.TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs\n            {\n                MinimumHealthyTargetsCount = 1,\n                MinimumHealthyTargetsPercentage = \"off\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := lb.NewTargetGroup(ctx, \"tcp-example\", \u0026lb.TargetGroupArgs{\n\t\t\tName:     pulumi.String(\"tf-example-lb-nlb-tg\"),\n\t\t\tPort:     pulumi.Int(80),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tVpcId:    pulumi.Any(main.Id),\n\t\t\tTargetGroupHealth: \u0026lb.TargetGroupTargetGroupHealthArgs{\n\t\t\t\tDnsFailover: \u0026lb.TargetGroupTargetGroupHealthDnsFailoverArgs{\n\t\t\t\t\tMinimumHealthyTargetsCount:      pulumi.String(\"1\"),\n\t\t\t\t\tMinimumHealthyTargetsPercentage: pulumi.String(\"off\"),\n\t\t\t\t},\n\t\t\t\tUnhealthyStateRouting: \u0026lb.TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs{\n\t\t\t\t\tMinimumHealthyTargetsCount:      pulumi.Int(1),\n\t\t\t\t\tMinimumHealthyTargetsPercentage: pulumi.String(\"off\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.lb.TargetGroup;\nimport com.pulumi.aws.lb.TargetGroupArgs;\nimport com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthArgs;\nimport com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthDnsFailoverArgs;\nimport com.pulumi.aws.lb.inputs.TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var tcp_example = new TargetGroup(\"tcp-example\", TargetGroupArgs.builder()\n            .name(\"tf-example-lb-nlb-tg\")\n            .port(80)\n            .protocol(\"TCP\")\n            .vpcId(main.id())\n            .targetGroupHealth(TargetGroupTargetGroupHealthArgs.builder()\n                .dnsFailover(TargetGroupTargetGroupHealthDnsFailoverArgs.builder()\n                    .minimumHealthyTargetsCount(\"1\")\n                    .minimumHealthyTargetsPercentage(\"off\")\n                    .build())\n                .unhealthyStateRouting(TargetGroupTargetGroupHealthUnhealthyStateRoutingArgs.builder()\n                    .minimumHealthyTargetsCount(1)\n                    .minimumHealthyTargetsPercentage(\"off\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tcp-example:\n    type: aws:lb:TargetGroup\n    properties:\n      name: tf-example-lb-nlb-tg\n      port: 80\n      protocol: TCP\n      vpcId: ${main.id}\n      targetGroupHealth:\n        dnsFailover:\n          minimumHealthyTargetsCount: '1'\n          minimumHealthyTargetsPercentage: off\n        unhealthyStateRouting:\n          minimumHealthyTargetsCount: '1'\n          minimumHealthyTargetsPercentage: off\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Identity Schema\n\n#### Required\n\n- `arn` (String) Amazon Resource Name (ARN) of the target group.\n\nUsing `pulumi import`, import Target Groups using their ARN. For example:\n\n% pulumi import aws_lb_target_group.app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314\n\n",
            "properties": {
                "connectionTermination": {
                    "type": "boolean",
                    "description": "Whether to terminate connections at the end of the deregistration timeout on Network Load Balancers. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#deregistration-delay) for more information. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "deregistrationDelay": {
                    "type": "integer",
                    "description": "Amount time for Elastic Load Balancing to wait before changing the state of a deregistering target from draining to unused. The range is 0-3600 seconds. The default value is 300 seconds.\n"
                },
                "healthCheck": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/TargetGroupHealthCheck:TargetGroupHealthCheck",
                    "description": "Health Check configuration block. Detailed below.\n"
                },
                "ipAddressType": {
                    "type": "string",
                    "description": "The type of IP addresses used by the target group, only supported when target type is set to \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e. Possible values are \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "lambdaMultiValueHeadersEnabled": {
                    "type": "boolean",
                    "description": "Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "loadBalancingAlgorithmType": {
                    "type": "string",
                    "description": "Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`leastOutstandingRequests`\" pulumi-lang-dotnet=\"`LeastOutstandingRequests`\" pulumi-lang-go=\"`leastOutstandingRequests`\" pulumi-lang-python=\"`least_outstanding_requests`\" pulumi-lang-yaml=\"`leastOutstandingRequests`\" pulumi-lang-java=\"`leastOutstandingRequests`\"\u003e`least_outstanding_requests`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`weightedRandom`\" pulumi-lang-dotnet=\"`WeightedRandom`\" pulumi-lang-go=\"`weightedRandom`\" pulumi-lang-python=\"`weighted_random`\" pulumi-lang-yaml=\"`weightedRandom`\" pulumi-lang-java=\"`weightedRandom`\"\u003e`weighted_random`\u003c/span\u003e. The default is \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e.\n"
                },
                "loadBalancingAnomalyMitigation": {
                    "type": "string",
                    "description": "Determines whether to enable target anomaly mitigation.  Target anomaly mitigation is only supported by the \u003cspan pulumi-lang-nodejs=\"`weightedRandom`\" pulumi-lang-dotnet=\"`WeightedRandom`\" pulumi-lang-go=\"`weightedRandom`\" pulumi-lang-python=\"`weighted_random`\" pulumi-lang-yaml=\"`weightedRandom`\" pulumi-lang-java=\"`weightedRandom`\"\u003e`weighted_random`\u003c/span\u003e load balancing algorithm type.  See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#automatic-target-weights) for more information.  The value is `\"on\"` or `\"off\"`. The default is `\"off\"`.\n"
                },
                "loadBalancingCrossZoneEnabled": {
                    "type": "string",
                    "description": "Indicates whether cross zone load balancing is enabled. The value is `\"true\"`, `\"false\"` or `\u003cspan pulumi-lang-nodejs=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-dotnet=\"\"UseLoadBalancerConfiguration\"\" pulumi-lang-go=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-python=\"\"use_load_balancer_configuration\"\" pulumi-lang-yaml=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-java=\"\"useLoadBalancerConfiguration\"\"\u003e\"use_load_balancer_configuration\"\u003c/span\u003e`. The default is `\u003cspan pulumi-lang-nodejs=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-dotnet=\"\"UseLoadBalancerConfiguration\"\" pulumi-lang-go=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-python=\"\"use_load_balancer_configuration\"\" pulumi-lang-yaml=\"\"useLoadBalancerConfiguration\"\" pulumi-lang-java=\"\"useLoadBalancerConfiguration\"\"\u003e\"use_load_balancer_configuration\"\u003c/span\u003e`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the target group. If omitted, this provider will assign a random, unique name. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e. Cannot be longer than 6 characters.\n",
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "Port on which targets receive traffic, unless overridden when registering a specific target. Required when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`alb`\" pulumi-lang-dotnet=\"`Alb`\" pulumi-lang-go=\"`alb`\" pulumi-lang-python=\"`alb`\" pulumi-lang-yaml=\"`alb`\" pulumi-lang-java=\"`alb`\"\u003e`alb`\u003c/span\u003e. Does not apply when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "preserveClientIp": {
                    "type": "string",
                    "description": "Whether client IP preservation is enabled. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#client-ip-preservation) for more information.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol to use for routing traffic to the targets.\nShould be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`.\nRequired when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`alb`\" pulumi-lang-dotnet=\"`Alb`\" pulumi-lang-go=\"`alb`\" pulumi-lang-python=\"`alb`\" pulumi-lang-yaml=\"`alb`\" pulumi-lang-java=\"`alb`\"\u003e`alb`\u003c/span\u003e.\nDoes not apply when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "protocolVersion": {
                    "type": "string",
                    "description": "Only applicable when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is `HTTP` or `HTTPS`. The protocol version. Specify `GRPC` to send requests to targets using gRPC. Specify `HTTP2` to send requests to targets using HTTP/2. The default is `HTTP1`, which sends requests to targets using HTTP/1.1\n",
                    "willReplaceOnChanges": true
                },
                "proxyProtocolV2": {
                    "type": "boolean",
                    "description": "Whether to enable support for proxy protocol v2 on Network Load Balancers. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#proxy-protocol) for more information. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "slowStart": {
                    "type": "integer",
                    "description": "Amount time for targets to warm up before the load balancer sends them a full share of requests. The range is 30-900 seconds or 0 to disable. The default value is 0 seconds.\n"
                },
                "stickiness": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/TargetGroupStickiness:TargetGroupStickiness",
                    "description": "Stickiness configuration block. Detailed below.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "targetControlPort": {
                    "type": "integer",
                    "description": "Port on which the target control agent and application load balancer exchange management traffic for the target optimizer feature. Only applicable for Application Load Balancer target groups when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "targetFailovers": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/TargetGroupTargetFailover:TargetGroupTargetFailover"
                    },
                    "description": "Target failover block. Only applicable for Gateway Load Balancer target groups. See\u003cspan pulumi-lang-nodejs=\" targetFailover \" pulumi-lang-dotnet=\" TargetFailover \" pulumi-lang-go=\" targetFailover \" pulumi-lang-python=\" target_failover \" pulumi-lang-yaml=\" targetFailover \" pulumi-lang-java=\" targetFailover \"\u003e target_failover \u003c/span\u003efor more information.\n"
                },
                "targetGroupHealth": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/TargetGroupTargetGroupHealth:TargetGroupTargetGroupHealth",
                    "description": "Target health requirements block. See\u003cspan pulumi-lang-nodejs=\" targetGroupHealth \" pulumi-lang-dotnet=\" TargetGroupHealth \" pulumi-lang-go=\" targetGroupHealth \" pulumi-lang-python=\" target_group_health \" pulumi-lang-yaml=\" targetGroupHealth \" pulumi-lang-java=\" targetGroupHealth \"\u003e target_group_health \u003c/span\u003efor more information.\n"
                },
                "targetHealthStates": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/TargetGroupTargetHealthState:TargetGroupTargetHealthState"
                    },
                    "description": "Target health state block. Only applicable for Network Load Balancer target groups when \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e is `TCP` or `TLS`. See\u003cspan pulumi-lang-nodejs=\" targetHealthState \" pulumi-lang-dotnet=\" TargetHealthState \" pulumi-lang-go=\" targetHealthState \" pulumi-lang-python=\" target_health_state \" pulumi-lang-yaml=\" targetHealthState \" pulumi-lang-java=\" targetHealthState \"\u003e target_health_state \u003c/span\u003efor more information.\n"
                },
                "targetType": {
                    "type": "string",
                    "description": "Type of target that you must specify when registering targets with this target group.\nSee [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values.\nThe default is \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e.\n\nNote that you can't specify targets for a target group using both instance IDs and IP addresses.\n\nIf the target type is \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, specify IP addresses from the subnets of the virtual private cloud (VPC) for the target group, the RFC 1918 range (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16), and the RFC 6598 range (100.64.0.0/10). You can't specify publicly routable IP addresses.\n\nNetwork Load Balancers do not support the \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e target type.\n\nApplication Load Balancers do not support the \u003cspan pulumi-lang-nodejs=\"`alb`\" pulumi-lang-dotnet=\"`Alb`\" pulumi-lang-go=\"`alb`\" pulumi-lang-python=\"`alb`\" pulumi-lang-yaml=\"`alb`\" pulumi-lang-java=\"`alb`\"\u003e`alb`\u003c/span\u003e target type.\n",
                    "willReplaceOnChanges": true
                },
                "vpcId": {
                    "type": "string",
                    "description": "Identifier of the VPC in which to create the target group. Required when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`alb`\" pulumi-lang-dotnet=\"`Alb`\" pulumi-lang-go=\"`alb`\" pulumi-lang-python=\"`alb`\" pulumi-lang-yaml=\"`alb`\" pulumi-lang-java=\"`alb`\"\u003e`alb`\u003c/span\u003e. Does not apply when \u003cspan pulumi-lang-nodejs=\"`targetType`\" pulumi-lang-dotnet=\"`TargetType`\" pulumi-lang-go=\"`targetType`\" pulumi-lang-python=\"`target_type`\" pulumi-lang-yaml=\"`targetType`\" pulumi-lang-java=\"`targetType`\"\u003e`target_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        }
    },
    "provider": {},
    "resources": {
        "awsx:cloudtrail:Trail": {
            "properties": {
                "bucket": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:s3%2Fbucket:Bucket",
                    "description": "The managed S3 Bucket where the Trail will place its logs."
                },
                "logGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup",
                    "description": "The managed Cloudwatch Log Group."
                },
                "trail": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:cloudtrail%2Ftrail:Trail",
                    "description": "The CloudTrail Trail.",
                    "language": {
                        "csharp": {
                            "name": "AwsTrail"
                        }
                    }
                }
            },
            "required": [
                "trail"
            ],
            "inputProperties": {
                "advancedEventSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:cloudtrail/TrailAdvancedEventSelector:TrailAdvancedEventSelector"
                    },
                    "description": "Specifies an advanced event selector for enabling data event logging. Fields documented below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`eventSelector`\" pulumi-lang-dotnet=\"`EventSelector`\" pulumi-lang-go=\"`eventSelector`\" pulumi-lang-python=\"`event_selector`\" pulumi-lang-yaml=\"`eventSelector`\" pulumi-lang-java=\"`eventSelector`\"\u003e`event_selector`\u003c/span\u003e.\n"
                },
                "cloudWatchLogsGroup": {
                    "$ref": "#/types/awsx:awsx:OptionalLogGroup",
                    "plain": true,
                    "description": "Log group to which CloudTrail logs will be delivered."
                },
                "enableLogFileValidation": {
                    "type": "boolean",
                    "description": "Whether log file integrity validation is enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "Enables logging for the trail. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, logging is started by calling the [`StartLogging`](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_StartLogging.html) API. When set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, logging is stopped by calling the [`StopLogging`](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_StopLogging.html) API. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "eventSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:cloudtrail/TrailEventSelector:TrailEventSelector"
                    },
                    "description": "Specifies an event selector for enabling data event logging. Fields documented below. Please note the [CloudTrail limits](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/WhatIsCloudTrail-Limits.html) when configuring these. Conflicts with \u003cspan pulumi-lang-nodejs=\"`advancedEventSelector`\" pulumi-lang-dotnet=\"`AdvancedEventSelector`\" pulumi-lang-go=\"`advancedEventSelector`\" pulumi-lang-python=\"`advanced_event_selector`\" pulumi-lang-yaml=\"`advancedEventSelector`\" pulumi-lang-java=\"`advancedEventSelector`\"\u003e`advanced_event_selector`\u003c/span\u003e.\n"
                },
                "includeGlobalServiceEvents": {
                    "type": "boolean",
                    "description": "Whether the trail is publishing events from global services such as IAM to the log files. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "insightSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:cloudtrail/TrailInsightSelector:TrailInsightSelector"
                    },
                    "description": "Configuration block for identifying unusual operational activity. See details below.\n"
                },
                "isMultiRegionTrail": {
                    "type": "boolean",
                    "description": "Whether the trail is created in the current region or in all regions. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "isOrganizationTrail": {
                    "type": "boolean",
                    "description": "Whether the trail is an AWS Organizations trail. Organization trails log events for the master account and all member accounts. Can only be created in the organization master account. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "kmsKeyId": {
                    "type": "string",
                    "description": "KMS key ARN to use to encrypt the logs delivered by CloudTrail.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the trail.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "s3Bucket": {
                    "$ref": "#/types/awsx:awsx:RequiredBucket",
                    "plain": true,
                    "description": "S3 bucket designated for publishing log files."
                },
                "s3KeyPrefix": {
                    "type": "string",
                    "description": "S3 key prefix that follows the name of the bucket you have designated for log file delivery.\n"
                },
                "snsTopicName": {
                    "type": "string",
                    "description": "Name of the Amazon SNS topic defined for notification of log file delivery. Specify the SNS topic ARN if it resides in another region.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the trail. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                }
            },
            "isComponent": true
        },
        "awsx:ec2:DefaultVpc": {
            "description": "Pseudo resource representing the default VPC and associated subnets for an account and region. This does not create any resources. This will be replaced with `getDefaultVpc` in the future.",
            "properties": {
                "privateSubnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "publicSubnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC ID for the default VPC"
                }
            },
            "required": [
                "vpcId",
                "publicSubnetIds",
                "privateSubnetIds"
            ],
            "isComponent": true
        },
        "awsx:ec2:Vpc": {
            "description": "The VPC component provides a VPC with configured subnets and NAT gateways.\n\n{{% examples %}}\n\n## Example Usage\n\n{{% example %}}\n\nBasic usage:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as awsx from \"@pulumi/awsx\";\n\nconst vpc = new awsx.ec2.Vpc(\"vpc\", {});\nexport const vpcId = vpc.vpcId;\nexport const vpcPrivateSubnetIds = vpc.privateSubnetIds;\nexport const vpcPublicSubnetIds = vpc.publicSubnetIds;\n```\n\n```python\nimport pulumi\nimport pulumi_awsx as awsx\n\nvpc = awsx.ec2.Vpc(\"vpc\")\npulumi.export(\"vpcId\", vpc.vpc_id)\npulumi.export(\"vpcPrivateSubnetIds\", vpc.private_subnet_ids)\npulumi.export(\"vpcPublicSubnetIds\", vpc.public_subnet_ids)\n```\n\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Awsx = Pulumi.Awsx;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc = new Awsx.Ec2.Vpc(\"vpc\");\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"vpcId\"] = vpc.VpcId,\n        [\"vpcPrivateSubnetIds\"] = vpc.PrivateSubnetIds,\n        [\"vpcPublicSubnetIds\"] = vpc.PublicSubnetIds,\n    };\n});\n```\n\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-awsx/sdk/v3/go/awsx/ec2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := ec2.NewVpc(ctx, \"vpc\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"vpcId\", vpc.VpcId)\n\t\tctx.Export(\"vpcPrivateSubnetIds\", vpc.PrivateSubnetIds)\n\t\tctx.Export(\"vpcPublicSubnetIds\", vpc.PublicSubnetIds)\n\t\treturn nil\n\t})\n}\n```\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.awsx.ec2.Vpc;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vpc = new Vpc(\"vpc\");\n\n        ctx.export(\"vpcId\", vpc.vpcId());\n        ctx.export(\"vpcPrivateSubnetIds\", vpc.privateSubnetIds());\n        ctx.export(\"vpcPublicSubnetIds\", vpc.publicSubnetIds());\n    }\n}\n```\n\n```yaml\nresources:\n  vpc:\n    type: awsx:ec2:Vpc\noutputs:\n  vpcId: ${vpc.vpcId}\n  vpcPrivateSubnetIds: ${vpc.privateSubnetIds}\n  vpcPublicSubnetIds: ${vpc.publicSubnetIds}\n```\n\n{{% /example %}}\n{{% /examples %}}\n\n## Subnet Layout Strategies\n\nIf no subnet arguments are passed, then a public and private subnet will be created in each AZ with default sizing. The layout of these subnets can be customised by specifying additional arguments.\n\nAll strategies are designed to help build a uniform layout of subnets each each availability zone.\n\nIf no strategy is specified, \"Legacy\" will be used for backward compatibility reasons. In the next major version this will change to defaulting to \"Auto\".\n\n### Auto\n\nThe \"Auto\" strategy divides the VPC space evenly between the availability zones. Within each availability zone it allocates each subnet in the order they were specified. If a CIDR mask or size was not specified it will default to an even division of the availability zone range. If subnets have different sizes, spaces will be automatically added to ensure subnets don't overlap (e.g. where a previous subnet is smaller than the next).\n\n### Exact\n\nThe \"Exact\" strategy is the same as \"Auto\" with the additional requirement to explicitly specify what the whole of each zone's range will be used for. Where you expect to have a gap between or after subnets, these must be passed using the subnet specification type \"Unused\" to show all space has been properly accounted for.\n\n### Explicit CIDR Blocks\n\nIf you prefer to do your CIDR block calculations yourself, you can specify a list of CIDR blocks for each subnet spec which it will be allocated for in each availability zone. If using explicit layouts, all subnet specs must be declared with explicit CIDR blocks. Each list of CIDR blocks must have the same length as the number of availability zones for the VPC.\n\n### Legacy\n\nThe \"Legacy\" works similarly to the \"Auto\" strategy except that within each availability zone it allocates the private subnet first, followed by the public subnets, and lastly the isolated subnets. The order of subnet specifications of the same type can be changed, but the ordering of private, public, isolated is not overridable. For more flexibility we recommend moving to the \"Auto\" strategy. The output property `subnetLayout` shows the configuration required if specifying the \"Auto\" strategy to maintain the current layout.\n",
            "properties": {
                "eips": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2feip:Eip"
                    },
                    "description": "The EIPs for any NAT Gateways for the VPC. If no NAT Gateways are specified, this will be an empty list."
                },
                "internetGateway": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2finternetGateway:InternetGateway",
                    "description": "The Internet Gateway for the VPC."
                },
                "isolatedSubnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "natGateways": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fnatGateway:NatGateway"
                    },
                    "description": "The NAT Gateways for the VPC. If no NAT Gateways are specified, this will be an empty list."
                },
                "privateSubnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "publicSubnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "routeTableAssociations": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2frouteTableAssociation:RouteTableAssociation"
                    },
                    "description": "The Route Table Associations for the VPC."
                },
                "routeTables": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2frouteTable:RouteTable"
                    },
                    "description": "The Route Tables for the VPC."
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2froute:Route"
                    },
                    "description": "The Routes for the VPC."
                },
                "subnetLayout": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ec2:ResolvedSubnetSpec"
                    },
                    "description": "The resolved subnet specs layout deployed to each availability zone."
                },
                "subnets": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet"
                    },
                    "description": "The VPC's subnets."
                },
                "vpc": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fvpc:Vpc",
                    "description": "The VPC.",
                    "language": {
                        "csharp": {
                            "name": "AwsVpc"
                        }
                    }
                },
                "vpcEndpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fvpcEndpoint:VpcEndpoint"
                    },
                    "description": "The VPC Endpoints that are enabled"
                },
                "vpcId": {
                    "type": "string"
                }
            },
            "required": [
                "vpc",
                "subnets",
                "routeTables",
                "routeTableAssociations",
                "routes",
                "internetGateway",
                "natGateways",
                "eips",
                "subnetLayout",
                "publicSubnetIds",
                "privateSubnetIds",
                "isolatedSubnetIds",
                "vpcId",
                "vpcEndpoints"
            ],
            "inputProperties": {
                "assignGeneratedIpv6CidrBlock": {
                    "type": "boolean",
                    "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Conflicts with \u003cspan pulumi-lang-nodejs=\"`ipv6IpamPoolId`\" pulumi-lang-dotnet=\"`Ipv6IpamPoolId`\" pulumi-lang-go=\"`ipv6IpamPoolId`\" pulumi-lang-python=\"`ipv6_ipam_pool_id`\" pulumi-lang-yaml=\"`ipv6IpamPoolId`\" pulumi-lang-java=\"`ipv6IpamPoolId`\"\u003e`ipv6_ipam_pool_id`\u003c/span\u003e\n"
                },
                "availabilityZoneCidrMask": {
                    "type": "integer",
                    "plain": true,
                    "description": "The netmask for each available zone to be aligned to. This is optional, the default value is inferred based on an even distribution of available space from the VPC's CIDR block after being divided evenly by the number of availability zones."
                },
                "availabilityZoneNames": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "plain": true
                    },
                    "plain": true,
                    "description": "A list of availability zone names to which the subnets defined in subnetSpecs will be deployed. Optional, defaults to the first 3 AZs in the current region."
                },
                "cidrBlock": {
                    "type": "string",
                    "plain": true,
                    "description": "The CIDR block for the VPC. Optional. Defaults to 10.0.0.0/16."
                },
                "enableDnsHostnames": {
                    "type": "boolean",
                    "description": "A boolean flag to enable/disable DNS hostnames in the VPC. Defaults false.\n"
                },
                "enableDnsSupport": {
                    "type": "boolean",
                    "description": "A boolean flag to enable/disable DNS support in the VPC. Defaults to true.\n"
                },
                "enableNetworkAddressUsageMetrics": {
                    "type": "boolean",
                    "description": "Indicates whether Network Address Usage metrics are enabled for your VPC. Defaults to false.\n"
                },
                "instanceTenancy": {
                    "type": "string",
                    "description": "A tenancy option for instances launched into the VPC. Default is \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e, which ensures that EC2 instances launched in this VPC use the EC2 instance tenancy attribute specified when the EC2 instance is launched. The only other option is \u003cspan pulumi-lang-nodejs=\"`dedicated`\" pulumi-lang-dotnet=\"`Dedicated`\" pulumi-lang-go=\"`dedicated`\" pulumi-lang-python=\"`dedicated`\" pulumi-lang-yaml=\"`dedicated`\" pulumi-lang-java=\"`dedicated`\"\u003e`dedicated`\u003c/span\u003e, which ensures that EC2 instances launched in this VPC are run on dedicated tenancy instances regardless of the tenancy attribute specified at launch. This has a dedicated per region fee of $2 per hour, plus an hourly per instance usage fee.\n"
                },
                "ipv4IpamPoolId": {
                    "type": "string",
                    "description": "The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. IPAM is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across AWS Regions and accounts. Using IPAM you can monitor IP address usage throughout your AWS Organization.\n",
                    "willReplaceOnChanges": true
                },
                "ipv4NetmaskLength": {
                    "type": "integer",
                    "description": "The netmask length of the IPv4 CIDR you want to allocate to this VPC. Requires specifying a \u003cspan pulumi-lang-nodejs=\"`ipv4IpamPoolId`\" pulumi-lang-dotnet=\"`Ipv4IpamPoolId`\" pulumi-lang-go=\"`ipv4IpamPoolId`\" pulumi-lang-python=\"`ipv4_ipam_pool_id`\" pulumi-lang-yaml=\"`ipv4IpamPoolId`\" pulumi-lang-java=\"`ipv4IpamPoolId`\"\u003e`ipv4_ipam_pool_id`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6CidrBlock": {
                    "type": "string",
                    "description": "IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using \u003cspan pulumi-lang-nodejs=\"`ipv6NetmaskLength`\" pulumi-lang-dotnet=\"`Ipv6NetmaskLength`\" pulumi-lang-go=\"`ipv6NetmaskLength`\" pulumi-lang-python=\"`ipv6_netmask_length`\" pulumi-lang-yaml=\"`ipv6NetmaskLength`\" pulumi-lang-java=\"`ipv6NetmaskLength`\"\u003e`ipv6_netmask_length`\u003c/span\u003e.\n"
                },
                "ipv6CidrBlockNetworkBorderGroup": {
                    "type": "string",
                    "description": "By default when an IPv6 CIDR is assigned to a VPC a default\u003cspan pulumi-lang-nodejs=\" ipv6CidrBlockNetworkBorderGroup \" pulumi-lang-dotnet=\" Ipv6CidrBlockNetworkBorderGroup \" pulumi-lang-go=\" ipv6CidrBlockNetworkBorderGroup \" pulumi-lang-python=\" ipv6_cidr_block_network_border_group \" pulumi-lang-yaml=\" ipv6CidrBlockNetworkBorderGroup \" pulumi-lang-java=\" ipv6CidrBlockNetworkBorderGroup \"\u003e ipv6_cidr_block_network_border_group \u003c/span\u003ewill be set to the region of the VPC. This can be changed to restrict advertisement of public addresses to specific Network Border Groups such as LocalZones.\n"
                },
                "ipv6IpamPoolId": {
                    "type": "string",
                    "description": "IPAM Pool ID for a IPv6 pool. Conflicts with \u003cspan pulumi-lang-nodejs=\"`assignGeneratedIpv6CidrBlock`\" pulumi-lang-dotnet=\"`AssignGeneratedIpv6CidrBlock`\" pulumi-lang-go=\"`assignGeneratedIpv6CidrBlock`\" pulumi-lang-python=\"`assign_generated_ipv6_cidr_block`\" pulumi-lang-yaml=\"`assignGeneratedIpv6CidrBlock`\" pulumi-lang-java=\"`assignGeneratedIpv6CidrBlock`\"\u003e`assign_generated_ipv6_cidr_block`\u003c/span\u003e.\n"
                },
                "ipv6NetmaskLength": {
                    "type": "integer",
                    "description": "Netmask length to request from IPAM Pool. Conflicts with \u003cspan pulumi-lang-nodejs=\"`ipv6CidrBlock`\" pulumi-lang-dotnet=\"`Ipv6CidrBlock`\" pulumi-lang-go=\"`ipv6CidrBlock`\" pulumi-lang-python=\"`ipv6_cidr_block`\" pulumi-lang-yaml=\"`ipv6CidrBlock`\" pulumi-lang-java=\"`ipv6CidrBlock`\"\u003e`ipv6_cidr_block`\u003c/span\u003e. This can be omitted if IPAM pool as a \u003cspan pulumi-lang-nodejs=\"`allocationDefaultNetmaskLength`\" pulumi-lang-dotnet=\"`AllocationDefaultNetmaskLength`\" pulumi-lang-go=\"`allocationDefaultNetmaskLength`\" pulumi-lang-python=\"`allocation_default_netmask_length`\" pulumi-lang-yaml=\"`allocationDefaultNetmaskLength`\" pulumi-lang-java=\"`allocationDefaultNetmaskLength`\"\u003e`allocation_default_netmask_length`\u003c/span\u003e set. Valid values are from \u003cspan pulumi-lang-nodejs=\"`44`\" pulumi-lang-dotnet=\"`44`\" pulumi-lang-go=\"`44`\" pulumi-lang-python=\"`44`\" pulumi-lang-yaml=\"`44`\" pulumi-lang-java=\"`44`\"\u003e`44`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`60`\" pulumi-lang-dotnet=\"`60`\" pulumi-lang-go=\"`60`\" pulumi-lang-python=\"`60`\" pulumi-lang-yaml=\"`60`\" pulumi-lang-java=\"`60`\"\u003e`60`\u003c/span\u003e in increments of 4.\n"
                },
                "natGateways": {
                    "$ref": "#/types/awsx:ec2:NatGatewayConfiguration",
                    "plain": true,
                    "description": "Configuration for NAT Gateways. Optional. If private and public subnets are both specified, defaults to one gateway per availability zone. Otherwise, no gateways will be created."
                },
                "numberOfAvailabilityZones": {
                    "type": "integer",
                    "plain": true,
                    "description": "A number of availability zones to which the subnets defined in subnetSpecs will be deployed. Optional, defaults to the first 3 AZs in the current region."
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "subnetSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ec2:SubnetSpec",
                        "plain": true
                    },
                    "plain": true,
                    "description": "A list of subnet specs that should be deployed to each AZ specified in availabilityZoneNames. Optional. Defaults to a (smaller) public subnet and a (larger) private subnet based on the size of the CIDR block for the VPC. Private subnets are allocated CIDR block ranges first, followed by Public subnets, and Isolated subnets are allocated last."
                },
                "subnetStrategy": {
                    "$ref": "#/types/awsx:ec2:SubnetAllocationStrategy",
                    "plain": true,
                    "description": "The strategy to use when allocating subnets for the VPC. Optional. Defaults to `Legacy`."
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "vpcEndpointSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:ec2:VpcEndpointSpec",
                        "plain": true
                    },
                    "plain": true,
                    "description": "A list of VPC Endpoints specs to be deployed as part of the VPC"
                }
            },
            "isComponent": true
        },
        "awsx:ecr:Image": {
            "description": "Builds a docker image and pushes to the ECR repository",
            "properties": {
                "imageUri": {
                    "type": "string",
                    "description": "Unique identifier of the pushed image"
                }
            },
            "type": "object",
            "required": [
                "imageUri"
            ],
            "inputProperties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "An optional map of named build-time argument variables to set during the Docker build.  This flag allows you to pass built-time variables that can be accessed like environment variables inside the `RUN` instruction."
                },
                "builderVersion": {
                    "$ref": "#/types/awsx:ecr:BuilderVersion",
                    "plain": true,
                    "description": "The version of the Docker builder."
                },
                "cacheFrom": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Images to consider as cache sources"
                },
                "context": {
                    "type": "string",
                    "description": "Path to a directory to use for the Docker build context, usually the directory in which the Dockerfile resides (although dockerfile may be used to choose a custom location independent of this choice). If not specified, the context defaults to the current working directory; if a relative path is used, it is relative to the current working directory that Pulumi is evaluating."
                },
                "dockerfile": {
                    "type": "string",
                    "description": "dockerfile may be used to override the default Dockerfile name and/or location.  By default, it is assumed to be a file named Dockerfile in the root of the build context."
                },
                "imageName": {
                    "type": "string",
                    "description": "Custom name for the underlying Docker image resource. If omitted, the image tag assigned by the provider will be used"
                },
                "imageTag": {
                    "type": "string",
                    "description": "Custom image tag for the resulting docker image. If omitted a random string will be used"
                },
                "platform": {
                    "type": "string",
                    "description": "The architecture of the platform you want to build this image for, e.g. `linux/arm64`."
                },
                "registryId": {
                    "type": "string",
                    "description": "ID of the ECR registry in which to store the image.  If not provided, this will be inferred from the repository URL)"
                },
                "repositoryUrl": {
                    "type": "string",
                    "description": "Url of the repository"
                },
                "target": {
                    "type": "string",
                    "description": "The target of the dockerfile to build"
                }
            },
            "requiredInputs": [
                "repositoryUrl"
            ],
            "isComponent": true
        },
        "awsx:ecr:RegistryImage": {
            "description": "Manages the lifecycle of a docker image in a registry. You can upload images to a registry (= `docker push`) and also delete them again. In contrast to [`awsx.ecr.Image`](/registry/packages/awsx/api-docs/ecr/image/), this resource does not require to build the image, but can be used to push an existing image to an ECR repository. The image will be pushed whenever the source image changes or is updated.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Pushing an image to an ECR repository\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as awsx from \"@pulumi/awsx\";\n\nconst repository = new awsx.ecr.Repository(\"repository\", { forceDelete: true });\n\nconst preTaggedImage = new awsx.ecr.RegistryImage(\"registry-image\", {\n  repositoryUrl: repository.url,\n  sourceImage: \"my-awesome-image:v1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_awsx as awsx\n\nrepository = awsx.ecr.Repository(\"repository\", force_delete=True)\n\nregistry_image = awsx.ecr.RegistryImage(\"registry_image\",\n    repository_url=repository.url,\n    source_image=\"my-awesome-image:v1.0.0\")\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-awsx/sdk/v3/go/awsx/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trepository, err := ecr.NewRepository(ctx, \"repository\", \u0026ecr.RepositoryArgs{\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tregistryImage, err := ecr.NewRegistryImage(ctx, \"registryImage\", \u0026ecr.RegistryImageArgs{\n\t\t\tRepositoryUrl: repository.Url,\n\t\t\tSourceImage:   pulumi.String(\"my-awesome-image:v1.0.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn nil\n\t})\n}\n```\n```csharp\nusing Pulumi;\nusing Pulumi.Awsx.Ecr;\n\nreturn await Pulumi.Deployment.RunAsync(() =\u003e\n{\n    var repository = new Repository(\"repository\", new RepositoryArgs\n    {\n        ForceDelete = true,\n    });\n\n    var registryImage = new RegistryImage(\"registryImage\", new RegistryImageArgs\n    {\n        RepositoryUrl = repository.Url,\n        SourceImage = \"my-awesome-image:v1.0.0\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e{};\n});\n```\n```yaml\nname: example\nruntime: yaml\nresources:\n  repository:\n    type: awsx:ecr:Repository\n    properties:\n      forceDelete: true\n  registryImage:\n    type: awsx:ecr:RegistryImage\n    properties:\n      repositoryUrl: ${repository.url}\n      sourceImage: \"my-awesome-image:v1.0.0\"\n```\n```java\nimport com.pulumi.Pulumi;\nimport com.pulumi.awsx.ecr.Repository;\nimport com.pulumi.awsx.ecr.RepositoryArgs;\nimport com.pulumi.awsx.ecr.RegistryImage;\nimport com.pulumi.awsx.ecr.RegistryImageArgs;\n\npublic class Main {\n    public static void main(String[] args) {\n        Pulumi.run(ctx -\u003e {\n            // Create an ECR repository with force delete enabled\n            var repository = new Repository(\"repository\", RepositoryArgs.builder()\n                .forceDelete(true)\n                .build());\n\n            // Create a RegistryImage based on the ECR repository URL and source image\n            var registryImage = new RegistryImage(\"registryImage\", RegistryImageArgs.builder()\n                .repositoryUrl(repository.url())\n                .sourceImage(\"my-awesome-image:v1.0.0\")\n                .build());\n        });\n    }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n",
            "properties": {
                "image": {
                    "$ref": "/docker/v4.6.0/schema.json#/resources/docker:index%2fregistryImage:RegistryImage",
                    "description": "The underlying RegistryImage resource."
                }
            },
            "type": "object",
            "required": [
                "image"
            ],
            "inputProperties": {
                "insecureSkipVerify": {
                    "type": "boolean",
                    "description": "If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false`\n"
                },
                "keepRemotely": {
                    "type": "boolean",
                    "description": "If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false`\n"
                },
                "repositoryUrl": {
                    "type": "string",
                    "description": "The URL of the repository (in the form aws_account_id.dkr.ecr.region.amazonaws.com/repositoryName)."
                },
                "sourceImage": {
                    "type": "string",
                    "description": "The source image to push to the registry."
                },
                "tag": {
                    "type": "string",
                    "description": "The tag to use for the pushed image. If not provided, it defaults to `latest`."
                },
                "triggers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of arbitrary strings that, when changed, will force the `docker.RegistryImage` resource to be replaced. This can be used to repush a local image\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "repositoryUrl",
                "sourceImage"
            ],
            "isComponent": true
        },
        "awsx:ecr:Repository": {
            "description": "A [Repository] represents an [aws.ecr.Repository] along with an associated [LifecyclePolicy] controlling how images are retained in the repo. \n\nDocker images can be built and pushed to the repo using the [buildAndPushImage] method.  This will call into the `@pulumi/docker/buildAndPushImage` function using this repo as the appropriate destination registry.",
            "properties": {
                "lifecyclePolicy": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecr%2flifecyclePolicy:LifecyclePolicy",
                    "description": "Underlying repository lifecycle policy"
                },
                "repository": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecr%2frepository:Repository",
                    "description": "Underlying Repository resource",
                    "language": {
                        "csharp": {
                            "name": "AwsRepository"
                        }
                    }
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the repository (in the form aws_account_id.dkr.ecr.region.amazonaws.com/repositoryName).\n"
                }
            },
            "type": "object",
            "required": [
                "repository",
                "url"
            ],
            "inputProperties": {
                "encryptionConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecr/RepositoryEncryptionConfiguration:RepositoryEncryptionConfiguration"
                    },
                    "description": "Encryption configuration for the repository. See below for schema.\n",
                    "willReplaceOnChanges": true
                },
                "forceDelete": {
                    "type": "boolean",
                    "description": "If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, will delete the repository even if it contains images.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "imageScanningConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecr/RepositoryImageScanningConfiguration:RepositoryImageScanningConfiguration",
                    "description": "Configuration block that defines image scanning configuration for the repository. By default, image scanning must be manually triggered. See the [ECR User Guide](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html) for more information about image scanning.\n"
                },
                "imageTagMutability": {
                    "type": "string",
                    "description": "The tag mutability setting for the repository. Must be one of: `MUTABLE`, `IMMUTABLE`, `IMMUTABLE_WITH_EXCLUSION`, or `MUTABLE_WITH_EXCLUSION`. Defaults to `MUTABLE`.\n"
                },
                "imageTagMutabilityExclusionFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecr/RepositoryImageTagMutabilityExclusionFilter:RepositoryImageTagMutabilityExclusionFilter"
                    },
                    "description": "Configuration block that defines filters to specify which image tags can override the default tag mutability setting. Only applicable when \u003cspan pulumi-lang-nodejs=\"`imageTagMutability`\" pulumi-lang-dotnet=\"`ImageTagMutability`\" pulumi-lang-go=\"`imageTagMutability`\" pulumi-lang-python=\"`image_tag_mutability`\" pulumi-lang-yaml=\"`imageTagMutability`\" pulumi-lang-java=\"`imageTagMutability`\"\u003e`image_tag_mutability`\u003c/span\u003e is set to `IMMUTABLE_WITH_EXCLUSION` or `MUTABLE_WITH_EXCLUSION`. See below for schema.\n"
                },
                "lifecyclePolicy": {
                    "$ref": "#/types/awsx:ecr:lifecyclePolicy",
                    "plain": true,
                    "description": "A lifecycle policy consists of one or more rules that determine which images in a repository should be expired. If not provided, this will default to untagged images expiring after 1 day."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the repository.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                }
            },
            "isComponent": true
        },
        "awsx:ecs:EC2Service": {
            "description": "Create an ECS Service resource for EC2 with the given unique name, arguments, and options.\nCreates Task definition if `taskDefinitionArgs` is specified.",
            "properties": {
                "service": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2fservice:Service",
                    "description": "Underlying ECS Service resource"
                },
                "taskDefinition": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition",
                    "description": "Underlying EC2 Task definition component resource if created from args"
                }
            },
            "required": [
                "service"
            ],
            "inputProperties": {
                "alarms": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms",
                    "description": "Information about the CloudWatch alarms. See below.\n"
                },
                "availabilityZoneRebalancing": {
                    "type": "string",
                    "description": "ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. When creating a new service, if no value is specified, it defaults to `ENABLED` if the service is compatible with AvailabilityZoneRebalancing. When updating an existing service, if no value is specified it defaults to the existing service's AvailabilityZoneRebalancing value. If the service never had an AvailabilityZoneRebalancing value set, Amazon ECS treats this as `DISABLED`.\n"
                },
                "capacityProviderStrategies": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceCapacityProviderStrategy:ServiceCapacityProviderStrategy"
                    },
                    "description": "Capacity provider strategies to use for the service. Can be one or more. Updating this argument requires \u003cspan pulumi-lang-nodejs=\"`forceNewDeployment \" pulumi-lang-dotnet=\"`ForceNewDeployment \" pulumi-lang-go=\"`forceNewDeployment \" pulumi-lang-python=\"`force_new_deployment \" pulumi-lang-yaml=\"`forceNewDeployment \" pulumi-lang-java=\"`forceNewDeployment \"\u003e`force_new_deployment \u003c/span\u003e= true`. See below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`launchType`\" pulumi-lang-dotnet=\"`LaunchType`\" pulumi-lang-go=\"`launchType`\" pulumi-lang-python=\"`launch_type`\" pulumi-lang-yaml=\"`launchType`\" pulumi-lang-java=\"`launchType`\"\u003e`launch_type`\u003c/span\u003e.\n"
                },
                "cluster": {
                    "type": "string",
                    "description": "ARN of an ECS cluster.\n",
                    "willReplaceOnChanges": true
                },
                "continueBeforeSteadyState": {
                    "type": "boolean",
                    "description": "If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`."
                },
                "deploymentCircuitBreaker": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker",
                    "description": "Configuration block for deployment circuit breaker. See below.\n"
                },
                "deploymentConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentConfiguration:ServiceDeploymentConfiguration",
                    "description": "Configuration block for deployment settings. See below.\n"
                },
                "deploymentController": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController",
                    "description": "Configuration block for deployment controller configuration. See below.\n"
                },
                "deploymentMaximumPercent": {
                    "type": "integer",
                    "description": "Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy.\n"
                },
                "deploymentMinimumHealthyPercent": {
                    "type": "integer",
                    "description": "Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment.\n"
                },
                "desiredCount": {
                    "type": "integer",
                    "description": "Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy.\n"
                },
                "enableEcsManagedTags": {
                    "type": "boolean",
                    "description": "Whether to enable Amazon ECS managed tags for the tasks within the service.\n"
                },
                "enableExecuteCommand": {
                    "type": "boolean",
                    "description": "Whether to enable Amazon ECS Exec for the tasks within the service.\n"
                },
                "forceDelete": {
                    "type": "boolean",
                    "description": "Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy.\n"
                },
                "forceNewDeployment": {
                    "type": "boolean",
                    "description": "Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy \u003cspan pulumi-lang-nodejs=\"`orderedPlacementStrategy`\" pulumi-lang-dotnet=\"`OrderedPlacementStrategy`\" pulumi-lang-go=\"`orderedPlacementStrategy`\" pulumi-lang-python=\"`ordered_placement_strategy`\" pulumi-lang-yaml=\"`orderedPlacementStrategy`\" pulumi-lang-java=\"`orderedPlacementStrategy`\"\u003e`ordered_placement_strategy`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e updates.\nWhen using the forceNewDeployment property you also need to configure the triggers property.\n"
                },
                "healthCheckGracePeriodSeconds": {
                    "type": "integer",
                    "description": "Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers.\n"
                },
                "iamRole": {
                    "type": "string",
                    "description": "ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode. If using \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here.\n",
                    "willReplaceOnChanges": true
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer"
                    },
                    "description": "Configuration block for load balancers. See below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the service (up to 255 letters, numbers, hyphens, and underscores)\n\nThe following arguments are optional:\n",
                    "willReplaceOnChanges": true
                },
                "networkConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration",
                    "description": "Network configuration for the service. This parameter is required for task definitions that use the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below.\n"
                },
                "orderedPlacementStrategies": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceOrderedPlacementStrategy:ServiceOrderedPlacementStrategy"
                    },
                    "description": "Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless \u003cspan pulumi-lang-nodejs=\"`forceNewDeployment`\" pulumi-lang-dotnet=\"`ForceNewDeployment`\" pulumi-lang-go=\"`forceNewDeployment`\" pulumi-lang-python=\"`force_new_deployment`\" pulumi-lang-yaml=\"`forceNewDeployment`\" pulumi-lang-java=\"`forceNewDeployment`\"\u003e`force_new_deployment`\u003c/span\u003e is enabled. The maximum number of \u003cspan pulumi-lang-nodejs=\"`orderedPlacementStrategy`\" pulumi-lang-dotnet=\"`OrderedPlacementStrategy`\" pulumi-lang-go=\"`orderedPlacementStrategy`\" pulumi-lang-python=\"`ordered_placement_strategy`\" pulumi-lang-yaml=\"`orderedPlacementStrategy`\" pulumi-lang-java=\"`orderedPlacementStrategy`\"\u003e`ordered_placement_strategy`\u003c/span\u003e blocks is \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e. See below.\n"
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServicePlacementConstraint:ServicePlacementConstraint"
                    },
                    "description": "Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless \u003cspan pulumi-lang-nodejs=\"`forceNewDeployment`\" pulumi-lang-dotnet=\"`ForceNewDeployment`\" pulumi-lang-go=\"`forceNewDeployment`\" pulumi-lang-python=\"`force_new_deployment`\" pulumi-lang-yaml=\"`forceNewDeployment`\" pulumi-lang-java=\"`forceNewDeployment`\"\u003e`force_new_deployment`\u003c/span\u003e is enabled. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. See below.\n"
                },
                "platformVersion": {
                    "type": "string",
                    "description": "Platform version on which to run your service. Only applicable for \u003cspan pulumi-lang-nodejs=\"`launchType`\" pulumi-lang-dotnet=\"`LaunchType`\" pulumi-lang-go=\"`launchType`\" pulumi-lang-python=\"`launch_type`\" pulumi-lang-yaml=\"`launchType`\" pulumi-lang-java=\"`launchType`\"\u003e`launch_type`\u003c/span\u003e set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).\n"
                },
                "propagateTags": {
                    "type": "string",
                    "description": "Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "schedulingStrategy": {
                    "type": "string",
                    "description": "Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html).\n",
                    "willReplaceOnChanges": true
                },
                "serviceConnectConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration",
                    "description": "ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below.\n"
                },
                "serviceRegistries": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries",
                    "description": "Service discovery registries for the service. The maximum number of \u003cspan pulumi-lang-nodejs=\"`serviceRegistries`\" pulumi-lang-dotnet=\"`ServiceRegistries`\" pulumi-lang-go=\"`serviceRegistries`\" pulumi-lang-python=\"`service_registries`\" pulumi-lang-yaml=\"`serviceRegistries`\" pulumi-lang-java=\"`serviceRegistries`\"\u003e`service_registries`\u003c/span\u003e blocks is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e. See below.\n"
                },
                "sigintRollback": {
                    "type": "boolean",
                    "description": "Whether to enable graceful termination of deployments using SIGINT signals. When enabled, allows customers to safely cancel an in-progress deployment and automatically trigger a rollback to the previous stable state. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Only applicable when using `ECS` deployment controller and requires \u003cspan pulumi-lang-nodejs=\"`waitForSteadyState \" pulumi-lang-dotnet=\"`WaitForSteadyState \" pulumi-lang-go=\"`waitForSteadyState \" pulumi-lang-python=\"`wait_for_steady_state \" pulumi-lang-yaml=\"`waitForSteadyState \" pulumi-lang-java=\"`waitForSteadyState \"\u003e`wait_for_steady_state \u003c/span\u003e= true`.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskDefinition": {
                    "type": "string",
                    "description": "Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided."
                },
                "taskDefinitionArgs": {
                    "$ref": "#/types/awsx:ecs:EC2ServiceTaskDefinition",
                    "plain": true,
                    "description": "The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided."
                },
                "triggers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `\"plantimestamp()\"`. When using the triggers property you also need to set the forceNewDeployment property to True.\n"
                },
                "volumeConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceVolumeConfiguration:ServiceVolumeConfiguration",
                    "description": "Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below.\n"
                },
                "vpcLatticeConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceVpcLatticeConfiguration:ServiceVpcLatticeConfiguration"
                    },
                    "description": "The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below.\n"
                }
            },
            "isComponent": true
        },
        "awsx:ecs:EC2TaskDefinition": {
            "description": "Create a TaskDefinition resource with the given unique name, arguments, and options.\nCreates required log-group and task \u0026 execution roles.\nPresents required Service load balancers if target group included in port mappings.",
            "properties": {
                "executionRole": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:iam%2Frole:Role",
                    "description": "Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume."
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer"
                    },
                    "description": "Computed load balancers from target groups specified of container port mappings."
                },
                "logGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup",
                    "description": "Auto-created Log Group resource for use by containers."
                },
                "taskDefinition": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition",
                    "description": "Underlying ECS Task Definition resource"
                },
                "taskRole": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:iam%2Frole:Role",
                    "description": "Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services."
                }
            },
            "required": [
                "taskDefinition",
                "loadBalancers"
            ],
            "inputProperties": {
                "container": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                    "plain": true,
                    "description": "Single container to make a TaskDefinition from.  Useful for simple cases where there aren't\nmultiple containers, especially when creating a TaskDefinition to call [run] on.\n\nEither [container] or [containers] must be provided."
                },
                "containers": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                        "plain": true
                    },
                    "plain": true,
                    "description": "All the containers to make a TaskDefinition from.  Useful when creating a Service that will\ncontain many containers within.\n\nEither [container] or [containers] must be provided."
                },
                "cpu": {
                    "type": "string",
                    "description": "The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions]"
                },
                "enableFaultInjection": {
                    "type": "boolean",
                    "description": "Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ephemeralStorage": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage",
                    "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.\n",
                    "willReplaceOnChanges": true
                },
                "executionRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "The execution role that the Amazon ECS container agent and the Docker daemon can assume.\nWill be created automatically if not defined."
                },
                "family": {
                    "type": "string",
                    "description": "An optional unique name for your task definition. If not specified, then a default will be created."
                },
                "ipcMode": {
                    "type": "string",
                    "description": "IPC resource namespace to be used for the containers in the task The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "logGroup": {
                    "$ref": "#/types/awsx:awsx:DefaultLogGroup",
                    "plain": true,
                    "description": "A set of volume blocks that containers in your task may use."
                },
                "memory": {
                    "type": "string",
                    "description": "The amount (in MiB) of memory used by the task.  If not provided, a default will be computed\nbased on the cumulative needs specified by [containerDefinitions]"
                },
                "networkMode": {
                    "type": "string",
                    "description": "Docker networking mode to use for the containers in the task. Valid values are \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bridge`\" pulumi-lang-dotnet=\"`Bridge`\" pulumi-lang-go=\"`bridge`\" pulumi-lang-python=\"`bridge`\" pulumi-lang-yaml=\"`bridge`\" pulumi-lang-java=\"`bridge`\"\u003e`bridge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "pidMode": {
                    "type": "string",
                    "description": "Process namespace to use for the containers in the task. The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint"
                    },
                    "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "proxyConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration",
                    "description": "Configuration block for the App Mesh proxy. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "runtimePlatform": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform",
                    "description": "Configuration block for\u003cspan pulumi-lang-nodejs=\" runtimePlatform \" pulumi-lang-dotnet=\" RuntimePlatform \" pulumi-lang-go=\" runtimePlatform \" pulumi-lang-python=\" runtime_platform \" pulumi-lang-yaml=\" runtimePlatform \" pulumi-lang-java=\" runtimePlatform \"\u003e runtime_platform \u003c/span\u003ethat containers in your task may use.\n",
                    "willReplaceOnChanges": true
                },
                "skipDestroy": {
                    "type": "boolean",
                    "description": "Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "IAM role that allows your Amazon ECS container task to make calls to other AWS services.\nWill be created automatically if not defined."
                },
                "trackLatest": {
                    "type": "boolean",
                    "description": "Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Useful in the event the task definition is modified outside of this resource.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume"
                    },
                    "description": "Repeatable configuration block for volumes that containers in your task may use. Detailed below.\n\n\u003e **NOTE:** Proper escaping is required for JSON field values containing quotes (`\"`) such as \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e values. If directly setting the JSON, they should be escaped as `\\\"` in the JSON,  e.g., `\"value\": \"I \\\"love\\\" escaped quotes\"`. If using a variable value, they should be escaped as `\\\\\\\"` in the variable, e.g., `value = \"I \\\\\\\"love\\\\\\\" escaped quotes\"` in the variable and `\"value\": \"${var.myvariable}\"` in the JSON.\n\n\u003e **Note:** Fault injection only works with tasks using the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e network modes. Fault injection isn't available on Windows.\n",
                    "willReplaceOnChanges": true
                }
            },
            "isComponent": true
        },
        "awsx:ecs:FargateService": {
            "description": "Create an ECS Service resource for Fargate with the given unique name, arguments, and options.\nCreates Task definition if `taskDefinitionArgs` is specified.",
            "properties": {
                "service": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2fservice:Service",
                    "description": "Underlying ECS Service resource"
                },
                "taskDefinition": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition",
                    "description": "Underlying Fargate component resource if created from args"
                }
            },
            "required": [
                "service"
            ],
            "inputProperties": {
                "alarms": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms",
                    "description": "Information about the CloudWatch alarms. See below.\n"
                },
                "assignPublicIp": {
                    "type": "boolean",
                    "description": "Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`."
                },
                "availabilityZoneRebalancing": {
                    "type": "string",
                    "description": "ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. When creating a new service, if no value is specified, it defaults to `ENABLED` if the service is compatible with AvailabilityZoneRebalancing. When updating an existing service, if no value is specified it defaults to the existing service's AvailabilityZoneRebalancing value. If the service never had an AvailabilityZoneRebalancing value set, Amazon ECS treats this as `DISABLED`.\n"
                },
                "cluster": {
                    "type": "string",
                    "description": "ARN of an ECS cluster.\n",
                    "willReplaceOnChanges": true
                },
                "continueBeforeSteadyState": {
                    "type": "boolean",
                    "description": "If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`."
                },
                "deploymentCircuitBreaker": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker",
                    "description": "Configuration block for deployment circuit breaker. See below.\n"
                },
                "deploymentConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentConfiguration:ServiceDeploymentConfiguration",
                    "description": "Configuration block for deployment settings. See below.\n"
                },
                "deploymentController": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController",
                    "description": "Configuration block for deployment controller configuration. See below.\n"
                },
                "deploymentMaximumPercent": {
                    "type": "integer",
                    "description": "Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy.\n"
                },
                "deploymentMinimumHealthyPercent": {
                    "type": "integer",
                    "description": "Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment.\n"
                },
                "desiredCount": {
                    "type": "integer",
                    "description": "Number of instances of the task definition to place and keep running. Defaults to 1. Do not specify if using the `DAEMON` scheduling strategy.\n"
                },
                "enableEcsManagedTags": {
                    "type": "boolean",
                    "description": "Whether to enable Amazon ECS managed tags for the tasks within the service.\n"
                },
                "enableExecuteCommand": {
                    "type": "boolean",
                    "description": "Whether to enable Amazon ECS Exec for the tasks within the service.\n"
                },
                "forceDelete": {
                    "type": "boolean",
                    "description": "Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy.\n"
                },
                "forceNewDeployment": {
                    "type": "boolean",
                    "description": "Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy \u003cspan pulumi-lang-nodejs=\"`orderedPlacementStrategy`\" pulumi-lang-dotnet=\"`OrderedPlacementStrategy`\" pulumi-lang-go=\"`orderedPlacementStrategy`\" pulumi-lang-python=\"`ordered_placement_strategy`\" pulumi-lang-yaml=\"`orderedPlacementStrategy`\" pulumi-lang-java=\"`orderedPlacementStrategy`\"\u003e`ordered_placement_strategy`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e updates.\nWhen using the forceNewDeployment property you also need to configure the triggers property.\n"
                },
                "healthCheckGracePeriodSeconds": {
                    "type": "integer",
                    "description": "Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers.\n"
                },
                "iamRole": {
                    "type": "string",
                    "description": "ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode. If using \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here.\n",
                    "willReplaceOnChanges": true
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer"
                    },
                    "description": "Configuration block for load balancers. See below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the service (up to 255 letters, numbers, hyphens, and underscores)\n\nThe following arguments are optional:\n",
                    "willReplaceOnChanges": true
                },
                "networkConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration",
                    "description": "Network configuration for the service. This parameter is required for task definitions that use the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below.\n"
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServicePlacementConstraint:ServicePlacementConstraint"
                    },
                    "description": "Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless \u003cspan pulumi-lang-nodejs=\"`forceNewDeployment`\" pulumi-lang-dotnet=\"`ForceNewDeployment`\" pulumi-lang-go=\"`forceNewDeployment`\" pulumi-lang-python=\"`force_new_deployment`\" pulumi-lang-yaml=\"`forceNewDeployment`\" pulumi-lang-java=\"`forceNewDeployment`\"\u003e`force_new_deployment`\u003c/span\u003e is enabled. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. See below.\n"
                },
                "platformVersion": {
                    "type": "string",
                    "description": "Platform version on which to run your service. Only applicable for \u003cspan pulumi-lang-nodejs=\"`launchType`\" pulumi-lang-dotnet=\"`LaunchType`\" pulumi-lang-go=\"`launchType`\" pulumi-lang-python=\"`launch_type`\" pulumi-lang-yaml=\"`launchType`\" pulumi-lang-java=\"`launchType`\"\u003e`launch_type`\u003c/span\u003e set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).\n"
                },
                "propagateTags": {
                    "type": "string",
                    "description": "Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "schedulingStrategy": {
                    "type": "string",
                    "description": "Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html).\n",
                    "willReplaceOnChanges": true
                },
                "serviceConnectConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration",
                    "description": "ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below.\n"
                },
                "serviceRegistries": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries",
                    "description": "Service discovery registries for the service. The maximum number of \u003cspan pulumi-lang-nodejs=\"`serviceRegistries`\" pulumi-lang-dotnet=\"`ServiceRegistries`\" pulumi-lang-go=\"`serviceRegistries`\" pulumi-lang-python=\"`service_registries`\" pulumi-lang-yaml=\"`serviceRegistries`\" pulumi-lang-java=\"`serviceRegistries`\"\u003e`service_registries`\u003c/span\u003e blocks is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e. See below.\n"
                },
                "sigintRollback": {
                    "type": "boolean",
                    "description": "Whether to enable graceful termination of deployments using SIGINT signals. When enabled, allows customers to safely cancel an in-progress deployment and automatically trigger a rollback to the previous stable state. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Only applicable when using `ECS` deployment controller and requires \u003cspan pulumi-lang-nodejs=\"`waitForSteadyState \" pulumi-lang-dotnet=\"`WaitForSteadyState \" pulumi-lang-go=\"`waitForSteadyState \" pulumi-lang-python=\"`wait_for_steady_state \" pulumi-lang-yaml=\"`waitForSteadyState \" pulumi-lang-java=\"`waitForSteadyState \"\u003e`wait_for_steady_state \u003c/span\u003e= true`.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskDefinition": {
                    "type": "string",
                    "description": "Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided."
                },
                "taskDefinitionArgs": {
                    "$ref": "#/types/awsx:ecs:FargateServiceTaskDefinition",
                    "plain": true,
                    "description": "The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided."
                },
                "triggers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `\"plantimestamp()\"`. When using the triggers property you also need to set the forceNewDeployment property to True.\n"
                },
                "volumeConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceVolumeConfiguration:ServiceVolumeConfiguration",
                    "description": "Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below.\n"
                },
                "vpcLatticeConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/ServiceVpcLatticeConfiguration:ServiceVpcLatticeConfiguration"
                    },
                    "description": "The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below.\n"
                }
            },
            "isComponent": true
        },
        "awsx:ecs:FargateTaskDefinition": {
            "description": "Create a TaskDefinition resource with the given unique name, arguments, and options.\nCreates required log-group and task \u0026 execution roles.\nPresents required Service load balancers if target group included in port mappings.",
            "properties": {
                "executionRole": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:iam%2Frole:Role",
                    "description": "Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume."
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer"
                    },
                    "description": "Computed load balancers from target groups specified of container port mappings."
                },
                "logGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup",
                    "description": "Auto-created Log Group resource for use by containers."
                },
                "taskDefinition": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition",
                    "description": "Underlying ECS Task Definition resource"
                },
                "taskRole": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:iam%2Frole:Role",
                    "description": "Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services."
                }
            },
            "required": [
                "taskDefinition",
                "loadBalancers"
            ],
            "inputProperties": {
                "container": {
                    "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                    "plain": true,
                    "description": "Single container to make a TaskDefinition from.  Useful for simple cases where there aren't\nmultiple containers, especially when creating a TaskDefinition to call [run] on.\n\nEither [container] or [containers] must be provided."
                },
                "containers": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/awsx:ecs:TaskDefinitionContainerDefinition",
                        "plain": true
                    },
                    "plain": true,
                    "description": "All the containers to make a TaskDefinition from.  Useful when creating a Service that will\ncontain many containers within.\n\nEither [container] or [containers] must be provided."
                },
                "cpu": {
                    "type": "string",
                    "description": "The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions]"
                },
                "enableFaultInjection": {
                    "type": "boolean",
                    "description": "Enables fault injection and allows for fault injection requests to be accepted from the task's containers. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ephemeralStorage": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage",
                    "description": "The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage.\n",
                    "willReplaceOnChanges": true
                },
                "executionRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "The execution role that the Amazon ECS container agent and the Docker daemon can assume.\nWill be created automatically if not defined."
                },
                "family": {
                    "type": "string",
                    "description": "An optional unique name for your task definition. If not specified, then a default will be created."
                },
                "ipcMode": {
                    "type": "string",
                    "description": "IPC resource namespace to be used for the containers in the task The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "logGroup": {
                    "$ref": "#/types/awsx:awsx:DefaultLogGroup",
                    "plain": true,
                    "description": "A set of volume blocks that containers in your task may use."
                },
                "memory": {
                    "type": "string",
                    "description": "The amount (in MiB) of memory used by the task.  If not provided, a default will be computed\nbased on the cumulative needs specified by [containerDefinitions]"
                },
                "pidMode": {
                    "type": "string",
                    "description": "Process namespace to use for the containers in the task. The valid values are \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "placementConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint"
                    },
                    "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of \u003cspan pulumi-lang-nodejs=\"`placementConstraints`\" pulumi-lang-dotnet=\"`PlacementConstraints`\" pulumi-lang-go=\"`placementConstraints`\" pulumi-lang-python=\"`placement_constraints`\" pulumi-lang-yaml=\"`placementConstraints`\" pulumi-lang-java=\"`placementConstraints`\"\u003e`placement_constraints`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "proxyConfiguration": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration",
                    "description": "Configuration block for the App Mesh proxy. Detailed below.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "runtimePlatform": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform",
                    "description": "Configuration block for\u003cspan pulumi-lang-nodejs=\" runtimePlatform \" pulumi-lang-dotnet=\" RuntimePlatform \" pulumi-lang-go=\" runtimePlatform \" pulumi-lang-python=\" runtime_platform \" pulumi-lang-yaml=\" runtimePlatform \" pulumi-lang-java=\" runtimePlatform \"\u003e runtime_platform \u003c/span\u003ethat containers in your task may use.\n",
                    "willReplaceOnChanges": true
                },
                "skipDestroy": {
                    "type": "boolean",
                    "description": "Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value map of resource tags. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "taskRole": {
                    "$ref": "#/types/awsx:awsx:DefaultRoleWithPolicy",
                    "plain": true,
                    "description": "IAM role that allows your Amazon ECS container task to make calls to other AWS services.\nWill be created automatically if not defined."
                },
                "trackLatest": {
                    "type": "boolean",
                    "description": "Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Useful in the event the task definition is modified outside of this resource.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume"
                    },
                    "description": "Repeatable configuration block for volumes that containers in your task may use. Detailed below.\n\n\u003e **NOTE:** Proper escaping is required for JSON field values containing quotes (`\"`) such as \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e values. If directly setting the JSON, they should be escaped as `\\\"` in the JSON,  e.g., `\"value\": \"I \\\"love\\\" escaped quotes\"`. If using a variable value, they should be escaped as `\\\\\\\"` in the variable, e.g., `value = \"I \\\\\\\"love\\\\\\\" escaped quotes\"` in the variable and `\"value\": \"${var.myvariable}\"` in the JSON.\n\n\u003e **Note:** Fault injection only works with tasks using the \u003cspan pulumi-lang-nodejs=\"`awsvpc`\" pulumi-lang-dotnet=\"`Awsvpc`\" pulumi-lang-go=\"`awsvpc`\" pulumi-lang-python=\"`awsvpc`\" pulumi-lang-yaml=\"`awsvpc`\" pulumi-lang-java=\"`awsvpc`\"\u003e`awsvpc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e network modes. Fault injection isn't available on Windows.\n",
                    "willReplaceOnChanges": true
                }
            },
            "isComponent": true
        },
        "awsx:lb:ApplicationLoadBalancer": {
            "description": "Provides an Application Load Balancer resource with listeners, default target group and default security group.",
            "properties": {
                "defaultSecurityGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fsecurityGroup:SecurityGroup",
                    "description": "Default security group, if auto-created"
                },
                "defaultTargetGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup",
                    "description": "Default target group, if auto-created"
                },
                "listeners": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2flistener:Listener"
                    },
                    "description": "Listeners created as part of this load balancer"
                },
                "loadBalancer": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer",
                    "description": "Underlying Load Balancer resource"
                },
                "vpcId": {
                    "type": "string",
                    "description": "Id of the VPC in which this load balancer is operating"
                }
            },
            "type": "object",
            "required": [
                "loadBalancer",
                "defaultTargetGroup"
            ],
            "inputProperties": {
                "accessLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
                    "description": "Access Logs block. See below.\n"
                },
                "clientKeepAlive": {
                    "type": "integer",
                    "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
                },
                "connectionLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
                    "description": "Connection Logs block. See below. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "customerOwnedIpv4Pool": {
                    "type": "string",
                    "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
                    "willReplaceOnChanges": true
                },
                "defaultSecurityGroup": {
                    "$ref": "#/types/awsx:awsx:DefaultSecurityGroup",
                    "plain": true,
                    "description": "Options for creating a default security group if [securityGroups] not specified."
                },
                "defaultTargetGroup": {
                    "$ref": "#/types/awsx:lb:TargetGroup",
                    "plain": true,
                    "description": "Options creating a default target group."
                },
                "defaultTargetGroupPort": {
                    "type": "integer",
                    "description": "Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80.\n"
                },
                "desyncMitigationMode": {
                    "type": "string",
                    "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are \u003cspan pulumi-lang-nodejs=\"`monitor`\" pulumi-lang-dotnet=\"`Monitor`\" pulumi-lang-go=\"`monitor`\" pulumi-lang-python=\"`monitor`\" pulumi-lang-yaml=\"`monitor`\" pulumi-lang-java=\"`monitor`\"\u003e`monitor`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`defensive`\" pulumi-lang-dotnet=\"`Defensive`\" pulumi-lang-go=\"`defensive`\" pulumi-lang-python=\"`defensive`\" pulumi-lang-yaml=\"`defensive`\" pulumi-lang-java=\"`defensive`\"\u003e`defensive`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`strictest`\" pulumi-lang-dotnet=\"`Strictest`\" pulumi-lang-go=\"`strictest`\" pulumi-lang-python=\"`strictest`\" pulumi-lang-yaml=\"`strictest`\" pulumi-lang-java=\"`strictest`\"\u003e`strictest`\u003c/span\u003e.\n"
                },
                "dnsRecordClientRoutingPolicy": {
                    "type": "string",
                    "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are \u003cspan pulumi-lang-nodejs=\"`anyAvailabilityZone`\" pulumi-lang-dotnet=\"`AnyAvailabilityZone`\" pulumi-lang-go=\"`anyAvailabilityZone`\" pulumi-lang-python=\"`any_availability_zone`\" pulumi-lang-yaml=\"`anyAvailabilityZone`\" pulumi-lang-java=\"`anyAvailabilityZone`\"\u003e`any_availability_zone`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`availabilityZoneAffinity`\" pulumi-lang-dotnet=\"`AvailabilityZoneAffinity`\" pulumi-lang-go=\"`availabilityZoneAffinity`\" pulumi-lang-python=\"`availability_zone_affinity`\" pulumi-lang-yaml=\"`availabilityZoneAffinity`\" pulumi-lang-java=\"`availabilityZoneAffinity`\"\u003e`availability_zone_affinity`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-dotnet=\"`PartialAvailabilityZoneAffinity`\" pulumi-lang-go=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-python=\"`partial_availability_zone_affinity`\" pulumi-lang-yaml=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-java=\"`partialAvailabilityZoneAffinity`\"\u003e`partial_availability_zone_affinity`\u003c/span\u003e. See   [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e type load balancers.\n"
                },
                "dropInvalidHeaderFields": {
                    "type": "boolean",
                    "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "enableDeletionProtection": {
                    "type": "boolean",
                    "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableHttp2": {
                    "type": "boolean",
                    "description": "Whether HTTP/2 is enabled in \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e load balancers. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "enableTlsVersionAndCipherSuiteHeaders": {
                    "type": "boolean",
                    "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e\n"
                },
                "enableWafFailOpen": {
                    "type": "boolean",
                    "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableXffClientPort": {
                    "type": "boolean",
                    "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e load balancers. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableZonalShift": {
                    "type": "boolean",
                    "description": "Whether zonal shift is enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
                    "type": "string",
                    "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. The possible values are \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e.\n"
                },
                "healthCheckLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerHealthCheckLogs:LoadBalancerHealthCheckLogs",
                    "description": "Health Check Logs block. See below. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "idleTimeout": {
                    "type": "integer",
                    "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. Default: 60.\n"
                },
                "internal": {
                    "type": "boolean",
                    "description": "If true, the LB will be internal. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddressType": {
                    "type": "string",
                    "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e (all load balancer types), \u003cspan pulumi-lang-nodejs=\"`dualstack`\" pulumi-lang-dotnet=\"`Dualstack`\" pulumi-lang-go=\"`dualstack`\" pulumi-lang-python=\"`dualstack`\" pulumi-lang-yaml=\"`dualstack`\" pulumi-lang-java=\"`dualstack`\"\u003e`dualstack`\u003c/span\u003e (all load balancer types), and `dualstack-without-public-ipv4` (type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e only).\n"
                },
                "ipamPools": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerIpamPools:LoadBalancerIpamPools",
                    "description": ". The IPAM pools to use with the load balancer.  Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. See\u003cspan pulumi-lang-nodejs=\" ipamPools \" pulumi-lang-dotnet=\" IpamPools \" pulumi-lang-go=\" ipamPools \" pulumi-lang-python=\" ipam_pools \" pulumi-lang-yaml=\" ipamPools \" pulumi-lang-java=\" ipamPools \"\u003e ipam_pools \u003c/span\u003efor more information.\n"
                },
                "listener": {
                    "$ref": "#/types/awsx:lb:Listener",
                    "plain": true,
                    "description": "A listener to create. Only one of [listener] and [listeners] can be specified."
                },
                "listeners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:lb:Listener",
                        "plain": true
                    },
                    "plain": true,
                    "description": "List of listeners to create. Only one of [listener] and [listeners] can be specified."
                },
                "minimumLoadBalancerCapacity": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerMinimumLoadBalancerCapacity:LoadBalancerMinimumLoadBalancerCapacity",
                    "description": "Minimum capacity for a load balancer. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "preserveHostHeader": {
                    "type": "boolean",
                    "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "secondaryIpsAutoAssignedPerSubnet": {
                    "type": "integer",
                    "description": "The number of secondary IP addresses to configure for your load balancer nodes. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. The valid range is 0-7. When decreased, this will force a recreation of the resource. Default: \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                },
                "securityGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. For load balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
                },
                "subnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of subnet IDs to attach to the LB. For Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e will force a recreation of the resource.\n"
                },
                "subnetMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
                    },
                    "description": "Subnet mapping block. See below. For Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e subnet mappings can only be added.\n"
                },
                "subnets": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet"
                    },
                    "description": "A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "xffHeaderProcessingMode": {
                    "type": "string",
                    "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are \u003cspan pulumi-lang-nodejs=\"`append`\" pulumi-lang-dotnet=\"`Append`\" pulumi-lang-go=\"`append`\" pulumi-lang-python=\"`append`\" pulumi-lang-yaml=\"`append`\" pulumi-lang-java=\"`append`\"\u003e`append`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preserve`\" pulumi-lang-dotnet=\"`Preserve`\" pulumi-lang-go=\"`preserve`\" pulumi-lang-python=\"`preserve`\" pulumi-lang-yaml=\"`preserve`\" pulumi-lang-java=\"`preserve`\"\u003e`preserve`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`remove`\" pulumi-lang-dotnet=\"`Remove`\" pulumi-lang-go=\"`remove`\" pulumi-lang-python=\"`remove`\" pulumi-lang-yaml=\"`remove`\" pulumi-lang-java=\"`remove`\"\u003e`remove`\u003c/span\u003e. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. The default is \u003cspan pulumi-lang-nodejs=\"`append`\" pulumi-lang-dotnet=\"`Append`\" pulumi-lang-go=\"`append`\" pulumi-lang-python=\"`append`\" pulumi-lang-yaml=\"`append`\" pulumi-lang-java=\"`append`\"\u003e`append`\u003c/span\u003e.\n\n\u003e **NOTE:** Please note that internal LBs can only use \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e as the \u003cspan pulumi-lang-nodejs=\"`ipAddressType`\" pulumi-lang-dotnet=\"`IpAddressType`\" pulumi-lang-go=\"`ipAddressType`\" pulumi-lang-python=\"`ip_address_type`\" pulumi-lang-yaml=\"`ipAddressType`\" pulumi-lang-java=\"`ipAddressType`\"\u003e`ip_address_type`\u003c/span\u003e. You can only change to \u003cspan pulumi-lang-nodejs=\"`dualstack`\" pulumi-lang-dotnet=\"`Dualstack`\" pulumi-lang-go=\"`dualstack`\" pulumi-lang-python=\"`dualstack`\" pulumi-lang-yaml=\"`dualstack`\" pulumi-lang-java=\"`dualstack`\"\u003e`dualstack`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`ipAddressType`\" pulumi-lang-dotnet=\"`IpAddressType`\" pulumi-lang-go=\"`ipAddressType`\" pulumi-lang-python=\"`ip_address_type`\" pulumi-lang-yaml=\"`ipAddressType`\" pulumi-lang-java=\"`ipAddressType`\"\u003e`ip_address_type`\u003c/span\u003e if the selected subnets are IPv6 enabled.\n\n\u003e **NOTE:** Please note that one of either \u003cspan pulumi-lang-nodejs=\"`subnets`\" pulumi-lang-dotnet=\"`Subnets`\" pulumi-lang-go=\"`subnets`\" pulumi-lang-python=\"`subnets`\" pulumi-lang-yaml=\"`subnets`\" pulumi-lang-java=\"`subnets`\"\u003e`subnets`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetMapping`\" pulumi-lang-dotnet=\"`SubnetMapping`\" pulumi-lang-go=\"`subnetMapping`\" pulumi-lang-python=\"`subnet_mapping`\" pulumi-lang-yaml=\"`subnetMapping`\" pulumi-lang-java=\"`subnetMapping`\"\u003e`subnet_mapping`\u003c/span\u003e is required.\n"
                }
            },
            "isComponent": true
        },
        "awsx:lb:NetworkLoadBalancer": {
            "description": "Provides a Network Load Balancer resource with listeners and default target group.",
            "properties": {
                "defaultTargetGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup",
                    "description": "Default target group, if auto-created"
                },
                "listeners": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2flistener:Listener"
                    },
                    "description": "Listeners created as part of this load balancer"
                },
                "loadBalancer": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer",
                    "description": "Underlying Load Balancer resource"
                },
                "vpcId": {
                    "type": "string",
                    "description": "Id of the VPC in which this load balancer is operating"
                }
            },
            "type": "object",
            "required": [
                "loadBalancer",
                "defaultTargetGroup"
            ],
            "inputProperties": {
                "accessLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs",
                    "description": "Access Logs block. See below.\n"
                },
                "clientKeepAlive": {
                    "type": "integer",
                    "description": "Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds.\n"
                },
                "connectionLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs",
                    "description": "Connection Logs block. See below. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "customerOwnedIpv4Pool": {
                    "type": "string",
                    "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n",
                    "willReplaceOnChanges": true
                },
                "defaultTargetGroup": {
                    "$ref": "#/types/awsx:lb:TargetGroup",
                    "plain": true,
                    "description": "Options creating a default target group."
                },
                "defaultTargetGroupPort": {
                    "type": "integer",
                    "description": "Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80.\n"
                },
                "desyncMitigationMode": {
                    "type": "string",
                    "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are \u003cspan pulumi-lang-nodejs=\"`monitor`\" pulumi-lang-dotnet=\"`Monitor`\" pulumi-lang-go=\"`monitor`\" pulumi-lang-python=\"`monitor`\" pulumi-lang-yaml=\"`monitor`\" pulumi-lang-java=\"`monitor`\"\u003e`monitor`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`defensive`\" pulumi-lang-dotnet=\"`Defensive`\" pulumi-lang-go=\"`defensive`\" pulumi-lang-python=\"`defensive`\" pulumi-lang-yaml=\"`defensive`\" pulumi-lang-java=\"`defensive`\"\u003e`defensive`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`strictest`\" pulumi-lang-dotnet=\"`Strictest`\" pulumi-lang-go=\"`strictest`\" pulumi-lang-python=\"`strictest`\" pulumi-lang-yaml=\"`strictest`\" pulumi-lang-java=\"`strictest`\"\u003e`strictest`\u003c/span\u003e.\n"
                },
                "dnsRecordClientRoutingPolicy": {
                    "type": "string",
                    "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are \u003cspan pulumi-lang-nodejs=\"`anyAvailabilityZone`\" pulumi-lang-dotnet=\"`AnyAvailabilityZone`\" pulumi-lang-go=\"`anyAvailabilityZone`\" pulumi-lang-python=\"`any_availability_zone`\" pulumi-lang-yaml=\"`anyAvailabilityZone`\" pulumi-lang-java=\"`anyAvailabilityZone`\"\u003e`any_availability_zone`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`availabilityZoneAffinity`\" pulumi-lang-dotnet=\"`AvailabilityZoneAffinity`\" pulumi-lang-go=\"`availabilityZoneAffinity`\" pulumi-lang-python=\"`availability_zone_affinity`\" pulumi-lang-yaml=\"`availabilityZoneAffinity`\" pulumi-lang-java=\"`availabilityZoneAffinity`\"\u003e`availability_zone_affinity`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-dotnet=\"`PartialAvailabilityZoneAffinity`\" pulumi-lang-go=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-python=\"`partial_availability_zone_affinity`\" pulumi-lang-yaml=\"`partialAvailabilityZoneAffinity`\" pulumi-lang-java=\"`partialAvailabilityZoneAffinity`\"\u003e`partial_availability_zone_affinity`\u003c/span\u003e. See   [Availability Zone DNS affinity](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#zonal-dns-affinity) for additional details. Only valid for \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e type load balancers.\n"
                },
                "dropInvalidHeaderFields": {
                    "type": "boolean",
                    "description": "Whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false). The default is false. Elastic Load Balancing requires that message header names contain only alphanumeric characters and hyphens. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "enableCrossZoneLoadBalancing": {
                    "type": "boolean",
                    "description": "If true, cross-zone load balancing of the load balancer will be enabled. For \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gateway`\" pulumi-lang-dotnet=\"`Gateway`\" pulumi-lang-go=\"`gateway`\" pulumi-lang-python=\"`gateway`\" pulumi-lang-yaml=\"`gateway`\" pulumi-lang-java=\"`gateway`\"\u003e`gateway`\u003c/span\u003e type load balancers, this feature is disabled by default (\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). For \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e load balancer this feature is always enabled (\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e) and cannot be disabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableDeletionProtection": {
                    "type": "boolean",
                    "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent this provider from deleting the load balancer. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableTlsVersionAndCipherSuiteHeaders": {
                    "type": "boolean",
                    "description": "Whether the two headers (`x-amzn-tls-version` and `x-amzn-tls-cipher-suite`), which contain information about the negotiated TLS version and cipher suite, are added to the client request before sending it to the target. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e\n"
                },
                "enableWafFailOpen": {
                    "type": "boolean",
                    "description": "Whether to allow a WAF-enabled load balancer to route requests to targets if it is unable to forward the request to AWS WAF. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableXffClientPort": {
                    "type": "boolean",
                    "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e load balancers. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableZonalShift": {
                    "type": "boolean",
                    "description": "Whether zonal shift is enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enforceSecurityGroupInboundRulesOnPrivateLinkTraffic": {
                    "type": "string",
                    "description": "Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. The possible values are \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e.\n"
                },
                "healthCheckLogs": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerHealthCheckLogs:LoadBalancerHealthCheckLogs",
                    "description": "Health Check Logs block. See below. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e.\n"
                },
                "idleTimeout": {
                    "type": "integer",
                    "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. Default: 60.\n"
                },
                "internal": {
                    "type": "boolean",
                    "description": "If true, the LB will be internal. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddressType": {
                    "type": "string",
                    "description": "Type of IP addresses used by the subnets for your load balancer. The possible values depend upon the load balancer type: \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e (all load balancer types), \u003cspan pulumi-lang-nodejs=\"`dualstack`\" pulumi-lang-dotnet=\"`Dualstack`\" pulumi-lang-go=\"`dualstack`\" pulumi-lang-python=\"`dualstack`\" pulumi-lang-yaml=\"`dualstack`\" pulumi-lang-java=\"`dualstack`\"\u003e`dualstack`\u003c/span\u003e (all load balancer types), and `dualstack-without-public-ipv4` (type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e only).\n"
                },
                "ipamPools": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerIpamPools:LoadBalancerIpamPools",
                    "description": ". The IPAM pools to use with the load balancer.  Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. See\u003cspan pulumi-lang-nodejs=\" ipamPools \" pulumi-lang-dotnet=\" IpamPools \" pulumi-lang-go=\" ipamPools \" pulumi-lang-python=\" ipam_pools \" pulumi-lang-yaml=\" ipamPools \" pulumi-lang-java=\" ipamPools \"\u003e ipam_pools \u003c/span\u003efor more information.\n"
                },
                "listener": {
                    "$ref": "#/types/awsx:lb:Listener",
                    "plain": true,
                    "description": "A listener to create. Only one of [listener] and [listeners] can be specified."
                },
                "listeners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/awsx:lb:Listener",
                        "plain": true
                    },
                    "plain": true,
                    "description": "List of listeners to create. Only one of [listener] and [listeners] can be specified."
                },
                "minimumLoadBalancerCapacity": {
                    "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerMinimumLoadBalancerCapacity:LoadBalancerMinimumLoadBalancerCapacity",
                    "description": "Minimum capacity for a load balancer. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, this provider will autogenerate a name beginning with `tf-lb`.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "preserveHostHeader": {
                    "type": "boolean",
                    "description": "Whether the Application Load Balancer should preserve the Host header in the HTTP request and send it to the target without any change. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.\n"
                },
                "secondaryIpsAutoAssignedPerSubnet": {
                    "type": "integer",
                    "description": "The number of secondary IP addresses to configure for your load balancer nodes. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. The valid range is 0-7. When decreased, this will force a recreation of the resource. Default: \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n"
                },
                "securityGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e. For load balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e security groups cannot be added if none are currently present, and cannot all be removed once added. If either of these conditions are met, this will force a recreation of the resource.\n"
                },
                "subnetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of subnet IDs to attach to the LB. For Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e subnets can only be added (see [Availability Zones](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#availability-zones)), deleting a subnet for load balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e will force a recreation of the resource.\n"
                },
                "subnetMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping"
                    },
                    "description": "Subnet mapping block. See below. For Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e subnet mappings can only be added.\n"
                },
                "subnets": {
                    "type": "array",
                    "items": {
                        "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet"
                    },
                    "description": "A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags to assign to the resource. If configured with a provider \u003cspan pulumi-lang-nodejs=\"`defaultTags`\" pulumi-lang-dotnet=\"`DefaultTags`\" pulumi-lang-go=\"`defaultTags`\" pulumi-lang-python=\"`default_tags`\" pulumi-lang-yaml=\"`defaultTags`\" pulumi-lang-java=\"`defaultTags`\"\u003e`default_tags`\u003c/span\u003e configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n"
                },
                "xffHeaderProcessingMode": {
                    "type": "string",
                    "description": "Determines how the load balancer modifies the `X-Forwarded-For` header in the HTTP request before sending the request to the target. The possible values are \u003cspan pulumi-lang-nodejs=\"`append`\" pulumi-lang-dotnet=\"`Append`\" pulumi-lang-go=\"`append`\" pulumi-lang-python=\"`append`\" pulumi-lang-yaml=\"`append`\" pulumi-lang-java=\"`append`\"\u003e`append`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preserve`\" pulumi-lang-dotnet=\"`Preserve`\" pulumi-lang-go=\"`preserve`\" pulumi-lang-python=\"`preserve`\" pulumi-lang-yaml=\"`preserve`\" pulumi-lang-java=\"`preserve`\"\u003e`preserve`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`remove`\" pulumi-lang-dotnet=\"`Remove`\" pulumi-lang-go=\"`remove`\" pulumi-lang-python=\"`remove`\" pulumi-lang-yaml=\"`remove`\" pulumi-lang-java=\"`remove`\"\u003e`remove`\u003c/span\u003e. Only valid for Load Balancers of type \u003cspan pulumi-lang-nodejs=\"`application`\" pulumi-lang-dotnet=\"`Application`\" pulumi-lang-go=\"`application`\" pulumi-lang-python=\"`application`\" pulumi-lang-yaml=\"`application`\" pulumi-lang-java=\"`application`\"\u003e`application`\u003c/span\u003e. The default is \u003cspan pulumi-lang-nodejs=\"`append`\" pulumi-lang-dotnet=\"`Append`\" pulumi-lang-go=\"`append`\" pulumi-lang-python=\"`append`\" pulumi-lang-yaml=\"`append`\" pulumi-lang-java=\"`append`\"\u003e`append`\u003c/span\u003e.\n\n\u003e **NOTE:** Please note that internal LBs can only use \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e as the \u003cspan pulumi-lang-nodejs=\"`ipAddressType`\" pulumi-lang-dotnet=\"`IpAddressType`\" pulumi-lang-go=\"`ipAddressType`\" pulumi-lang-python=\"`ip_address_type`\" pulumi-lang-yaml=\"`ipAddressType`\" pulumi-lang-java=\"`ipAddressType`\"\u003e`ip_address_type`\u003c/span\u003e. You can only change to \u003cspan pulumi-lang-nodejs=\"`dualstack`\" pulumi-lang-dotnet=\"`Dualstack`\" pulumi-lang-go=\"`dualstack`\" pulumi-lang-python=\"`dualstack`\" pulumi-lang-yaml=\"`dualstack`\" pulumi-lang-java=\"`dualstack`\"\u003e`dualstack`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`ipAddressType`\" pulumi-lang-dotnet=\"`IpAddressType`\" pulumi-lang-go=\"`ipAddressType`\" pulumi-lang-python=\"`ip_address_type`\" pulumi-lang-yaml=\"`ipAddressType`\" pulumi-lang-java=\"`ipAddressType`\"\u003e`ip_address_type`\u003c/span\u003e if the selected subnets are IPv6 enabled.\n\n\u003e **NOTE:** Please note that one of either \u003cspan pulumi-lang-nodejs=\"`subnets`\" pulumi-lang-dotnet=\"`Subnets`\" pulumi-lang-go=\"`subnets`\" pulumi-lang-python=\"`subnets`\" pulumi-lang-yaml=\"`subnets`\" pulumi-lang-java=\"`subnets`\"\u003e`subnets`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetMapping`\" pulumi-lang-dotnet=\"`SubnetMapping`\" pulumi-lang-go=\"`subnetMapping`\" pulumi-lang-python=\"`subnet_mapping`\" pulumi-lang-yaml=\"`subnetMapping`\" pulumi-lang-java=\"`subnetMapping`\"\u003e`subnet_mapping`\u003c/span\u003e is required.\n"
                }
            },
            "isComponent": true
        },
        "awsx:lb:TargetGroupAttachment": {
            "description": "Attach an EC2 instance or Lambda to a Load Balancer. This will create required permissions if attaching to a Lambda Function.",
            "properties": {
                "lambdaPermission": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lambda%2fpermission:Permission",
                    "description": "Auto-created Lambda permission, if targeting a Lambda function"
                },
                "targetGroupAttachment": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2ftargetGroupAttachment:TargetGroupAttachment",
                    "description": "Underlying Target Group Attachment resource",
                    "language": {
                        "csharp": {
                            "name": "Attachment"
                        }
                    }
                }
            },
            "type": "object",
            "required": [
                "targetGroupAttachment"
            ],
            "inputProperties": {
                "instance": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:ec2%2finstance:Instance",
                    "description": "EC2 Instance to attach to the Target Group. Exactly 1 of [instance], [instanceId], [lambda] or [lambdaArn] must be provided."
                },
                "instanceId": {
                    "type": "string",
                    "description": "ID of an EC2 Instance to attach to the Target Group. Exactly 1 of [instance], [instanceId], [lambda] or [lambdaArn] must be provided."
                },
                "lambda": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lambda%2ffunction:Function",
                    "description": "Lambda Function to attach to the Target Group. Exactly 1 of [instance], [instanceId], [lambda] or [lambdaArn] must be provided.",
                    "language": {
                        "python": {
                            "name": "function"
                        }
                    }
                },
                "lambdaArn": {
                    "type": "string",
                    "description": "ARN of a Lambda Function to attach to the Target Group. Exactly 1 of [instance], [instanceId], [lambda] or [lambdaArn] must be provided."
                },
                "targetGroup": {
                    "$ref": "/aws/v7.15.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup",
                    "description": "Target Group to attach to. Exactly one of [targetGroup] or [targetGroupArn] must be specified."
                },
                "targetGroupArn": {
                    "type": "string",
                    "description": "ARN of the Target Group to attach to. Exactly one of [targetGroup] or [targetGroupArn] must be specified."
                }
            },
            "isComponent": true
        }
    },
    "functions": {
        "awsx:ec2:getDefaultVpc": {
            "deprecationMessage": "Waiting for https://github.com/pulumi/pulumi/issues/7583. Use the DefaultVpc resource until resolved.",
            "description": "[NOT YET IMPLEMENTED] Get the Default VPC for a region.",
            "inputs": {
                "description": "Arguments for getting the default VPC"
            },
            "outputs": {
                "description": "Outputs from the default VPC configuration",
                "properties": {
                    "privateSubnetIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "publicSubnetIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "The VPC ID for the default VPC"
                    }
                },
                "required": [
                    "vpcId",
                    "publicSubnetIds",
                    "privateSubnetIds"
                ]
            }
        }
    }
}