diff --git a/awsx/package.json b/awsx/package.json index 35b2ff62b..42e624e8f 100644 --- a/awsx/package.json +++ b/awsx/package.json @@ -22,7 +22,7 @@ }, "//": "Pulumi sub-provider dependencies must be pinned at an exact version because we extract this value to generate the correct dependency in the schema", "dependencies": { - "@pulumi/aws": "6.9.0", + "@pulumi/aws": "6.32.0", "@pulumi/docker": "4.5.1", "@pulumi/pulumi": "^3.91.1", "@types/aws-lambda": "^8.10.23", diff --git a/awsx/schema-types.ts b/awsx/schema-types.ts index b318cc618..4662b141a 100644 --- a/awsx/schema-types.ts +++ b/awsx/schema-types.ts @@ -201,6 +201,7 @@ export interface EC2TaskDefinitionArgs { readonly skipDestroy?: pulumi.Input; readonly tags?: pulumi.Input>>; readonly taskRole?: DefaultRoleWithPolicyInputs; + readonly trackLatest?: pulumi.Input; readonly volumes?: pulumi.Input[]>; } export abstract class FargateService extends (pulumi.ComponentResource) { @@ -267,6 +268,7 @@ export interface FargateTaskDefinitionArgs { readonly skipDestroy?: pulumi.Input; readonly tags?: pulumi.Input>>; readonly taskRole?: DefaultRoleWithPolicyInputs; + readonly trackLatest?: pulumi.Input; readonly volumes?: pulumi.Input[]>; } export abstract class ApplicationLoadBalancer extends (pulumi.ComponentResource) { @@ -281,6 +283,8 @@ export abstract class ApplicationLoadBalancer extends (pulumi.Compo } export interface ApplicationLoadBalancerArgs { readonly accessLogs?: pulumi.Input; + readonly clientKeepAlive?: pulumi.Input; + readonly connectionLogs?: pulumi.Input; readonly customerOwnedIpv4Pool?: pulumi.Input; readonly defaultSecurityGroup?: DefaultSecurityGroupInputs; readonly defaultTargetGroup?: TargetGroupInputs; @@ -293,6 +297,7 @@ export interface ApplicationLoadBalancerArgs { readonly enableTlsVersionAndCipherSuiteHeaders?: pulumi.Input; readonly enableWafFailOpen?: pulumi.Input; readonly enableXffClientPort?: pulumi.Input; + readonly enforceSecurityGroupInboundRulesOnPrivateLinkTraffic?: pulumi.Input; readonly idleTimeout?: pulumi.Input; readonly internal?: pulumi.Input; readonly ipAddressType?: pulumi.Input; @@ -319,6 +324,8 @@ export abstract class NetworkLoadBalancer extends (pulumi.Component } export interface NetworkLoadBalancerArgs { readonly accessLogs?: pulumi.Input; + readonly clientKeepAlive?: pulumi.Input; + readonly connectionLogs?: pulumi.Input; readonly customerOwnedIpv4Pool?: pulumi.Input; readonly defaultTargetGroup?: TargetGroupInputs; readonly defaultTargetGroupPort?: pulumi.Input; @@ -330,6 +337,7 @@ export interface NetworkLoadBalancerArgs { readonly enableTlsVersionAndCipherSuiteHeaders?: pulumi.Input; readonly enableWafFailOpen?: pulumi.Input; readonly enableXffClientPort?: pulumi.Input; + readonly enforceSecurityGroupInboundRulesOnPrivateLinkTraffic?: pulumi.Input; readonly idleTimeout?: pulumi.Input; readonly internal?: pulumi.Input; readonly ipAddressType?: pulumi.Input; @@ -465,6 +473,7 @@ export interface ExistingLogGroupOutputs { } export interface LogGroupInputs { readonly kmsKeyId?: pulumi.Input; + readonly logGroupClass?: pulumi.Input; readonly name?: pulumi.Input; readonly namePrefix?: pulumi.Input; readonly retentionInDays?: pulumi.Input; @@ -473,6 +482,7 @@ export interface LogGroupInputs { } export interface LogGroupOutputs { readonly kmsKeyId?: pulumi.Output; + readonly logGroupClass?: pulumi.Output; readonly name?: pulumi.Output; readonly namePrefix?: pulumi.Output; readonly retentionInDays?: pulumi.Output; @@ -700,6 +710,7 @@ export interface EC2ServiceTaskDefinitionInputs { readonly skipDestroy?: pulumi.Input; readonly tags?: pulumi.Input>>; readonly taskRole?: DefaultRoleWithPolicyInputs; + readonly trackLatest?: pulumi.Input; readonly volumes?: pulumi.Input[]>; } export interface EC2ServiceTaskDefinitionOutputs { @@ -721,6 +732,7 @@ export interface EC2ServiceTaskDefinitionOutputs { readonly skipDestroy?: pulumi.Output; readonly tags?: pulumi.Output>; readonly taskRole?: DefaultRoleWithPolicyOutputs; + readonly trackLatest?: pulumi.Output; readonly volumes?: pulumi.Output; } export interface FargateServiceTaskDefinitionInputs { @@ -741,6 +753,7 @@ export interface FargateServiceTaskDefinitionInputs { readonly skipDestroy?: pulumi.Input; readonly tags?: pulumi.Input>>; readonly taskRole?: DefaultRoleWithPolicyInputs; + readonly trackLatest?: pulumi.Input; readonly volumes?: pulumi.Input[]>; } export interface FargateServiceTaskDefinitionOutputs { @@ -761,6 +774,7 @@ export interface FargateServiceTaskDefinitionOutputs { readonly skipDestroy?: pulumi.Output; readonly tags?: pulumi.Output>; readonly taskRole?: DefaultRoleWithPolicyOutputs; + readonly trackLatest?: pulumi.Output; readonly volumes?: pulumi.Output; } export interface TaskDefinitionContainerDefinitionInputs { @@ -1037,6 +1051,7 @@ export interface ListenerInputs { readonly alpnPolicy?: pulumi.Input; readonly certificateArn?: pulumi.Input; readonly defaultActions?: pulumi.Input[]>; + readonly mutualAuthentication?: pulumi.Input; readonly port?: pulumi.Input; readonly protocol?: pulumi.Input; readonly sslPolicy?: pulumi.Input; @@ -1046,6 +1061,7 @@ export interface ListenerOutputs { readonly alpnPolicy?: pulumi.Output; readonly certificateArn?: pulumi.Output; readonly defaultActions?: pulumi.Output; + readonly mutualAuthentication?: pulumi.Output; readonly port?: pulumi.Output; readonly protocol?: pulumi.Output; readonly sslPolicy?: pulumi.Output; @@ -1058,6 +1074,7 @@ export interface TargetGroupInputs { readonly ipAddressType?: pulumi.Input; readonly lambdaMultiValueHeadersEnabled?: pulumi.Input; readonly loadBalancingAlgorithmType?: pulumi.Input; + readonly loadBalancingAnomalyMitigation?: pulumi.Input; readonly loadBalancingCrossZoneEnabled?: pulumi.Input; readonly name?: pulumi.Input; readonly namePrefix?: pulumi.Input; @@ -1081,6 +1098,7 @@ export interface TargetGroupOutputs { readonly ipAddressType?: pulumi.Output; readonly lambdaMultiValueHeadersEnabled?: pulumi.Output; readonly loadBalancingAlgorithmType?: pulumi.Output; + readonly loadBalancingAnomalyMitigation?: pulumi.Output; readonly loadBalancingCrossZoneEnabled?: pulumi.Output; readonly name?: pulumi.Output; readonly namePrefix?: pulumi.Output; diff --git a/awsx/yarn.lock b/awsx/yarn.lock index 14bb8b1d8..c91943a5a 100644 --- a/awsx/yarn.lock +++ b/awsx/yarn.lock @@ -1519,15 +1519,14 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@pulumi/aws@6.9.0": - version "6.9.0" - resolved "https://registry.yarnpkg.com/@pulumi/aws/-/aws-6.9.0.tgz#1f65cd5843d22aa477f97468b3d5b8d6311b538c" - integrity sha512-c0ivz01YEuZesfroFSQJdjXivyltdvXBW8hcOhGCwAycjmHpDnXI0HSXk9aIkwxVrUBAW0MQYEa+QRHb5W2V1Q== +"@pulumi/aws@6.32.0": + version "6.32.0" + resolved "https://registry.yarnpkg.com/@pulumi/aws/-/aws-6.32.0.tgz#3afd3f938b44fc12de250c70fe773d8452c29d5a" + integrity sha512-kXoRn427RjSALvyEwMI5wZibNf8lRlp16vgPfI2n2OT7CLvtmqnI16IRPJ01gVf8I95sku1meKqXwXAQ+2O1Zw== dependencies: "@pulumi/pulumi" "^3.0.0" builtin-modules "3.0.0" mime "^2.0.0" - read-package-tree "^5.2.1" resolve "^1.7.1" "@pulumi/docker@4.5.1": @@ -4389,7 +4388,7 @@ read-package-json@^2.0.0: normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" -read-package-tree@^5.2.1, read-package-tree@^5.3.1: +read-package-tree@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== diff --git a/schema.json b/schema.json index afe732d66..00fcfa9a2 100644 --- a/schema.json +++ b/schema.json @@ -32,14 +32,14 @@ }, "java": { "dependencies": { - "com.pulumi:aws": "6.9.0", + "com.pulumi:aws": "6.32.0", "com.pulumi:docker": "4.5.1" } }, "nodejs": { "dependencies": { "@aws-sdk/client-ecs": "^3.405.0", - "@pulumi/aws": "^6.9.0", + "@pulumi/aws": "^6.32.0", "@pulumi/docker": "^4.5.1", "@pulumi/pulumi": "^3.0.0", "@types/aws-lambda": "^8.10.23", @@ -102,7 +102,7 @@ "corsRules": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketCorsRule:BucketCorsRule" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketCorsRule:BucketCorsRule" }, "description": "A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below).\n" }, @@ -113,7 +113,7 @@ "grants": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketGrant:BucketGrant" + "$ref": "/aws/v6.32.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) (documented below). Conflicts with `acl`.\n" }, @@ -124,19 +124,19 @@ "lifecycleRules": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketLifecycleRule:BucketLifecycleRule" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketLifecycleRule:BucketLifecycleRule" }, "description": "A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below).\n" }, "loggings": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketLogging:BucketLogging" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketLogging:BucketLogging" }, "description": "A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below).\n" }, "objectLockConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketObjectLockConfiguration:BucketObjectLockConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketObjectLockConfiguration:BucketObjectLockConfiguration", "description": "A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below)\n\n\u003e **NOTE:** You cannot use `acceleration_status` in `cn-north-1` or `us-gov-west-1`\n" }, "policy": { @@ -144,7 +144,7 @@ "description": "A 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 a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy.\n" }, "replicationConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketReplicationConfiguration:BucketReplicationConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketReplicationConfiguration:BucketReplicationConfiguration", "description": "A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below).\n" }, "requestPayer": { @@ -152,7 +152,7 @@ "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\nthe costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html)\ndeveloper guide for more information.\n" }, "serverSideEncryptionConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketServerSideEncryptionConfiguration:BucketServerSideEncryptionConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketServerSideEncryptionConfiguration:BucketServerSideEncryptionConfiguration", "description": "A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below)\n" }, "tags": { @@ -163,11 +163,11 @@ "description": "A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" }, "versioning": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketVersioning:BucketVersioning", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketVersioning:BucketVersioning", "description": "A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below)\n" }, "website": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:s3/BucketWebsite:BucketWebsite", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:s3/BucketWebsite:BucketWebsite", "description": "A website object (documented below).\n" }, "websiteDomain": { @@ -302,6 +302,11 @@ "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` or `INFREQUENT_ACCESS`.\n", + "willReplaceOnChanges": true + }, "name": { "type": "string", "description": "The name of the log group. If omitted, this provider will assign a random, unique name.\n", @@ -397,7 +402,7 @@ "inlinePolicies": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:iam/RoleInlinePolicy:RoleInlinePolicy" + "$ref": "/aws/v6.32.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, the provider will not manage any inline policies in this resource. Configuring one empty block (i.e., `inline_policy {}`) will cause the provider to remove _all_ inline policies added out of band on `apply`.\n" }, @@ -461,14 +466,14 @@ "egress": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ec2/SecurityGroupEgress:SecurityGroupEgress" + "$ref": "/aws/v6.32.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/v6.9.0/schema.json#/types/aws:ec2/SecurityGroupIngress:SecurityGroupIngress" + "$ref": "/aws/v6.32.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" }, @@ -690,7 +695,7 @@ ] }, "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 `route_table_id`),\nSecurity Groups - (an association between a VPC endpoint and a single `security_group_id`),\nand Subnets - (an association between a VPC endpoint and a single `subnet_id`) and\na VPC Endpoint resource with `route_table_ids` and `subnet_ids` 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{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst s3 = new aws.ec2.VpcEndpoint(\"s3\", {\n vpcId: aws_vpc.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=aws_vpc[\"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 = aws_vpc.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/v6/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(aws_vpc.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(aws_vpc.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: ${aws_vpc.main.id}\n serviceName: com.amazonaws.us-west-2.s3\n```\n{{% /example %}}\n{{% example %}}\n### Basic w/ Tags\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst s3 = new aws.ec2.VpcEndpoint(\"s3\", {\n vpcId: aws_vpc.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=aws_vpc[\"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 = aws_vpc.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/v6/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(aws_vpc.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(aws_vpc.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: ${aws_vpc.main.id}\n serviceName: com.amazonaws.us-west-2.s3\n tags:\n Environment: test\n```\n{{% /example %}}\n{{% example %}}\n### Interface Endpoint Type\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst ec2 = new aws.ec2.VpcEndpoint(\"ec2\", {\n vpcId: aws_vpc.main.id,\n serviceName: \"com.amazonaws.us-west-2.ec2\",\n vpcEndpointType: \"Interface\",\n securityGroupIds: [aws_security_group.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=aws_vpc[\"main\"][\"id\"],\n service_name=\"com.amazonaws.us-west-2.ec2\",\n vpc_endpoint_type=\"Interface\",\n security_group_ids=[aws_security_group[\"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 = aws_vpc.Main.Id,\n ServiceName = \"com.amazonaws.us-west-2.ec2\",\n VpcEndpointType = \"Interface\",\n SecurityGroupIds = new[]\n {\n aws_security_group.Sg1.Id,\n },\n PrivateDnsEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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(aws_vpc.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\taws_security_group.Sg1.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(aws_vpc.main().id())\n .serviceName(\"com.amazonaws.us-west-2.ec2\")\n .vpcEndpointType(\"Interface\")\n .securityGroupIds(aws_security_group.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: ${aws_vpc.main.id}\n serviceName: com.amazonaws.us-west-2.ec2\n vpcEndpointType: Interface\n securityGroupIds:\n - ${aws_security_group.sg1.id}\n privateDnsEnabled: true\n```\n{{% /example %}}\n{{% example %}}\n### Gateway Load Balancer Endpoint Type\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst current = aws.getCallerIdentity({});\nconst exampleVpcEndpointService = new aws.ec2.VpcEndpointService(\"exampleVpcEndpointService\", {\n acceptanceRequired: false,\n allowedPrincipals: [current.then(current =\u003e current.arn)],\n gatewayLoadBalancerArns: [aws_lb.example.arn],\n});\nconst exampleVpcEndpoint = new aws.ec2.VpcEndpoint(\"exampleVpcEndpoint\", {\n serviceName: exampleVpcEndpointService.serviceName,\n subnetIds: [aws_subnet.example.id],\n vpcEndpointType: exampleVpcEndpointService.serviceType,\n vpcId: aws_vpc.example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\nexample_vpc_endpoint_service = aws.ec2.VpcEndpointService(\"exampleVpcEndpointService\",\n acceptance_required=False,\n allowed_principals=[current.arn],\n gateway_load_balancer_arns=[aws_lb[\"example\"][\"arn\"]])\nexample_vpc_endpoint = aws.ec2.VpcEndpoint(\"exampleVpcEndpoint\",\n service_name=example_vpc_endpoint_service.service_name,\n subnet_ids=[aws_subnet[\"example\"][\"id\"]],\n vpc_endpoint_type=example_vpc_endpoint_service.service_type,\n vpc_id=aws_vpc[\"example\"][\"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 exampleVpcEndpointService = new Aws.Ec2.VpcEndpointService(\"exampleVpcEndpointService\", new()\n {\n AcceptanceRequired = false,\n AllowedPrincipals = new[]\n {\n current.Apply(getCallerIdentityResult =\u003e getCallerIdentityResult.Arn),\n },\n GatewayLoadBalancerArns = new[]\n {\n aws_lb.Example.Arn,\n },\n });\n\n var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint(\"exampleVpcEndpoint\", new()\n {\n ServiceName = exampleVpcEndpointService.ServiceName,\n SubnetIds = new[]\n {\n aws_subnet.Example.Id,\n },\n VpcEndpointType = exampleVpcEndpointService.ServiceType,\n VpcId = aws_vpc.Example.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, \"exampleVpcEndpointService\", \u0026ec2.VpcEndpointServiceArgs{\n\t\t\tAcceptanceRequired: pulumi.Bool(false),\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.Arn),\n\t\t\t},\n\t\t\tGatewayLoadBalancerArns: pulumi.StringArray{\n\t\t\t\taws_lb.Example.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, \"exampleVpcEndpoint\", \u0026ec2.VpcEndpointArgs{\n\t\t\tServiceName: exampleVpcEndpointService.ServiceName,\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\taws_subnet.Example.Id,\n\t\t\t},\n\t\t\tVpcEndpointType: exampleVpcEndpointService.ServiceType,\n\t\t\tVpcId: pulumi.Any(aws_vpc.Example.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();\n\n var exampleVpcEndpointService = new VpcEndpointService(\"exampleVpcEndpointService\", VpcEndpointServiceArgs.builder() \n .acceptanceRequired(false)\n .allowedPrincipals(current.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.arn()))\n .gatewayLoadBalancerArns(aws_lb.example().arn())\n .build());\n\n var exampleVpcEndpoint = new VpcEndpoint(\"exampleVpcEndpoint\", VpcEndpointArgs.builder() \n .serviceName(exampleVpcEndpointService.serviceName())\n .subnetIds(aws_subnet.example().id())\n .vpcEndpointType(exampleVpcEndpointService.serviceType())\n .vpcId(aws_vpc.example().id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleVpcEndpointService:\n type: aws:ec2:VpcEndpointService\n properties:\n acceptanceRequired: false\n allowedPrincipals:\n - ${current.arn}\n gatewayLoadBalancerArns:\n - ${aws_lb.example.arn}\n exampleVpcEndpoint:\n type: aws:ec2:VpcEndpoint\n properties:\n serviceName: ${exampleVpcEndpointService.serviceName}\n subnetIds:\n - ${aws_subnet.example.id}\n vpcEndpointType: ${exampleVpcEndpointService.serviceType}\n vpcId: ${aws_vpc.example.id}\nvariables:\n current:\n fn::invoke:\n Function: aws:getCallerIdentity\n Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUsing `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example:\n\n```sh\n $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57\n```\n ", + "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 `route_table_id`),\nSecurity Groups - (an association between a VPC endpoint and a single `security_group_id`),\nand Subnets - (an association between a VPC endpoint and a single `subnet_id`) and\na VPC Endpoint resource with `route_table_ids` and `subnet_ids` 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/v6/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/v6/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### 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/v6/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### 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/v6/go/aws\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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, nil, 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();\n\n var example = new VpcEndpointService(\"example\", VpcEndpointServiceArgs.builder() \n .acceptanceRequired(false)\n .allowedPrincipals(current.applyValue(getCallerIdentityResult -\u003e getCallerIdentityResult.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## Import\n\nUsing `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example:\n\n```sh\n$ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57\n```\n", "properties": { "autoAccept": { "type": "boolean", @@ -698,7 +703,7 @@ "description": "Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account)." }, "dnsOptions": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ec2/VpcEndpointDnsOptions:VpcEndpointDnsOptions", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ec2/VpcEndpointDnsOptions:VpcEndpointDnsOptions", "description": "The DNS options for the endpoint. See dns_options below.\n" }, "ipAddressType": { @@ -913,7 +918,7 @@ "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]" }, "ephemeralStorage": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage", + "$ref": "/aws/v6.32.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 }, @@ -929,7 +934,7 @@ "inferenceAccelerators": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" }, "description": "Configuration block(s) with Inference Accelerators settings. Detailed below.\n", "willReplaceOnChanges": true @@ -961,18 +966,18 @@ "placementConstraints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" }, "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below.\n", "willReplaceOnChanges": true }, "proxyConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", "description": "Configuration block for the App Mesh proxy. Detailed below.\n", "willReplaceOnChanges": true }, "runtimePlatform": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", "description": "Configuration block for runtime_platform that containers in your task may use.\n", "willReplaceOnChanges": true }, @@ -992,10 +997,14 @@ "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 task definition or the one created with the resource. Default is `false`.\n" + }, "volumes": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" }, "description": "Configuration block for volumes that containers in your task may use. Detailed below.\n", "willReplaceOnChanges": true @@ -1025,7 +1034,7 @@ "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]" }, "ephemeralStorage": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage", + "$ref": "/aws/v6.32.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 }, @@ -1041,7 +1050,7 @@ "inferenceAccelerators": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" }, "description": "Configuration block(s) with Inference Accelerators settings. Detailed below.\n", "willReplaceOnChanges": true @@ -1068,18 +1077,18 @@ "placementConstraints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" }, "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below.\n", "willReplaceOnChanges": true }, "proxyConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", "description": "Configuration block for the App Mesh proxy. Detailed below.\n", "willReplaceOnChanges": true }, "runtimePlatform": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", "description": "Configuration block for runtime_platform that containers in your task may use.\n", "willReplaceOnChanges": true }, @@ -1099,10 +1108,14 @@ "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 task definition or the one created with the resource. Default is `false`.\n" + }, "volumes": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" }, "description": "Configuration block for volumes that containers in your task may use. Detailed below.\n", "willReplaceOnChanges": true @@ -1499,7 +1512,7 @@ "type": "string" }, "targetGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2FtargetGroup:TargetGroup" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2FtargetGroup:TargetGroup" } }, "type": "object" @@ -1621,7 +1634,7 @@ "type": "object" }, "awsx:lb:Listener": { - "description": "Provides a Load Balancer Listener resource.\n\n\u003e **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Forward Action\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEndLoadBalancer = new aws.lb.LoadBalancer(\"frontEndLoadBalancer\", {});\n// ...\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"frontEndTargetGroup\", {});\n// ...\nconst frontEndListener = new aws.lb.Listener(\"frontEndListener\", {\n loadBalancerArn: frontEndLoadBalancer.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_load_balancer = aws.lb.LoadBalancer(\"frontEndLoadBalancer\")\n# ...\nfront_end_target_group = aws.lb.TargetGroup(\"frontEndTargetGroup\")\n# ...\nfront_end_listener = aws.lb.Listener(\"frontEndListener\",\n load_balancer_arn=front_end_load_balancer.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=[aws.lb.ListenerDefaultActionArgs(\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 frontEndLoadBalancer = new Aws.LB.LoadBalancer(\"frontEndLoadBalancer\");\n\n // ...\n var frontEndTargetGroup = new Aws.LB.TargetGroup(\"frontEndTargetGroup\");\n\n // ...\n var frontEndListener = new Aws.LB.Listener(\"frontEndListener\", new()\n {\n LoadBalancerArn = frontEndLoadBalancer.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/v6/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\tfrontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, \"frontEndLoadBalancer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"frontEndTargetGroup\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"frontEndListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEndLoadBalancer.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 frontEndLoadBalancer = new LoadBalancer(\"frontEndLoadBalancer\");\n\n var frontEndTargetGroup = new TargetGroup(\"frontEndTargetGroup\");\n\n var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder() \n .loadBalancerArn(frontEndLoadBalancer.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 frontEndLoadBalancer:\n type: aws:lb:LoadBalancer\n frontEndTargetGroup:\n type: aws:lb:TargetGroup\n frontEndListener:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${frontEndLoadBalancer.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\nTo a NLB:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEnd = new aws.lb.Listener(\"frontEnd\", {\n loadBalancerArn: aws_lb.front_end.arn,\n port: 443,\n protocol: \"TLS\",\n certificateArn: \"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n alpnPolicy: \"HTTP2Preferred\",\n defaultActions: [{\n type: \"forward\",\n targetGroupArn: aws_lb_target_group.front_end.arn,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfront_end = aws.lb.Listener(\"frontEnd\",\n load_balancer_arn=aws_lb[\"front_end\"][\"arn\"],\n port=443,\n protocol=\"TLS\",\n certificate_arn=\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n alpn_policy=\"HTTP2Preferred\",\n default_actions=[aws.lb.ListenerDefaultActionArgs(\n type=\"forward\",\n target_group_arn=aws_lb_target_group[\"front_end\"][\"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(\"frontEnd\", new()\n {\n LoadBalancerArn = aws_lb.Front_end.Arn,\n Port = 443,\n Protocol = \"TLS\",\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 = aws_lb_target_group.Front_end.Arn,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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, \"frontEnd\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn),\n\t\t\tPort: pulumi.Int(443),\n\t\t\tProtocol: pulumi.String(\"TLS\"),\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(aws_lb_target_group.Front_end.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(aws_lb.front_end().arn())\n .port(\"443\")\n .protocol(\"TLS\")\n .certificateArn(\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\")\n .alpnPolicy(\"HTTP2Preferred\")\n .defaultActions(ListenerDefaultActionArgs.builder()\n .type(\"forward\")\n .targetGroupArn(aws_lb_target_group.front_end().arn())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontEnd:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${aws_lb.front_end.arn}\n port: '443'\n protocol: TLS\n certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\n alpnPolicy: HTTP2Preferred\n defaultActions:\n - type: forward\n targetGroupArn: ${aws_lb_target_group.front_end.arn}\n```\n{{% /example %}}\n{{% example %}}\n### Redirect Action\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEndLoadBalancer = new aws.lb.LoadBalancer(\"frontEndLoadBalancer\", {});\n// ...\nconst frontEndListener = new aws.lb.Listener(\"frontEndListener\", {\n loadBalancerArn: frontEndLoadBalancer.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_load_balancer = aws.lb.LoadBalancer(\"frontEndLoadBalancer\")\n# ...\nfront_end_listener = aws.lb.Listener(\"frontEndListener\",\n load_balancer_arn=front_end_load_balancer.arn,\n port=80,\n protocol=\"HTTP\",\n default_actions=[aws.lb.ListenerDefaultActionArgs(\n type=\"redirect\",\n redirect=aws.lb.ListenerDefaultActionRedirectArgs(\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 frontEndLoadBalancer = new Aws.LB.LoadBalancer(\"frontEndLoadBalancer\");\n\n // ...\n var frontEndListener = new Aws.LB.Listener(\"frontEndListener\", new()\n {\n LoadBalancerArn = frontEndLoadBalancer.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/v6/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\tfrontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, \"frontEndLoadBalancer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"frontEndListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEndLoadBalancer.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 frontEndLoadBalancer = new LoadBalancer(\"frontEndLoadBalancer\");\n\n var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder() \n .loadBalancerArn(frontEndLoadBalancer.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 frontEndLoadBalancer:\n type: aws:lb:LoadBalancer\n frontEndListener:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${frontEndLoadBalancer.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{{% /example %}}\n{{% example %}}\n### Fixed-response Action\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEndLoadBalancer = new aws.lb.LoadBalancer(\"frontEndLoadBalancer\", {});\n// ...\nconst frontEndListener = new aws.lb.Listener(\"frontEndListener\", {\n loadBalancerArn: frontEndLoadBalancer.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_load_balancer = aws.lb.LoadBalancer(\"frontEndLoadBalancer\")\n# ...\nfront_end_listener = aws.lb.Listener(\"frontEndListener\",\n load_balancer_arn=front_end_load_balancer.arn,\n port=80,\n protocol=\"HTTP\",\n default_actions=[aws.lb.ListenerDefaultActionArgs(\n type=\"fixed-response\",\n fixed_response=aws.lb.ListenerDefaultActionFixedResponseArgs(\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 frontEndLoadBalancer = new Aws.LB.LoadBalancer(\"frontEndLoadBalancer\");\n\n // ...\n var frontEndListener = new Aws.LB.Listener(\"frontEndListener\", new()\n {\n LoadBalancerArn = frontEndLoadBalancer.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/v6/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\tfrontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, \"frontEndLoadBalancer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"frontEndListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEndLoadBalancer.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 frontEndLoadBalancer = new LoadBalancer(\"frontEndLoadBalancer\");\n\n var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder() \n .loadBalancerArn(frontEndLoadBalancer.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 frontEndLoadBalancer:\n type: aws:lb:LoadBalancer\n frontEndListener:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${frontEndLoadBalancer.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{{% /example %}}\n{{% example %}}\n### Authenticate-cognito Action\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEndLoadBalancer = new aws.lb.LoadBalancer(\"frontEndLoadBalancer\", {});\n// ...\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"frontEndTargetGroup\", {});\n// ...\nconst pool = new aws.cognito.UserPool(\"pool\", {});\n// ...\nconst client = new aws.cognito.UserPoolClient(\"client\", {});\n// ...\nconst domain = new aws.cognito.UserPoolDomain(\"domain\", {});\n// ...\nconst frontEndListener = new aws.lb.Listener(\"frontEndListener\", {\n loadBalancerArn: frontEndLoadBalancer.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_load_balancer = aws.lb.LoadBalancer(\"frontEndLoadBalancer\")\n# ...\nfront_end_target_group = aws.lb.TargetGroup(\"frontEndTargetGroup\")\n# ...\npool = aws.cognito.UserPool(\"pool\")\n# ...\nclient = aws.cognito.UserPoolClient(\"client\")\n# ...\ndomain = aws.cognito.UserPoolDomain(\"domain\")\n# ...\nfront_end_listener = aws.lb.Listener(\"frontEndListener\",\n load_balancer_arn=front_end_load_balancer.arn,\n port=80,\n protocol=\"HTTP\",\n default_actions=[\n aws.lb.ListenerDefaultActionArgs(\n type=\"authenticate-cognito\",\n authenticate_cognito=aws.lb.ListenerDefaultActionAuthenticateCognitoArgs(\n user_pool_arn=pool.arn,\n user_pool_client_id=client.id,\n user_pool_domain=domain.domain,\n ),\n ),\n aws.lb.ListenerDefaultActionArgs(\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 frontEndLoadBalancer = new Aws.LB.LoadBalancer(\"frontEndLoadBalancer\");\n\n // ...\n var frontEndTargetGroup = new Aws.LB.TargetGroup(\"frontEndTargetGroup\");\n\n // ...\n var pool = new Aws.Cognito.UserPool(\"pool\");\n\n // ...\n var client = new Aws.Cognito.UserPoolClient(\"client\");\n\n // ...\n var domain = new Aws.Cognito.UserPoolDomain(\"domain\");\n\n // ...\n var frontEndListener = new Aws.LB.Listener(\"frontEndListener\", new()\n {\n LoadBalancerArn = frontEndLoadBalancer.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/v6/go/aws/cognito\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tfrontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, \"frontEndLoadBalancer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"frontEndTargetGroup\", 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, \"frontEndListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEndLoadBalancer.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 frontEndLoadBalancer = new LoadBalancer(\"frontEndLoadBalancer\");\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(frontEndLoadBalancer.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 frontEndLoadBalancer:\n type: aws:lb:LoadBalancer\n frontEndTargetGroup:\n type: aws:lb:TargetGroup\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 properties:\n loadBalancerArn: ${frontEndLoadBalancer.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{{% /example %}}\n{{% example %}}\n### Authenticate-OIDC Action\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst frontEndLoadBalancer = new aws.lb.LoadBalancer(\"frontEndLoadBalancer\", {});\n// ...\nconst frontEndTargetGroup = new aws.lb.TargetGroup(\"frontEndTargetGroup\", {});\n// ...\nconst frontEndListener = new aws.lb.Listener(\"frontEndListener\", {\n loadBalancerArn: frontEndLoadBalancer.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_load_balancer = aws.lb.LoadBalancer(\"frontEndLoadBalancer\")\n# ...\nfront_end_target_group = aws.lb.TargetGroup(\"frontEndTargetGroup\")\n# ...\nfront_end_listener = aws.lb.Listener(\"frontEndListener\",\n load_balancer_arn=front_end_load_balancer.arn,\n port=80,\n protocol=\"HTTP\",\n default_actions=[\n aws.lb.ListenerDefaultActionArgs(\n type=\"authenticate-oidc\",\n authenticate_oidc=aws.lb.ListenerDefaultActionAuthenticateOidcArgs(\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 aws.lb.ListenerDefaultActionArgs(\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 frontEndLoadBalancer = new Aws.LB.LoadBalancer(\"frontEndLoadBalancer\");\n\n // ...\n var frontEndTargetGroup = new Aws.LB.TargetGroup(\"frontEndTargetGroup\");\n\n // ...\n var frontEndListener = new Aws.LB.Listener(\"frontEndListener\", new()\n {\n LoadBalancerArn = frontEndLoadBalancer.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/v6/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\tfrontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, \"frontEndLoadBalancer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontEndTargetGroup, err := lb.NewTargetGroup(ctx, \"frontEndTargetGroup\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewListener(ctx, \"frontEndListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: frontEndLoadBalancer.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 frontEndLoadBalancer = new LoadBalancer(\"frontEndLoadBalancer\");\n\n var frontEndTargetGroup = new TargetGroup(\"frontEndTargetGroup\");\n\n var frontEndListener = new Listener(\"frontEndListener\", ListenerArgs.builder() \n .loadBalancerArn(frontEndLoadBalancer.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 frontEndLoadBalancer:\n type: aws:lb:LoadBalancer\n frontEndTargetGroup:\n type: aws:lb:TargetGroup\n frontEndListener:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${frontEndLoadBalancer.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{{% /example %}}\n{{% example %}}\n### Gateway Load Balancer Listener\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleLoadBalancer = new aws.lb.LoadBalancer(\"exampleLoadBalancer\", {\n loadBalancerType: \"gateway\",\n subnetMappings: [{\n subnetId: aws_subnet.example.id,\n }],\n});\nconst exampleTargetGroup = new aws.lb.TargetGroup(\"exampleTargetGroup\", {\n port: 6081,\n protocol: \"GENEVE\",\n vpcId: aws_vpc.example.id,\n healthCheck: {\n port: \"80\",\n protocol: \"HTTP\",\n },\n});\nconst exampleListener = new aws.lb.Listener(\"exampleListener\", {\n loadBalancerArn: exampleLoadBalancer.id,\n defaultActions: [{\n targetGroupArn: exampleTargetGroup.id,\n type: \"forward\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_load_balancer = aws.lb.LoadBalancer(\"exampleLoadBalancer\",\n load_balancer_type=\"gateway\",\n subnet_mappings=[aws.lb.LoadBalancerSubnetMappingArgs(\n subnet_id=aws_subnet[\"example\"][\"id\"],\n )])\nexample_target_group = aws.lb.TargetGroup(\"exampleTargetGroup\",\n port=6081,\n protocol=\"GENEVE\",\n vpc_id=aws_vpc[\"example\"][\"id\"],\n health_check=aws.lb.TargetGroupHealthCheckArgs(\n port=\"80\",\n protocol=\"HTTP\",\n ))\nexample_listener = aws.lb.Listener(\"exampleListener\",\n load_balancer_arn=example_load_balancer.id,\n default_actions=[aws.lb.ListenerDefaultActionArgs(\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 exampleLoadBalancer = new Aws.LB.LoadBalancer(\"exampleLoadBalancer\", new()\n {\n LoadBalancerType = \"gateway\",\n SubnetMappings = new[]\n {\n new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs\n {\n SubnetId = aws_subnet.Example.Id,\n },\n },\n });\n\n var exampleTargetGroup = new Aws.LB.TargetGroup(\"exampleTargetGroup\", new()\n {\n Port = 6081,\n Protocol = \"GENEVE\",\n VpcId = aws_vpc.Example.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(\"exampleListener\", new()\n {\n LoadBalancerArn = exampleLoadBalancer.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/v6/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\texampleLoadBalancer, err := lb.NewLoadBalancer(ctx, \"exampleLoadBalancer\", \u0026lb.LoadBalancerArgs{\n\t\t\tLoadBalancerType: pulumi.String(\"gateway\"),\n\t\t\tSubnetMappings: lb.LoadBalancerSubnetMappingArray{\n\t\t\t\t\u0026lb.LoadBalancerSubnetMappingArgs{\n\t\t\t\t\tSubnetId: pulumi.Any(aws_subnet.Example.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, \"exampleTargetGroup\", \u0026lb.TargetGroupArgs{\n\t\t\tPort: pulumi.Int(6081),\n\t\t\tProtocol: pulumi.String(\"GENEVE\"),\n\t\t\tVpcId: pulumi.Any(aws_vpc.Example.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, \"exampleListener\", \u0026lb.ListenerArgs{\n\t\t\tLoadBalancerArn: exampleLoadBalancer.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 exampleLoadBalancer = new LoadBalancer(\"exampleLoadBalancer\", LoadBalancerArgs.builder() \n .loadBalancerType(\"gateway\")\n .subnetMappings(LoadBalancerSubnetMappingArgs.builder()\n .subnetId(aws_subnet.example().id())\n .build())\n .build());\n\n var exampleTargetGroup = new TargetGroup(\"exampleTargetGroup\", TargetGroupArgs.builder() \n .port(6081)\n .protocol(\"GENEVE\")\n .vpcId(aws_vpc.example().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(exampleLoadBalancer.id())\n .defaultActions(ListenerDefaultActionArgs.builder()\n .targetGroupArn(exampleTargetGroup.id())\n .type(\"forward\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleLoadBalancer:\n type: aws:lb:LoadBalancer\n properties:\n loadBalancerType: gateway\n subnetMappings:\n - subnetId: ${aws_subnet.example.id}\n exampleTargetGroup:\n type: aws:lb:TargetGroup\n properties:\n port: 6081\n protocol: GENEVE\n vpcId: ${aws_vpc.example.id}\n healthCheck:\n port: 80\n protocol: HTTP\n exampleListener:\n type: aws:lb:Listener\n properties:\n loadBalancerArn: ${exampleLoadBalancer.id}\n defaultActions:\n - targetGroupArn: ${exampleTargetGroup.id}\n type: forward\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUsing `pulumi import`, import listeners using their ARN. For example:\n\n```sh\n $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96\n```\n ", + "description": "Provides a Load Balancer Listener resource.\n\n\u003e **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. 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=[aws.lb.ListenerDefaultActionArgs(\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/v6/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\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 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 certificate_arn=\"arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4\",\n alpn_policy=\"HTTP2Preferred\",\n default_actions=[aws.lb.ListenerDefaultActionArgs(\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 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/v6/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\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 .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 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=[aws.lb.ListenerDefaultActionArgs(\n type=\"redirect\",\n redirect=aws.lb.ListenerDefaultActionRedirectArgs(\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/v6/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=[aws.lb.ListenerDefaultActionArgs(\n type=\"fixed-response\",\n fixed_response=aws.lb.ListenerDefaultActionFixedResponseArgs(\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/v6/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 aws.lb.ListenerDefaultActionArgs(\n type=\"authenticate-cognito\",\n authenticate_cognito=aws.lb.ListenerDefaultActionAuthenticateCognitoArgs(\n user_pool_arn=pool.arn,\n user_pool_client_id=client.id,\n user_pool_domain=domain.domain,\n ),\n ),\n aws.lb.ListenerDefaultActionArgs(\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/v6/go/aws/cognito\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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 aws.lb.ListenerDefaultActionArgs(\n type=\"authenticate-oidc\",\n authenticate_oidc=aws.lb.ListenerDefaultActionAuthenticateOidcArgs(\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 aws.lb.ListenerDefaultActionArgs(\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/v6/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### 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=[aws.lb.LoadBalancerSubnetMappingArgs(\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=aws.lb.TargetGroupHealthCheckArgs(\n port=\"80\",\n protocol=\"HTTP\",\n ))\nexample_listener = aws.lb.Listener(\"example\",\n load_balancer_arn=example.id,\n default_actions=[aws.lb.ListenerDefaultActionArgs(\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/v6/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=[aws.lb.ListenerDefaultActionArgs(\n target_group_arn=example_target_group.id,\n type=\"forward\",\n )],\n mutual_authentication=aws.lb.ListenerMutualAuthenticationArgs(\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/v6/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\nUsing `pulumi import`, import listeners using their ARN. For example:\n\n```sh\n$ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96\n```\n", "properties": { "alpnPolicy": { "type": "string", @@ -1634,10 +1647,14 @@ "defaultActions": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/ListenerDefaultAction:ListenerDefaultAction" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/ListenerDefaultAction:ListenerDefaultAction" }, "description": "Configuration block for default actions. Detailed below.\n" }, + "mutualAuthentication": { + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/ListenerMutualAuthentication:ListenerMutualAuthentication", + "description": "The mutual authentication configuration information. Detailed below.\n" + }, "port": { "type": "integer", "description": "Port on which the load balancer is listening. Not valid for Gateway Load Balancers.\n" @@ -1661,7 +1678,7 @@ "type": "object" }, "awsx:lb:TargetGroup": { - "description": "Provides a Target Group resource for use with Load Balancer resources.\n\n\u003e **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Instance Target Group\n\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 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 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 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/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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 .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 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{{% /example %}}\n{{% example %}}\n### IP Target Group\n\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 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 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 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/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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 .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 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{{% /example %}}\n{{% example %}}\n### Lambda Target Group\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst lambda_example = new aws.lb.TargetGroup(\"lambda-example\", {targetType: \"lambda\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nlambda_example = aws.lb.TargetGroup(\"lambda-example\", 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 TargetType = \"lambda\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\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 .targetType(\"lambda\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n lambda-example:\n type: aws:lb:TargetGroup\n properties:\n targetType: lambda\n```\n{{% /example %}}\n{{% example %}}\n### ALB Target Group\n\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 targetType: \"alb\",\n port: 80,\n protocol: \"TCP\",\n vpcId: aws_vpc.main.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nalb_example = aws.lb.TargetGroup(\"alb-example\",\n target_type=\"alb\",\n port=80,\n protocol=\"TCP\",\n vpc_id=aws_vpc[\"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 TargetType = \"alb\",\n Port = 80,\n Protocol = \"TCP\",\n VpcId = aws_vpc.Main.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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\tTargetType: pulumi.String(\"alb\"),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tVpcId: pulumi.Any(aws_vpc.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 .targetType(\"alb\")\n .port(80)\n .protocol(\"TCP\")\n .vpcId(aws_vpc.main().id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alb-example:\n type: aws:lb:TargetGroup\n properties:\n targetType: alb\n port: 80\n protocol: TCP\n vpcId: ${aws_vpc.main.id}\n```\n{{% /example %}}\n{{% example %}}\n### Target group with unhealthy connection termination disabled\n\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 port: 25,\n protocol: \"TCP\",\n vpcId: aws_vpc.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 port=25,\n protocol=\"TCP\",\n vpc_id=aws_vpc[\"main\"][\"id\"],\n target_health_states=[aws.lb.TargetGroupTargetHealthStateArgs(\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 Port = 25,\n Protocol = \"TCP\",\n VpcId = aws_vpc.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/v6/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\tPort: pulumi.Int(25),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tVpcId: pulumi.Any(aws_vpc.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 .port(25)\n .protocol(\"TCP\")\n .vpcId(aws_vpc.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 port: 25\n protocol: TCP\n vpcId: ${aws_vpc.main.id}\n targetHealthStates:\n - enableUnhealthyConnectionTermination: false\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUsing `pulumi import`, import Target Groups using their ARN. For example:\n\n```sh\n $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314\n```\n ", + "description": "Provides a Target Group resource for use with Load Balancer resources.\n\n\u003e **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. 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/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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/v6/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/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/v6/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/v6/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=[aws.lb.TargetGroupTargetHealthStateArgs(\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/v6/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## Import\n\nUsing `pulumi import`, import Target Groups using their ARN. For example:\n\n```sh\n$ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314\n```\n", "properties": { "connectionTermination": { "type": "boolean", @@ -1672,7 +1689,7 @@ "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/v6.9.0/schema.json#/types/aws:lb/TargetGroupHealthCheck:TargetGroupHealthCheck", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/TargetGroupHealthCheck:TargetGroupHealthCheck", "description": "Health Check configuration block. Detailed below.\n" }, "ipAddressType": { @@ -1686,7 +1703,11 @@ }, "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 `round_robin` or `least_outstanding_requests`. The default is `round_robin`.\n" + "description": "Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`.\n" + }, + "loadBalancingAnomalyMitigation": { + "type": "string", + "description": "Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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", @@ -1713,7 +1734,7 @@ }, "protocol": { "type": "string", - "description": "Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`.\n", + "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 `target_type` is `instance`, `ip`, or `alb`.\nDoes not apply when `target_type` is `lambda`.\n", "willReplaceOnChanges": true }, "protocolVersion": { @@ -1730,7 +1751,7 @@ "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/v6.9.0/schema.json#/types/aws:lb/TargetGroupStickiness:TargetGroupStickiness", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/TargetGroupStickiness:TargetGroupStickiness", "description": "Stickiness configuration block. Detailed below.\n" }, "tags": { @@ -1743,20 +1764,20 @@ "targetFailovers": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/TargetGroupTargetFailover:TargetGroupTargetFailover" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/TargetGroupTargetFailover:TargetGroupTargetFailover" }, "description": "Target failover block. Only applicable for Gateway Load Balancer target groups. See target_failover for more information.\n" }, "targetHealthStates": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/TargetGroupTargetHealthState:TargetGroupTargetHealthState" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/TargetGroupTargetHealthState:TargetGroupTargetHealthState" }, "description": "Target health state block. Only applicable for Network Load Balancer target groups when `protocol` is `TCP` or `TLS`. See target_health_state for more information.\n" }, "targetType": { "type": "string", - "description": "Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`.\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 `ip`, 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 `lambda` target type.\n\nApplication Load Balancers do not support the `alb` target type.\n", + "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 `instance`.\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 `ip`, 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 `lambda` target type.\n\nApplication Load Balancers do not support the `alb` target type.\n", "willReplaceOnChanges": true }, "vpcId": { @@ -1773,15 +1794,15 @@ "awsx:cloudtrail:Trail": { "properties": { "bucket": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:s3%2Fbucket:Bucket", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:s3%2Fbucket:Bucket", "description": "The managed S3 Bucket where the Trail will place its logs." }, "logGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", "description": "The managed Cloudwatch Log Group." }, "trail": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:cloudtrail%2Ftrail:Trail", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:cloudtrail%2Ftrail:Trail", "description": "The CloudTrail Trail.", "language": { "csharp": { @@ -1797,7 +1818,7 @@ "advancedEventSelectors": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:cloudtrail/TrailAdvancedEventSelector:TrailAdvancedEventSelector" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:cloudtrail/TrailAdvancedEventSelector:TrailAdvancedEventSelector" }, "description": "Specifies an advanced event selector for enabling data event logging. Fields documented below. Conflicts with `event_selector`.\n" }, @@ -1817,7 +1838,7 @@ "eventSelectors": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:cloudtrail/TrailEventSelector:TrailEventSelector" + "$ref": "/aws/v6.32.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 `advanced_event_selector`.\n" }, @@ -1828,7 +1849,7 @@ "insightSelectors": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:cloudtrail/TrailInsightSelector:TrailInsightSelector" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:cloudtrail/TrailInsightSelector:TrailInsightSelector" }, "description": "Configuration block for identifying unusual operational activity. See details below.\n" }, @@ -1905,12 +1926,12 @@ "eips": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2feip:Eip" + "$ref": "/aws/v6.32.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/v6.9.0/schema.json#/resources/aws:ec2%2finternetGateway:InternetGateway", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2finternetGateway:InternetGateway", "description": "The Internet Gateway for the VPC." }, "isolatedSubnetIds": { @@ -1922,7 +1943,7 @@ "natGateways": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fnatGateway:NatGateway" + "$ref": "/aws/v6.32.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." }, @@ -1941,21 +1962,21 @@ "routeTableAssociations": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2frouteTableAssociation:RouteTableAssociation" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2frouteTableAssociation:RouteTableAssociation" }, "description": "The Route Table Associations for the VPC." }, "routeTables": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2frouteTable:RouteTable" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2frouteTable:RouteTable" }, "description": "The Route Tables for the VPC." }, "routes": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2froute:Route" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2froute:Route" }, "description": "The Routes for the VPC." }, @@ -1969,12 +1990,12 @@ "subnets": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet" }, "description": "The VPC's subnets." }, "vpc": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fvpc:Vpc", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2fvpc:Vpc", "description": "The VPC.", "language": { "csharp": { @@ -1985,7 +2006,7 @@ "vpcEndpoints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fvpcEndpoint:VpcEndpoint" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2fvpcEndpoint:VpcEndpoint" }, "description": "The VPC Endpoints that are enabled" }, @@ -2192,11 +2213,11 @@ "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/v6.9.0/schema.json#/resources/aws:ecr%2flifecyclePolicy:LifecyclePolicy", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecr%2flifecyclePolicy:LifecyclePolicy", "description": "Underlying repository lifecycle policy" }, "repository": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ecr%2frepository:Repository", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecr%2frepository:Repository", "description": "Underlying Repository resource", "language": { "csharp": { @@ -2218,7 +2239,7 @@ "encryptionConfigurations": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecr/RepositoryEncryptionConfiguration:RepositoryEncryptionConfiguration" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecr/RepositoryEncryptionConfiguration:RepositoryEncryptionConfiguration" }, "description": "Encryption configuration for the repository. See below for schema.\n", "willReplaceOnChanges": true @@ -2228,7 +2249,7 @@ "description": "If `true`, will delete the repository even if it contains images.\nDefaults to `false`.\n" }, "imageScanningConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecr/RepositoryImageScanningConfiguration:RepositoryImageScanningConfiguration", + "$ref": "/aws/v6.32.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": { @@ -2259,11 +2280,11 @@ "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/v6.9.0/schema.json#/resources/aws:ecs%2fservice:Service", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2fservice:Service", "description": "Underlying ECS Service resource" }, "taskDefinition": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", "description": "Underlying EC2 Task definition component resource if created from args" } }, @@ -2272,7 +2293,7 @@ ], "inputProperties": { "alarms": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms", "description": "Information about the CloudWatch alarms. See below.\n" }, "cluster": { @@ -2285,11 +2306,11 @@ "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/v6.9.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker", "description": "Configuration block for deployment circuit breaker. See below.\n" }, "deploymentController": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController", "description": "Configuration block for deployment controller configuration. See below.\n" }, "deploymentMaximumPercent": { @@ -2328,7 +2349,7 @@ "loadBalancers": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer" }, "description": "Configuration block for load balancers. See below.\n" }, @@ -2338,20 +2359,20 @@ "willReplaceOnChanges": true }, "networkConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration", "description": "Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` 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/v6.9.0/schema.json#/types/aws:ecs/ServiceOrderedPlacementStrategy:ServiceOrderedPlacementStrategy" + "$ref": "/aws/v6.32.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 `force_new_deployment` is enabled. The maximum number of `ordered_placement_strategy` blocks is `5`. See below.\n" }, "placementConstraints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServicePlacementConstraint:ServicePlacementConstraint" + "$ref": "/aws/v6.32.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 `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below.\n" }, @@ -2369,11 +2390,11 @@ "willReplaceOnChanges": true }, "serviceConnectConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration", "description": "The 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/v6.9.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries", "description": "Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below.\n" }, "tags": { @@ -2397,7 +2418,7 @@ "additionalProperties": { "type": "string" }, - "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above.\n" + "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above.\n" } }, "isComponent": true @@ -2406,26 +2427,26 @@ "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/v6.9.0/schema.json#/resources/aws:iam%2Frole:Role", + "$ref": "/aws/v6.32.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/v6.9.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer" }, "description": "Computed load balancers from target groups specified of container port mappings." }, "logGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", "description": "Auto-created Log Group resource for use by containers." }, "taskDefinition": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", "description": "Underlying ECS Task Definition resource" }, "taskRole": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:iam%2Frole:Role", + "$ref": "/aws/v6.32.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." } }, @@ -2453,7 +2474,7 @@ "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]" }, "ephemeralStorage": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage", + "$ref": "/aws/v6.32.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 }, @@ -2469,7 +2490,7 @@ "inferenceAccelerators": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" }, "description": "Configuration block(s) with Inference Accelerators settings. Detailed below.\n", "willReplaceOnChanges": true @@ -2501,18 +2522,18 @@ "placementConstraints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" }, "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below.\n", "willReplaceOnChanges": true }, "proxyConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", "description": "Configuration block for the App Mesh proxy. Detailed below.\n", "willReplaceOnChanges": true }, "runtimePlatform": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", "description": "Configuration block for runtime_platform that containers in your task may use.\n", "willReplaceOnChanges": true }, @@ -2532,10 +2553,14 @@ "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 task definition or the one created with the resource. Default is `false`.\n" + }, "volumes": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" }, "description": "Configuration block for volumes that containers in your task may use. Detailed below.\n", "willReplaceOnChanges": true @@ -2547,11 +2572,11 @@ "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/v6.9.0/schema.json#/resources/aws:ecs%2fservice:Service", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2fservice:Service", "description": "Underlying ECS Service resource" }, "taskDefinition": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", "description": "Underlying Fargate component resource if created from args" } }, @@ -2560,7 +2585,7 @@ ], "inputProperties": { "alarms": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceAlarms:ServiceAlarms", "description": "Information about the CloudWatch alarms. See below.\n" }, "assignPublicIp": { @@ -2577,11 +2602,11 @@ "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/v6.9.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceDeploymentCircuitBreaker:ServiceDeploymentCircuitBreaker", "description": "Configuration block for deployment circuit breaker. See below.\n" }, "deploymentController": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceDeploymentController:ServiceDeploymentController", "description": "Configuration block for deployment controller configuration. See below.\n" }, "deploymentMaximumPercent": { @@ -2620,7 +2645,7 @@ "loadBalancers": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceLoadBalancer:ServiceLoadBalancer" }, "description": "Configuration block for load balancers. See below.\n" }, @@ -2630,13 +2655,13 @@ "willReplaceOnChanges": true }, "networkConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceNetworkConfiguration:ServiceNetworkConfiguration", "description": "Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` 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/v6.9.0/schema.json#/types/aws:ecs/ServicePlacementConstraint:ServicePlacementConstraint" + "$ref": "/aws/v6.32.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 `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below.\n" }, @@ -2654,11 +2679,11 @@ "willReplaceOnChanges": true }, "serviceConnectConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceServiceConnectConfiguration:ServiceServiceConnectConfiguration", "description": "The 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/v6.9.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/ServiceServiceRegistries:ServiceServiceRegistries", "description": "Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below.\n" }, "tags": { @@ -2682,7 +2707,7 @@ "additionalProperties": { "type": "string" }, - "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above.\n" + "description": "Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above.\n" } }, "isComponent": true @@ -2691,26 +2716,26 @@ "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/v6.9.0/schema.json#/resources/aws:iam%2Frole:Role", + "$ref": "/aws/v6.32.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/v6.9.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs%2FServiceLoadBalancer:ServiceLoadBalancer" }, "description": "Computed load balancers from target groups specified of container port mappings." }, "logGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:cloudwatch%2FlogGroup:LogGroup", "description": "Auto-created Log Group resource for use by containers." }, "taskDefinition": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ecs%2FtaskDefinition:TaskDefinition", "description": "Underlying ECS Task Definition resource" }, "taskRole": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:iam%2Frole:Role", + "$ref": "/aws/v6.32.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." } }, @@ -2738,7 +2763,7 @@ "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]" }, "ephemeralStorage": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionEphemeralStorage:TaskDefinitionEphemeralStorage", + "$ref": "/aws/v6.32.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 }, @@ -2754,7 +2779,7 @@ "inferenceAccelerators": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionInferenceAccelerator:TaskDefinitionInferenceAccelerator" }, "description": "Configuration block(s) with Inference Accelerators settings. Detailed below.\n", "willReplaceOnChanges": true @@ -2781,18 +2806,18 @@ "placementConstraints": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionPlacementConstraint:TaskDefinitionPlacementConstraint" }, "description": "Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below.\n", "willReplaceOnChanges": true }, "proxyConfiguration": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionProxyConfiguration:TaskDefinitionProxyConfiguration", "description": "Configuration block for the App Mesh proxy. Detailed below.\n", "willReplaceOnChanges": true }, "runtimePlatform": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionRuntimePlatform:TaskDefinitionRuntimePlatform", "description": "Configuration block for runtime_platform that containers in your task may use.\n", "willReplaceOnChanges": true }, @@ -2812,10 +2837,14 @@ "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 task definition or the one created with the resource. Default is `false`.\n" + }, "volumes": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:ecs/TaskDefinitionVolume:TaskDefinitionVolume" }, "description": "Configuration block for volumes that containers in your task may use. Detailed below.\n", "willReplaceOnChanges": true @@ -2827,22 +2856,22 @@ "description": "Provides an Application Load Balancer resource with listeners, default target group and default security group.", "properties": { "defaultSecurityGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fsecurityGroup:SecurityGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:ec2%2fsecurityGroup:SecurityGroup", "description": "Default security group, if auto-created" }, "defaultTargetGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", "description": "Default target group, if auto-created" }, "listeners": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2flistener:Listener" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2flistener:Listener" }, "description": "Listeners created as part of this load balancer" }, "loadBalancer": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer", "description": "Underlying Load Balancer resource" }, "vpcId": { @@ -2857,12 +2886,20 @@ ], "inputProperties": { "accessLogs": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs", - "description": "An Access Logs block. Access Logs documented below.\n" + "$ref": "/aws/v6.32.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/v6.32.0/schema.json#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs", + "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n" }, "customerOwnedIpv4Pool": { "type": "string", - "description": "The ID of the customer owned ipv4 pool to use for this load balancer.\n", + "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n", "willReplaceOnChanges": true }, "defaultSecurityGroup": { @@ -2881,15 +2918,15 @@ }, "desyncMitigationMode": { "type": "string", - "description": "Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n" + "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n" }, "dnsRecordClientRoutingPolicy": { "type": "string", - "description": "Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers.\n" + "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers.\n" }, "dropInvalidHeaderFields": { "type": "boolean", - "description": "Indicates 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 `application`.\n" + "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 `application`.\n" }, "enableDeletionProtection": { "type": "boolean", @@ -2897,23 +2934,27 @@ }, "enableHttp2": { "type": "boolean", - "description": "Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n" + "description": "Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`.\n" }, "enableTlsVersionAndCipherSuiteHeaders": { "type": "boolean", - "description": "Indicates 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 `application`. Defaults to `false`\n" + "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 `application`. Defaults to `false`\n" }, "enableWafFailOpen": { "type": "boolean", - "description": "Indicates 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 `false`.\n" + "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 `false`.\n" }, "enableXffClientPort": { "type": "boolean", - "description": "Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n" + "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\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 `network`. The possible values are `on` and `off`.\n" }, "idleTimeout": { "type": "integer", - "description": "The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n" + "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n" }, "internal": { "type": "boolean", @@ -2922,7 +2963,7 @@ }, "ipAddressType": { "type": "string", - "description": "The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`.\n" + "description": "Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`.\n" }, "listener": { "$ref": "#/types/awsx:lb:Listener", @@ -2940,7 +2981,7 @@ }, "name": { "type": "string", - "description": "The name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters,\nmust contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified,\nthis provider will autogenerate a name beginning with `tf-lb`.\n", + "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": { @@ -2950,34 +2991,33 @@ }, "preserveHostHeader": { "type": "boolean", - "description": "Indicates 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 `false`.\n" + "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 `false`.\n" }, "securityGroups": { "type": "array", "items": { "type": "string" }, - "description": "A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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" + "description": "List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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": "A list of subnet IDs to attach to the LB. Subnets\ncannot be updated for Load Balancers of type `network`. Changing this value\nfor load balancers of type `network` will force a recreation of the resource.\n" + "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource.\n" }, "subnetMappings": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping" }, - "description": "A subnet mapping block as documented below.\n", - "willReplaceOnChanges": true + "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n" }, "subnets": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet" + "$ref": "/aws/v6.32.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" }, @@ -2986,7 +3026,7 @@ "additionalProperties": { "type": "string" }, - "description": "A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + "description": "Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" }, "xffHeaderProcessingMode": { "type": "string", @@ -2999,18 +3039,18 @@ "description": "Provides a Network Load Balancer resource with listeners and default target group.", "properties": { "defaultTargetGroup": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", "description": "Default target group, if auto-created" }, "listeners": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2flistener:Listener" + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2flistener:Listener" }, "description": "Listeners created as part of this load balancer" }, "loadBalancer": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2floadBalancer:LoadBalancer", "description": "Underlying Load Balancer resource" }, "vpcId": { @@ -3025,12 +3065,20 @@ ], "inputProperties": { "accessLogs": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/LoadBalancerAccessLogs:LoadBalancerAccessLogs", - "description": "An Access Logs block. Access Logs documented below.\n" + "$ref": "/aws/v6.32.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/v6.32.0/schema.json#/types/aws:lb/LoadBalancerConnectionLogs:LoadBalancerConnectionLogs", + "description": "Connection Logs block. See below. Only valid for Load Balancers of type `application`.\n" }, "customerOwnedIpv4Pool": { "type": "string", - "description": "The ID of the customer owned ipv4 pool to use for this load balancer.\n", + "description": "ID of the customer owned ipv4 pool to use for this load balancer.\n", "willReplaceOnChanges": true }, "defaultTargetGroup": { @@ -3044,15 +3092,15 @@ }, "desyncMitigationMode": { "type": "string", - "description": "Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n" + "description": "How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`.\n" }, "dnsRecordClientRoutingPolicy": { "type": "string", - "description": "Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers.\n" + "description": "How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers.\n" }, "dropInvalidHeaderFields": { "type": "boolean", - "description": "Indicates 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 `application`.\n" + "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 `application`.\n" }, "enableCrossZoneLoadBalancing": { "type": "boolean", @@ -3064,19 +3112,23 @@ }, "enableTlsVersionAndCipherSuiteHeaders": { "type": "boolean", - "description": "Indicates 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 `application`. Defaults to `false`\n" + "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 `application`. Defaults to `false`\n" }, "enableWafFailOpen": { "type": "boolean", - "description": "Indicates 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 `false`.\n" + "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 `false`.\n" }, "enableXffClientPort": { "type": "boolean", - "description": "Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\n" + "description": "Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`.\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 `network`. The possible values are `on` and `off`.\n" }, "idleTimeout": { "type": "integer", - "description": "The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n" + "description": "Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60.\n" }, "internal": { "type": "boolean", @@ -3085,7 +3137,7 @@ }, "ipAddressType": { "type": "string", - "description": "The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`.\n" + "description": "Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`.\n" }, "listener": { "$ref": "#/types/awsx:lb:Listener", @@ -3103,7 +3155,7 @@ }, "name": { "type": "string", - "description": "The name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters,\nmust contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified,\nthis provider will autogenerate a name beginning with `tf-lb`.\n", + "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": { @@ -3113,27 +3165,26 @@ }, "preserveHostHeader": { "type": "boolean", - "description": "Indicates 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 `false`.\n" + "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 `false`.\n" }, "subnetIds": { "type": "array", "items": { "type": "string" }, - "description": "A list of subnet IDs to attach to the LB. Subnets\ncannot be updated for Load Balancers of type `network`. Changing this value\nfor load balancers of type `network` will force a recreation of the resource.\n" + "description": "List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource.\n" }, "subnetMappings": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping" + "$ref": "/aws/v6.32.0/schema.json#/types/aws:lb/LoadBalancerSubnetMapping:LoadBalancerSubnetMapping" }, - "description": "A subnet mapping block as documented below.\n", - "willReplaceOnChanges": true + "description": "Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added.\n" }, "subnets": { "type": "array", "items": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2fsubnet:Subnet" + "$ref": "/aws/v6.32.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" }, @@ -3142,7 +3193,7 @@ "additionalProperties": { "type": "string" }, - "description": "A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + "description": "Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" }, "xffHeaderProcessingMode": { "type": "string", @@ -3155,11 +3206,11 @@ "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/v6.9.0/schema.json#/resources/aws:lambda%2fpermission:Permission", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lambda%2fpermission:Permission", "description": "Auto-created Lambda permission, if targeting a Lambda function" }, "targetGroupAttachment": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:lb%2ftargetGroupAttachment:TargetGroupAttachment", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2ftargetGroupAttachment:TargetGroupAttachment", "description": "Underlying Target Group Attachment resource", "language": { "csharp": { @@ -3174,7 +3225,7 @@ ], "inputProperties": { "instance": { - "$ref": "/aws/v6.9.0/schema.json#/resources/aws:ec2%2finstance:Instance", + "$ref": "/aws/v6.32.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": { @@ -3182,7 +3233,7 @@ "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/v6.9.0/schema.json#/resources/aws:lambda%2ffunction:Function", + "$ref": "/aws/v6.32.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": { @@ -3195,7 +3246,7 @@ "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/v6.9.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", + "$ref": "/aws/v6.32.0/schema.json#/resources/aws:lb%2ftargetGroup:TargetGroup", "description": "Target Group to attach to. Exactly one of [targetGroup] or [targetGroupArn] must be specified." }, "targetGroupArn": { diff --git a/sdk/dotnet/Awsx/Inputs/LogGroupArgs.cs b/sdk/dotnet/Awsx/Inputs/LogGroupArgs.cs index c980cf539..56677dc1d 100644 --- a/sdk/dotnet/Awsx/Inputs/LogGroupArgs.cs +++ b/sdk/dotnet/Awsx/Inputs/LogGroupArgs.cs @@ -23,6 +23,12 @@ public sealed class LogGroupArgs : global::Pulumi.ResourceArgs [Input("kmsKeyId")] public Input? KmsKeyId { get; set; } + /// + /// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + /// + [Input("logGroupClass")] + public Input? LogGroupClass { get; set; } + /// /// The name of the log group. If omitted, this provider will assign a random, unique name. /// diff --git a/sdk/dotnet/Ec2/Inputs/VpcEndpointSpecArgs.cs b/sdk/dotnet/Ec2/Inputs/VpcEndpointSpecArgs.cs index 3027b189d..e7c98d70f 100644 --- a/sdk/dotnet/Ec2/Inputs/VpcEndpointSpecArgs.cs +++ b/sdk/dotnet/Ec2/Inputs/VpcEndpointSpecArgs.cs @@ -21,17 +21,17 @@ namespace Pulumi.Awsx.Ec2.Inputs /// Do not use the same resource ID in both a VPC Endpoint resource and a VPC Endpoint Association resource. /// Doing so will cause a conflict of associations and will overwrite the association. /// - /// {{% examples %}} /// ## Example Usage - /// {{% example %}} + /// /// ### Basic /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const s3 = new aws.ec2.VpcEndpoint("s3", { - /// vpcId: aws_vpc.main.id, + /// vpcId: main.id, /// serviceName: "com.amazonaws.us-west-2.s3", /// }); /// ``` @@ -40,7 +40,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// import pulumi_aws as aws /// /// s3 = aws.ec2.VpcEndpoint("s3", - /// vpc_id=aws_vpc["main"]["id"], + /// vpc_id=main["id"], /// service_name="com.amazonaws.us-west-2.s3") /// ``` /// ```csharp @@ -53,7 +53,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// { /// var s3 = new Aws.Ec2.VpcEndpoint("s3", new() /// { - /// VpcId = aws_vpc.Main.Id, + /// VpcId = main.Id, /// ServiceName = "com.amazonaws.us-west-2.s3", /// }); /// @@ -70,7 +70,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - /// VpcId: pulumi.Any(aws_vpc.Main.Id), + /// VpcId: pulumi.Any(main.Id), /// ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), /// }) /// if err != nil { @@ -102,7 +102,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// /// public static void stack(Context ctx) { /// var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - /// .vpcId(aws_vpc.main().id()) + /// .vpcId(main.id()) /// .serviceName("com.amazonaws.us-west-2.s3") /// .build()); /// @@ -114,19 +114,20 @@ namespace Pulumi.Awsx.Ec2.Inputs /// s3: /// type: aws:ec2:VpcEndpoint /// properties: - /// vpcId: ${aws_vpc.main.id} + /// vpcId: ${main.id} /// serviceName: com.amazonaws.us-west-2.s3 /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Basic w/ Tags /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const s3 = new aws.ec2.VpcEndpoint("s3", { - /// vpcId: aws_vpc.main.id, + /// vpcId: main.id, /// serviceName: "com.amazonaws.us-west-2.s3", /// tags: { /// Environment: "test", @@ -138,7 +139,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// import pulumi_aws as aws /// /// s3 = aws.ec2.VpcEndpoint("s3", - /// vpc_id=aws_vpc["main"]["id"], + /// vpc_id=main["id"], /// service_name="com.amazonaws.us-west-2.s3", /// tags={ /// "Environment": "test", @@ -154,7 +155,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// { /// var s3 = new Aws.Ec2.VpcEndpoint("s3", new() /// { - /// VpcId = aws_vpc.Main.Id, + /// VpcId = main.Id, /// ServiceName = "com.amazonaws.us-west-2.s3", /// Tags = /// { @@ -175,7 +176,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - /// VpcId: pulumi.Any(aws_vpc.Main.Id), + /// VpcId: pulumi.Any(main.Id), /// ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), /// Tags: pulumi.StringMap{ /// "Environment": pulumi.String("test"), @@ -210,7 +211,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// /// public static void stack(Context ctx) { /// var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - /// .vpcId(aws_vpc.main().id()) + /// .vpcId(main.id()) /// .serviceName("com.amazonaws.us-west-2.s3") /// .tags(Map.of("Environment", "test")) /// .build()); @@ -223,24 +224,25 @@ namespace Pulumi.Awsx.Ec2.Inputs /// s3: /// type: aws:ec2:VpcEndpoint /// properties: - /// vpcId: ${aws_vpc.main.id} + /// vpcId: ${main.id} /// serviceName: com.amazonaws.us-west-2.s3 /// tags: /// Environment: test /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Interface Endpoint Type /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const ec2 = new aws.ec2.VpcEndpoint("ec2", { - /// vpcId: aws_vpc.main.id, + /// vpcId: main.id, /// serviceName: "com.amazonaws.us-west-2.ec2", /// vpcEndpointType: "Interface", - /// securityGroupIds: [aws_security_group.sg1.id], + /// securityGroupIds: [sg1.id], /// privateDnsEnabled: true, /// }); /// ``` @@ -249,10 +251,10 @@ namespace Pulumi.Awsx.Ec2.Inputs /// import pulumi_aws as aws /// /// ec2 = aws.ec2.VpcEndpoint("ec2", - /// vpc_id=aws_vpc["main"]["id"], + /// vpc_id=main["id"], /// service_name="com.amazonaws.us-west-2.ec2", /// vpc_endpoint_type="Interface", - /// security_group_ids=[aws_security_group["sg1"]["id"]], + /// security_group_ids=[sg1["id"]], /// private_dns_enabled=True) /// ``` /// ```csharp @@ -265,12 +267,12 @@ namespace Pulumi.Awsx.Ec2.Inputs /// { /// var ec2 = new Aws.Ec2.VpcEndpoint("ec2", new() /// { - /// VpcId = aws_vpc.Main.Id, + /// VpcId = main.Id, /// ServiceName = "com.amazonaws.us-west-2.ec2", /// VpcEndpointType = "Interface", /// SecurityGroupIds = new[] /// { - /// aws_security_group.Sg1.Id, + /// sg1.Id, /// }, /// PrivateDnsEnabled = true, /// }); @@ -288,11 +290,11 @@ namespace Pulumi.Awsx.Ec2.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ - /// VpcId: pulumi.Any(aws_vpc.Main.Id), + /// VpcId: pulumi.Any(main.Id), /// ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), /// VpcEndpointType: pulumi.String("Interface"), /// SecurityGroupIds: pulumi.StringArray{ - /// aws_security_group.Sg1.Id, + /// sg1.Id, /// }, /// PrivateDnsEnabled: pulumi.Bool(true), /// }) @@ -325,10 +327,10 @@ namespace Pulumi.Awsx.Ec2.Inputs /// /// public static void stack(Context ctx) { /// var ec2 = new VpcEndpoint("ec2", VpcEndpointArgs.builder() - /// .vpcId(aws_vpc.main().id()) + /// .vpcId(main.id()) /// .serviceName("com.amazonaws.us-west-2.ec2") /// .vpcEndpointType("Interface") - /// .securityGroupIds(aws_security_group.sg1().id()) + /// .securityGroupIds(sg1.id()) /// .privateDnsEnabled(true) /// .build()); /// @@ -340,32 +342,33 @@ namespace Pulumi.Awsx.Ec2.Inputs /// ec2: /// type: aws:ec2:VpcEndpoint /// properties: - /// vpcId: ${aws_vpc.main.id} + /// vpcId: ${main.id} /// serviceName: com.amazonaws.us-west-2.ec2 /// vpcEndpointType: Interface /// securityGroupIds: - /// - ${aws_security_group.sg1.id} + /// - ${sg1.id} /// privateDnsEnabled: true /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Gateway Load Balancer Endpoint Type /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const current = aws.getCallerIdentity({}); - /// const exampleVpcEndpointService = new aws.ec2.VpcEndpointService("exampleVpcEndpointService", { + /// const example = new aws.ec2.VpcEndpointService("example", { /// acceptanceRequired: false, /// allowedPrincipals: [current.then(current => current.arn)], - /// gatewayLoadBalancerArns: [aws_lb.example.arn], + /// gatewayLoadBalancerArns: [exampleAwsLb.arn], /// }); - /// const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("exampleVpcEndpoint", { - /// serviceName: exampleVpcEndpointService.serviceName, - /// subnetIds: [aws_subnet.example.id], - /// vpcEndpointType: exampleVpcEndpointService.serviceType, - /// vpcId: aws_vpc.example.id, + /// const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("example", { + /// serviceName: example.serviceName, + /// subnetIds: [exampleAwsSubnet.id], + /// vpcEndpointType: example.serviceType, + /// vpcId: exampleAwsVpc.id, /// }); /// ``` /// ```python @@ -373,15 +376,15 @@ namespace Pulumi.Awsx.Ec2.Inputs /// import pulumi_aws as aws /// /// current = aws.get_caller_identity() - /// example_vpc_endpoint_service = aws.ec2.VpcEndpointService("exampleVpcEndpointService", + /// example = aws.ec2.VpcEndpointService("example", /// acceptance_required=False, /// allowed_principals=[current.arn], - /// gateway_load_balancer_arns=[aws_lb["example"]["arn"]]) - /// example_vpc_endpoint = aws.ec2.VpcEndpoint("exampleVpcEndpoint", - /// service_name=example_vpc_endpoint_service.service_name, - /// subnet_ids=[aws_subnet["example"]["id"]], - /// vpc_endpoint_type=example_vpc_endpoint_service.service_type, - /// vpc_id=aws_vpc["example"]["id"]) + /// gateway_load_balancer_arns=[example_aws_lb["arn"]]) + /// example_vpc_endpoint = aws.ec2.VpcEndpoint("example", + /// service_name=example.service_name, + /// subnet_ids=[example_aws_subnet["id"]], + /// vpc_endpoint_type=example.service_type, + /// vpc_id=example_aws_vpc["id"]) /// ``` /// ```csharp /// using System.Collections.Generic; @@ -393,7 +396,7 @@ namespace Pulumi.Awsx.Ec2.Inputs /// { /// var current = Aws.GetCallerIdentity.Invoke(); /// - /// var exampleVpcEndpointService = new Aws.Ec2.VpcEndpointService("exampleVpcEndpointService", new() + /// var example = new Aws.Ec2.VpcEndpointService("example", new() /// { /// AcceptanceRequired = false, /// AllowedPrincipals = new[] @@ -402,19 +405,19 @@ namespace Pulumi.Awsx.Ec2.Inputs /// }, /// GatewayLoadBalancerArns = new[] /// { - /// aws_lb.Example.Arn, + /// exampleAwsLb.Arn, /// }, /// }); /// - /// var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("exampleVpcEndpoint", new() + /// var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("example", new() /// { - /// ServiceName = exampleVpcEndpointService.ServiceName, + /// ServiceName = example.ServiceName, /// SubnetIds = new[] /// { - /// aws_subnet.Example.Id, + /// exampleAwsSubnet.Id, /// }, - /// VpcEndpointType = exampleVpcEndpointService.ServiceType, - /// VpcId = aws_vpc.Example.Id, + /// VpcEndpointType = example.ServiceType, + /// VpcId = exampleAwsVpc.Id, /// }); /// /// }); @@ -434,25 +437,25 @@ namespace Pulumi.Awsx.Ec2.Inputs /// if err != nil { /// return err /// } - /// exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ + /// example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ /// AcceptanceRequired: pulumi.Bool(false), /// AllowedPrincipals: pulumi.StringArray{ - /// *pulumi.String(current.Arn), + /// pulumi.String(current.Arn), /// }, /// GatewayLoadBalancerArns: pulumi.StringArray{ - /// aws_lb.Example.Arn, + /// exampleAwsLb.Arn, /// }, /// }) /// if err != nil { /// return err /// } - /// _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ - /// ServiceName: exampleVpcEndpointService.ServiceName, + /// _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ + /// ServiceName: example.ServiceName, /// SubnetIds: pulumi.StringArray{ - /// aws_subnet.Example.Id, + /// exampleAwsSubnet.Id, /// }, - /// VpcEndpointType: exampleVpcEndpointService.ServiceType, - /// VpcId: pulumi.Any(aws_vpc.Example.Id), + /// VpcEndpointType: example.ServiceType, + /// VpcId: pulumi.Any(exampleAwsVpc.Id), /// }) /// if err != nil { /// return err @@ -488,17 +491,17 @@ namespace Pulumi.Awsx.Ec2.Inputs /// public static void stack(Context ctx) { /// final var current = AwsFunctions.getCallerIdentity(); /// - /// var exampleVpcEndpointService = new VpcEndpointService("exampleVpcEndpointService", VpcEndpointServiceArgs.builder() + /// var example = new VpcEndpointService("example", VpcEndpointServiceArgs.builder() /// .acceptanceRequired(false) /// .allowedPrincipals(current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.arn())) - /// .gatewayLoadBalancerArns(aws_lb.example().arn()) + /// .gatewayLoadBalancerArns(exampleAwsLb.arn()) /// .build()); /// /// var exampleVpcEndpoint = new VpcEndpoint("exampleVpcEndpoint", VpcEndpointArgs.builder() - /// .serviceName(exampleVpcEndpointService.serviceName()) - /// .subnetIds(aws_subnet.example().id()) - /// .vpcEndpointType(exampleVpcEndpointService.serviceType()) - /// .vpcId(aws_vpc.example().id()) + /// .serviceName(example.serviceName()) + /// .subnetIds(exampleAwsSubnet.id()) + /// .vpcEndpointType(example.serviceType()) + /// .vpcId(exampleAwsVpc.id()) /// .build()); /// /// } @@ -506,39 +509,38 @@ namespace Pulumi.Awsx.Ec2.Inputs /// ``` /// ```yaml /// resources: - /// exampleVpcEndpointService: + /// example: /// type: aws:ec2:VpcEndpointService /// properties: /// acceptanceRequired: false /// allowedPrincipals: /// - ${current.arn} /// gatewayLoadBalancerArns: - /// - ${aws_lb.example.arn} + /// - ${exampleAwsLb.arn} /// exampleVpcEndpoint: /// type: aws:ec2:VpcEndpoint + /// name: example /// properties: - /// serviceName: ${exampleVpcEndpointService.serviceName} + /// serviceName: ${example.serviceName} /// subnetIds: - /// - ${aws_subnet.example.id} - /// vpcEndpointType: ${exampleVpcEndpointService.serviceType} - /// vpcId: ${aws_vpc.example.id} + /// - ${exampleAwsSubnet.id} + /// vpcEndpointType: ${example.serviceType} + /// vpcId: ${exampleAwsVpc.id} /// variables: /// current: /// fn::invoke: /// Function: aws:getCallerIdentity /// Arguments: {} /// ``` - /// {{% /example %}} - /// {{% /examples %}} + /// <!--End PulumiCodeChooser --> /// /// ## Import /// /// Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: /// /// ```sh - /// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 + /// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 /// ``` - /// /// public sealed class VpcEndpointSpecArgs : global::Pulumi.ResourceArgs { diff --git a/sdk/dotnet/Ecs/EC2Service.cs b/sdk/dotnet/Ecs/EC2Service.cs index d4eb5a60b..1091ff338 100644 --- a/sdk/dotnet/Ecs/EC2Service.cs +++ b/sdk/dotnet/Ecs/EC2Service.cs @@ -242,7 +242,7 @@ public InputMap Tags private InputMap? _triggers; /// - /// Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + /// Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. /// public InputMap Triggers { diff --git a/sdk/dotnet/Ecs/EC2TaskDefinition.cs b/sdk/dotnet/Ecs/EC2TaskDefinition.cs index 3aaa8a3c1..2515d9763 100644 --- a/sdk/dotnet/Ecs/EC2TaskDefinition.cs +++ b/sdk/dotnet/Ecs/EC2TaskDefinition.cs @@ -216,6 +216,12 @@ public InputMap Tags [Input("taskRole")] public Pulumi.Awsx.Awsx.Inputs.DefaultRoleWithPolicyArgs? TaskRole { get; set; } + /// + /// Whether should track latest task definition or the one created with the resource. Default is `false`. + /// + [Input("trackLatest")] + public Input? TrackLatest { get; set; } + [Input("volumes")] private InputList? _volumes; diff --git a/sdk/dotnet/Ecs/FargateService.cs b/sdk/dotnet/Ecs/FargateService.cs index c227d2627..65c25c252 100644 --- a/sdk/dotnet/Ecs/FargateService.cs +++ b/sdk/dotnet/Ecs/FargateService.cs @@ -236,7 +236,7 @@ public InputMap Tags private InputMap? _triggers; /// - /// Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + /// Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. /// public InputMap Triggers { diff --git a/sdk/dotnet/Ecs/FargateTaskDefinition.cs b/sdk/dotnet/Ecs/FargateTaskDefinition.cs index dd93fbbd8..fe5d21be9 100644 --- a/sdk/dotnet/Ecs/FargateTaskDefinition.cs +++ b/sdk/dotnet/Ecs/FargateTaskDefinition.cs @@ -210,6 +210,12 @@ public InputMap Tags [Input("taskRole")] public Pulumi.Awsx.Awsx.Inputs.DefaultRoleWithPolicyArgs? TaskRole { get; set; } + /// + /// Whether should track latest task definition or the one created with the resource. Default is `false`. + /// + [Input("trackLatest")] + public Input? TrackLatest { get; set; } + [Input("volumes")] private InputList? _volumes; diff --git a/sdk/dotnet/Ecs/Inputs/EC2ServiceTaskDefinitionArgs.cs b/sdk/dotnet/Ecs/Inputs/EC2ServiceTaskDefinitionArgs.cs index a2bc51e0f..c9401398d 100644 --- a/sdk/dotnet/Ecs/Inputs/EC2ServiceTaskDefinitionArgs.cs +++ b/sdk/dotnet/Ecs/Inputs/EC2ServiceTaskDefinitionArgs.cs @@ -158,6 +158,12 @@ public InputMap Tags [Input("taskRole")] public Pulumi.Awsx.Awsx.Inputs.DefaultRoleWithPolicyArgs? TaskRole { get; set; } + /// + /// Whether should track latest task definition or the one created with the resource. Default is `false`. + /// + [Input("trackLatest")] + public Input? TrackLatest { get; set; } + [Input("volumes")] private InputList? _volumes; diff --git a/sdk/dotnet/Ecs/Inputs/FargateServiceTaskDefinitionArgs.cs b/sdk/dotnet/Ecs/Inputs/FargateServiceTaskDefinitionArgs.cs index f8a8241ca..c5639813d 100644 --- a/sdk/dotnet/Ecs/Inputs/FargateServiceTaskDefinitionArgs.cs +++ b/sdk/dotnet/Ecs/Inputs/FargateServiceTaskDefinitionArgs.cs @@ -152,6 +152,12 @@ public InputMap Tags [Input("taskRole")] public Pulumi.Awsx.Awsx.Inputs.DefaultRoleWithPolicyArgs? TaskRole { get; set; } + /// + /// Whether should track latest task definition or the one created with the resource. Default is `false`. + /// + [Input("trackLatest")] + public Input? TrackLatest { get; set; } + [Input("volumes")] private InputList? _volumes; diff --git a/sdk/dotnet/Lb/ApplicationLoadBalancer.cs b/sdk/dotnet/Lb/ApplicationLoadBalancer.cs index e04ed07ae..01815c7c3 100644 --- a/sdk/dotnet/Lb/ApplicationLoadBalancer.cs +++ b/sdk/dotnet/Lb/ApplicationLoadBalancer.cs @@ -74,13 +74,25 @@ private static ComponentResourceOptions MakeResourceOptions(ComponentResourceOpt public sealed class ApplicationLoadBalancerArgs : global::Pulumi.ResourceArgs { /// - /// An Access Logs block. Access Logs documented below. + /// Access Logs block. See below. /// [Input("accessLogs")] public Input? AccessLogs { get; set; } /// - /// The ID of the customer owned ipv4 pool to use for this load balancer. + /// Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + /// + [Input("clientKeepAlive")] + public Input? ClientKeepAlive { get; set; } + + /// + /// Connection Logs block. See below. Only valid for Load Balancers of type `application`. + /// + [Input("connectionLogs")] + public Input? ConnectionLogs { get; set; } + + /// + /// ID of the customer owned ipv4 pool to use for this load balancer. /// [Input("customerOwnedIpv4Pool")] public Input? CustomerOwnedIpv4Pool { get; set; } @@ -104,19 +116,19 @@ public sealed class ApplicationLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? DefaultTargetGroupPort { get; set; } /// - /// Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + /// How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. /// [Input("desyncMitigationMode")] public Input? DesyncMitigationMode { get; set; } /// - /// Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + /// How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. /// [Input("dnsRecordClientRoutingPolicy")] public Input? DnsRecordClientRoutingPolicy { get; set; } /// - /// Indicates 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 `application`. + /// 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 `application`. /// [Input("dropInvalidHeaderFields")] public Input? DropInvalidHeaderFields { get; set; } @@ -128,31 +140,37 @@ public sealed class ApplicationLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? EnableDeletionProtection { get; set; } /// - /// Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + /// Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. /// [Input("enableHttp2")] public Input? EnableHttp2 { get; set; } /// - /// Indicates 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 `application`. Defaults to `false` + /// 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 `application`. Defaults to `false` /// [Input("enableTlsVersionAndCipherSuiteHeaders")] public Input? EnableTlsVersionAndCipherSuiteHeaders { get; set; } /// - /// Indicates 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 `false`. + /// 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 `false`. /// [Input("enableWafFailOpen")] public Input? EnableWafFailOpen { get; set; } /// - /// Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + /// Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. /// [Input("enableXffClientPort")] public Input? EnableXffClientPort { get; set; } /// - /// The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + /// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + /// + [Input("enforceSecurityGroupInboundRulesOnPrivateLinkTraffic")] + public Input? EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic { get; set; } + + /// + /// Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. /// [Input("idleTimeout")] public Input? IdleTimeout { get; set; } @@ -164,7 +182,7 @@ public sealed class ApplicationLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? Internal { get; set; } /// - /// The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + /// Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. /// [Input("ipAddressType")] public Input? IpAddressType { get; set; } @@ -188,9 +206,7 @@ public List Listeners } /// - /// The 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`. + /// 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`. /// [Input("name")] public Input? Name { get; set; } @@ -202,7 +218,7 @@ public List Listeners public Input? NamePrefix { get; set; } /// - /// Indicates 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 `false`. + /// 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 `false`. /// [Input("preserveHostHeader")] public Input? PreserveHostHeader { get; set; } @@ -211,7 +227,7 @@ public List Listeners private InputList? _securityGroups; /// - /// A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + /// List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. /// public InputList SecurityGroups { @@ -223,9 +239,7 @@ public InputList SecurityGroups private InputList? _subnetIds; /// - /// A list of subnet IDs to attach to the LB. Subnets - /// cannot be updated for Load Balancers of type `network`. Changing this value - /// for load balancers of type `network` will force a recreation of the resource. + /// List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. /// public InputList SubnetIds { @@ -237,7 +251,7 @@ public InputList SubnetIds private InputList? _subnetMappings; /// - /// A subnet mapping block as documented below. + /// Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. /// public InputList SubnetMappings { @@ -261,7 +275,7 @@ public InputList Subnets private InputMap? _tags; /// - /// A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + /// Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. /// public InputMap Tags { diff --git a/sdk/dotnet/Lb/Inputs/ListenerArgs.cs b/sdk/dotnet/Lb/Inputs/ListenerArgs.cs index c17ffb435..af7905690 100644 --- a/sdk/dotnet/Lb/Inputs/ListenerArgs.cs +++ b/sdk/dotnet/Lb/Inputs/ListenerArgs.cs @@ -15,21 +15,19 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. /// - /// {{% examples %}} /// ## Example Usage - /// {{% example %}} + /// /// ### Forward Action /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - /// // ... - /// const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - /// // ... - /// const frontEndListener = new aws.lb.Listener("frontEndListener", { - /// loadBalancerArn: frontEndLoadBalancer.arn, + /// const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + /// const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + /// const frontEndListener = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEnd.arn, /// port: 443, /// protocol: "HTTPS", /// sslPolicy: "ELBSecurityPolicy-2016-08", @@ -44,12 +42,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - /// # ... - /// front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - /// # ... - /// front_end_listener = aws.lb.Listener("frontEndListener", - /// load_balancer_arn=front_end_load_balancer.arn, + /// front_end = aws.lb.LoadBalancer("front_end") + /// front_end_target_group = aws.lb.TargetGroup("front_end") + /// front_end_listener = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end.arn, /// port=443, /// protocol="HTTPS", /// ssl_policy="ELBSecurityPolicy-2016-08", @@ -67,15 +63,13 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new Aws.LB.LoadBalancer("front_end"); /// - /// // ... - /// var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + /// var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); /// - /// // ... - /// var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + /// var frontEndListener = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = frontEndLoadBalancer.Arn, + /// LoadBalancerArn = frontEnd.Arn, /// Port = 443, /// Protocol = "HTTPS", /// SslPolicy = "ELBSecurityPolicy-2016-08", @@ -102,16 +96,16 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + /// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - /// LoadBalancerArn: frontEndLoadBalancer.Arn, + /// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: frontEnd.Arn, /// Port: pulumi.Int(443), /// Protocol: pulumi.String("HTTPS"), /// SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -154,12 +148,12 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new LoadBalancer("frontEnd"); /// /// var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); /// /// var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - /// .loadBalancerArn(frontEndLoadBalancer.arn()) + /// .loadBalancerArn(frontEnd.arn()) /// .port("443") /// .protocol("HTTPS") /// .sslPolicy("ELBSecurityPolicy-2016-08") @@ -175,14 +169,17 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// frontEndLoadBalancer: + /// frontEnd: /// type: aws:lb:LoadBalancer + /// name: front_end /// frontEndTargetGroup: /// type: aws:lb:TargetGroup + /// name: front_end /// frontEndListener: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${frontEndLoadBalancer.arn} + /// loadBalancerArn: ${frontEnd.arn} /// port: '443' /// protocol: HTTPS /// sslPolicy: ELBSecurityPolicy-2016-08 @@ -191,22 +188,24 @@ namespace Pulumi.Awsx.Lb.Inputs /// - type: forward /// targetGroupArn: ${frontEndTargetGroup.arn} /// ``` + /// <!--End PulumiCodeChooser --> /// /// To a NLB: /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEnd = new aws.lb.Listener("frontEnd", { - /// loadBalancerArn: aws_lb.front_end.arn, + /// const frontEnd = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEndAwsLb.arn, /// port: 443, /// protocol: "TLS", /// certificateArn: "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", /// alpnPolicy: "HTTP2Preferred", /// defaultActions: [{ /// type: "forward", - /// targetGroupArn: aws_lb_target_group.front_end.arn, + /// targetGroupArn: frontEndAwsLbTargetGroup.arn, /// }], /// }); /// ``` @@ -214,15 +213,15 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end = aws.lb.Listener("frontEnd", - /// load_balancer_arn=aws_lb["front_end"]["arn"], + /// front_end = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end_aws_lb["arn"], /// port=443, /// protocol="TLS", /// certificate_arn="arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", /// alpn_policy="HTTP2Preferred", /// default_actions=[aws.lb.ListenerDefaultActionArgs( /// type="forward", - /// target_group_arn=aws_lb_target_group["front_end"]["arn"], + /// target_group_arn=front_end_aws_lb_target_group["arn"], /// )]) /// ``` /// ```csharp @@ -233,9 +232,9 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEnd = new Aws.LB.Listener("frontEnd", new() + /// var frontEnd = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = aws_lb.Front_end.Arn, + /// LoadBalancerArn = frontEndAwsLb.Arn, /// Port = 443, /// Protocol = "TLS", /// CertificateArn = "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", @@ -245,7 +244,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// new Aws.LB.Inputs.ListenerDefaultActionArgs /// { /// Type = "forward", - /// TargetGroupArn = aws_lb_target_group.Front_end.Arn, + /// TargetGroupArn = frontEndAwsLbTargetGroup.Arn, /// }, /// }, /// }); @@ -262,8 +261,8 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ - /// LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), + /// _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), /// Port: pulumi.Int(443), /// Protocol: pulumi.String("TLS"), /// CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -271,7 +270,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// DefaultActions: lb.ListenerDefaultActionArray{ /// &lb.ListenerDefaultActionArgs{ /// Type: pulumi.String("forward"), - /// TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), + /// TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), /// }, /// }, /// }) @@ -305,14 +304,14 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// public static void stack(Context ctx) { /// var frontEnd = new Listener("frontEnd", ListenerArgs.builder() - /// .loadBalancerArn(aws_lb.front_end().arn()) + /// .loadBalancerArn(frontEndAwsLb.arn()) /// .port("443") /// .protocol("TLS") /// .certificateArn("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4") /// .alpnPolicy("HTTP2Preferred") /// .defaultActions(ListenerDefaultActionArgs.builder() /// .type("forward") - /// .targetGroupArn(aws_lb_target_group.front_end().arn()) + /// .targetGroupArn(frontEndAwsLbTargetGroup.arn()) /// .build()) /// .build()); /// @@ -323,28 +322,29 @@ namespace Pulumi.Awsx.Lb.Inputs /// resources: /// frontEnd: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${aws_lb.front_end.arn} + /// loadBalancerArn: ${frontEndAwsLb.arn} /// port: '443' /// protocol: TLS /// certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4 /// alpnPolicy: HTTP2Preferred /// defaultActions: /// - type: forward - /// targetGroupArn: ${aws_lb_target_group.front_end.arn} + /// targetGroupArn: ${frontEndAwsLbTargetGroup.arn} /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Redirect Action /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - /// // ... - /// const frontEndListener = new aws.lb.Listener("frontEndListener", { - /// loadBalancerArn: frontEndLoadBalancer.arn, + /// const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + /// const frontEndListener = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEnd.arn, /// port: 80, /// protocol: "HTTP", /// defaultActions: [{ @@ -361,10 +361,9 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - /// # ... - /// front_end_listener = aws.lb.Listener("frontEndListener", - /// load_balancer_arn=front_end_load_balancer.arn, + /// front_end = aws.lb.LoadBalancer("front_end") + /// front_end_listener = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end.arn, /// port=80, /// protocol="HTTP", /// default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -384,12 +383,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new Aws.LB.LoadBalancer("front_end"); /// - /// // ... - /// var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + /// var frontEndListener = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = frontEndLoadBalancer.Arn, + /// LoadBalancerArn = frontEnd.Arn, /// Port = 80, /// Protocol = "HTTP", /// DefaultActions = new[] @@ -419,12 +417,12 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + /// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - /// LoadBalancerArn: frontEndLoadBalancer.Arn, + /// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: frontEnd.Arn, /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// DefaultActions: lb.ListenerDefaultActionArray{ @@ -469,10 +467,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new LoadBalancer("frontEnd"); /// /// var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - /// .loadBalancerArn(frontEndLoadBalancer.arn()) + /// .loadBalancerArn(frontEnd.arn()) /// .port("80") /// .protocol("HTTP") /// .defaultActions(ListenerDefaultActionArgs.builder() @@ -490,12 +488,14 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// frontEndLoadBalancer: + /// frontEnd: /// type: aws:lb:LoadBalancer + /// name: front_end /// frontEndListener: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${frontEndLoadBalancer.arn} + /// loadBalancerArn: ${frontEnd.arn} /// port: '80' /// protocol: HTTP /// defaultActions: @@ -505,18 +505,18 @@ namespace Pulumi.Awsx.Lb.Inputs /// protocol: HTTPS /// statusCode: HTTP_301 /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Fixed-response Action /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - /// // ... - /// const frontEndListener = new aws.lb.Listener("frontEndListener", { - /// loadBalancerArn: frontEndLoadBalancer.arn, + /// const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + /// const frontEndListener = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEnd.arn, /// port: 80, /// protocol: "HTTP", /// defaultActions: [{ @@ -533,10 +533,9 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - /// # ... - /// front_end_listener = aws.lb.Listener("frontEndListener", - /// load_balancer_arn=front_end_load_balancer.arn, + /// front_end = aws.lb.LoadBalancer("front_end") + /// front_end_listener = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end.arn, /// port=80, /// protocol="HTTP", /// default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -556,12 +555,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new Aws.LB.LoadBalancer("front_end"); /// - /// // ... - /// var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + /// var frontEndListener = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = frontEndLoadBalancer.Arn, + /// LoadBalancerArn = frontEnd.Arn, /// Port = 80, /// Protocol = "HTTP", /// DefaultActions = new[] @@ -591,12 +589,12 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + /// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - /// LoadBalancerArn: frontEndLoadBalancer.Arn, + /// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: frontEnd.Arn, /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// DefaultActions: lb.ListenerDefaultActionArray{ @@ -641,10 +639,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new LoadBalancer("frontEnd"); /// /// var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - /// .loadBalancerArn(frontEndLoadBalancer.arn()) + /// .loadBalancerArn(frontEnd.arn()) /// .port("80") /// .protocol("HTTP") /// .defaultActions(ListenerDefaultActionArgs.builder() @@ -662,12 +660,14 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// frontEndLoadBalancer: + /// frontEnd: /// type: aws:lb:LoadBalancer + /// name: front_end /// frontEndListener: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${frontEndLoadBalancer.arn} + /// loadBalancerArn: ${frontEnd.arn} /// port: '80' /// protocol: HTTP /// defaultActions: @@ -677,26 +677,22 @@ namespace Pulumi.Awsx.Lb.Inputs /// messageBody: Fixed response content /// statusCode: '200' /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Authenticate-cognito Action /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - /// // ... - /// const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - /// // ... + /// const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + /// const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); /// const pool = new aws.cognito.UserPool("pool", {}); - /// // ... /// const client = new aws.cognito.UserPoolClient("client", {}); - /// // ... /// const domain = new aws.cognito.UserPoolDomain("domain", {}); - /// // ... - /// const frontEndListener = new aws.lb.Listener("frontEndListener", { - /// loadBalancerArn: frontEndLoadBalancer.arn, + /// const frontEndListener = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEnd.arn, /// port: 80, /// protocol: "HTTP", /// defaultActions: [ @@ -719,18 +715,13 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - /// # ... - /// front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - /// # ... + /// front_end = aws.lb.LoadBalancer("front_end") + /// front_end_target_group = aws.lb.TargetGroup("front_end") /// pool = aws.cognito.UserPool("pool") - /// # ... /// client = aws.cognito.UserPoolClient("client") - /// # ... /// domain = aws.cognito.UserPoolDomain("domain") - /// # ... - /// front_end_listener = aws.lb.Listener("frontEndListener", - /// load_balancer_arn=front_end_load_balancer.arn, + /// front_end_listener = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end.arn, /// port=80, /// protocol="HTTP", /// default_actions=[ @@ -756,24 +747,19 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new Aws.LB.LoadBalancer("front_end"); /// - /// // ... - /// var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + /// var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); /// - /// // ... /// var pool = new Aws.Cognito.UserPool("pool"); /// - /// // ... /// var client = new Aws.Cognito.UserPoolClient("client"); /// - /// // ... /// var domain = new Aws.Cognito.UserPoolDomain("domain"); /// - /// // ... - /// var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + /// var frontEndListener = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = frontEndLoadBalancer.Arn, + /// LoadBalancerArn = frontEnd.Arn, /// Port = 80, /// Protocol = "HTTP", /// DefaultActions = new[] @@ -809,11 +795,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + /// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) /// if err != nil { /// return err /// } @@ -829,8 +815,8 @@ namespace Pulumi.Awsx.Lb.Inputs /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - /// LoadBalancerArn: frontEndLoadBalancer.Arn, + /// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: frontEnd.Arn, /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// DefaultActions: lb.ListenerDefaultActionArray{ @@ -883,7 +869,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new LoadBalancer("frontEnd"); /// /// var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); /// @@ -894,7 +880,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// var domain = new UserPoolDomain("domain"); /// /// var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - /// .loadBalancerArn(frontEndLoadBalancer.arn()) + /// .loadBalancerArn(frontEnd.arn()) /// .port("80") /// .protocol("HTTP") /// .defaultActions( @@ -917,10 +903,12 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// frontEndLoadBalancer: + /// frontEnd: /// type: aws:lb:LoadBalancer + /// name: front_end /// frontEndTargetGroup: /// type: aws:lb:TargetGroup + /// name: front_end /// pool: /// type: aws:cognito:UserPool /// client: @@ -929,8 +917,9 @@ namespace Pulumi.Awsx.Lb.Inputs /// type: aws:cognito:UserPoolDomain /// frontEndListener: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${frontEndLoadBalancer.arn} + /// loadBalancerArn: ${frontEnd.arn} /// port: '80' /// protocol: HTTP /// defaultActions: @@ -942,20 +931,19 @@ namespace Pulumi.Awsx.Lb.Inputs /// - type: forward /// targetGroupArn: ${frontEndTargetGroup.arn} /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Authenticate-OIDC Action /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - /// // ... - /// const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - /// // ... - /// const frontEndListener = new aws.lb.Listener("frontEndListener", { - /// loadBalancerArn: frontEndLoadBalancer.arn, + /// const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + /// const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + /// const frontEndListener = new aws.lb.Listener("front_end", { + /// loadBalancerArn: frontEnd.arn, /// port: 80, /// protocol: "HTTP", /// defaultActions: [ @@ -981,12 +969,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - /// # ... - /// front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - /// # ... - /// front_end_listener = aws.lb.Listener("frontEndListener", - /// load_balancer_arn=front_end_load_balancer.arn, + /// front_end = aws.lb.LoadBalancer("front_end") + /// front_end_target_group = aws.lb.TargetGroup("front_end") + /// front_end_listener = aws.lb.Listener("front_end", + /// load_balancer_arn=front_end.arn, /// port=80, /// protocol="HTTP", /// default_actions=[ @@ -1015,15 +1001,13 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new Aws.LB.LoadBalancer("front_end"); /// - /// // ... - /// var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + /// var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); /// - /// // ... - /// var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + /// var frontEndListener = new Aws.LB.Listener("front_end", new() /// { - /// LoadBalancerArn = frontEndLoadBalancer.Arn, + /// LoadBalancerArn = frontEnd.Arn, /// Port = 80, /// Protocol = "HTTP", /// DefaultActions = new[] @@ -1061,16 +1045,16 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + /// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + /// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - /// LoadBalancerArn: frontEndLoadBalancer.Arn, + /// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + /// LoadBalancerArn: frontEnd.Arn, /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// DefaultActions: lb.ListenerDefaultActionArray{ @@ -1123,12 +1107,12 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + /// var frontEnd = new LoadBalancer("frontEnd"); /// /// var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); /// /// var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - /// .loadBalancerArn(frontEndLoadBalancer.arn()) + /// .loadBalancerArn(frontEnd.arn()) /// .port("80") /// .protocol("HTTP") /// .defaultActions( @@ -1154,14 +1138,17 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// frontEndLoadBalancer: + /// frontEnd: /// type: aws:lb:LoadBalancer + /// name: front_end /// frontEndTargetGroup: /// type: aws:lb:TargetGroup + /// name: front_end /// frontEndListener: /// type: aws:lb:Listener + /// name: front_end /// properties: - /// loadBalancerArn: ${frontEndLoadBalancer.arn} + /// loadBalancerArn: ${frontEnd.arn} /// port: '80' /// protocol: HTTP /// defaultActions: @@ -1176,31 +1163,34 @@ namespace Pulumi.Awsx.Lb.Inputs /// - type: forward /// targetGroupArn: ${frontEndTargetGroup.arn} /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Gateway Load Balancer Listener /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const exampleLoadBalancer = new aws.lb.LoadBalancer("exampleLoadBalancer", { + /// const example = new aws.lb.LoadBalancer("example", { /// loadBalancerType: "gateway", + /// name: "example", /// subnetMappings: [{ - /// subnetId: aws_subnet.example.id, + /// subnetId: exampleAwsSubnet.id, /// }], /// }); - /// const exampleTargetGroup = new aws.lb.TargetGroup("exampleTargetGroup", { + /// const exampleTargetGroup = new aws.lb.TargetGroup("example", { + /// name: "example", /// port: 6081, /// protocol: "GENEVE", - /// vpcId: aws_vpc.example.id, + /// vpcId: exampleAwsVpc.id, /// healthCheck: { /// port: "80", /// protocol: "HTTP", /// }, /// }); - /// const exampleListener = new aws.lb.Listener("exampleListener", { - /// loadBalancerArn: exampleLoadBalancer.id, + /// const exampleListener = new aws.lb.Listener("example", { + /// loadBalancerArn: example.id, /// defaultActions: [{ /// targetGroupArn: exampleTargetGroup.id, /// type: "forward", @@ -1211,21 +1201,23 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi /// import pulumi_aws as aws /// - /// example_load_balancer = aws.lb.LoadBalancer("exampleLoadBalancer", + /// example = aws.lb.LoadBalancer("example", /// load_balancer_type="gateway", + /// name="example", /// subnet_mappings=[aws.lb.LoadBalancerSubnetMappingArgs( - /// subnet_id=aws_subnet["example"]["id"], + /// subnet_id=example_aws_subnet["id"], /// )]) - /// example_target_group = aws.lb.TargetGroup("exampleTargetGroup", + /// example_target_group = aws.lb.TargetGroup("example", + /// name="example", /// port=6081, /// protocol="GENEVE", - /// vpc_id=aws_vpc["example"]["id"], + /// vpc_id=example_aws_vpc["id"], /// health_check=aws.lb.TargetGroupHealthCheckArgs( /// port="80", /// protocol="HTTP", /// )) - /// example_listener = aws.lb.Listener("exampleListener", - /// load_balancer_arn=example_load_balancer.id, + /// example_listener = aws.lb.Listener("example", + /// load_balancer_arn=example.id, /// default_actions=[aws.lb.ListenerDefaultActionArgs( /// target_group_arn=example_target_group.id, /// type="forward", @@ -1239,23 +1231,25 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// return await Deployment.RunAsync(() => /// { - /// var exampleLoadBalancer = new Aws.LB.LoadBalancer("exampleLoadBalancer", new() + /// var example = new Aws.LB.LoadBalancer("example", new() /// { /// LoadBalancerType = "gateway", + /// Name = "example", /// SubnetMappings = new[] /// { /// new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs /// { - /// SubnetId = aws_subnet.Example.Id, + /// SubnetId = exampleAwsSubnet.Id, /// }, /// }, /// }); /// - /// var exampleTargetGroup = new Aws.LB.TargetGroup("exampleTargetGroup", new() + /// var exampleTargetGroup = new Aws.LB.TargetGroup("example", new() /// { + /// Name = "example", /// Port = 6081, /// Protocol = "GENEVE", - /// VpcId = aws_vpc.Example.Id, + /// VpcId = exampleAwsVpc.Id, /// HealthCheck = new Aws.LB.Inputs.TargetGroupHealthCheckArgs /// { /// Port = "80", @@ -1263,9 +1257,9 @@ namespace Pulumi.Awsx.Lb.Inputs /// }, /// }); /// - /// var exampleListener = new Aws.LB.Listener("exampleListener", new() + /// var exampleListener = new Aws.LB.Listener("example", new() /// { - /// LoadBalancerArn = exampleLoadBalancer.Id, + /// LoadBalancerArn = example.Id, /// DefaultActions = new[] /// { /// new Aws.LB.Inputs.ListenerDefaultActionArgs @@ -1288,21 +1282,23 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { - /// exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ + /// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ /// LoadBalancerType: pulumi.String("gateway"), + /// Name: pulumi.String("example"), /// SubnetMappings: lb.LoadBalancerSubnetMappingArray{ /// &lb.LoadBalancerSubnetMappingArgs{ - /// SubnetId: pulumi.Any(aws_subnet.Example.Id), + /// SubnetId: pulumi.Any(exampleAwsSubnet.Id), /// }, /// }, /// }) /// if err != nil { /// return err /// } - /// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ + /// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ + /// Name: pulumi.String("example"), /// Port: pulumi.Int(6081), /// Protocol: pulumi.String("GENEVE"), - /// VpcId: pulumi.Any(aws_vpc.Example.Id), + /// VpcId: pulumi.Any(exampleAwsVpc.Id), /// HealthCheck: &lb.TargetGroupHealthCheckArgs{ /// Port: pulumi.String("80"), /// Protocol: pulumi.String("HTTP"), @@ -1311,8 +1307,8 @@ namespace Pulumi.Awsx.Lb.Inputs /// if err != nil { /// return err /// } - /// _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ - /// LoadBalancerArn: exampleLoadBalancer.ID(), + /// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + /// LoadBalancerArn: example.ID(), /// DefaultActions: lb.ListenerDefaultActionArray{ /// &lb.ListenerDefaultActionArgs{ /// TargetGroupArn: exampleTargetGroup.ID(), @@ -1355,17 +1351,19 @@ namespace Pulumi.Awsx.Lb.Inputs /// } /// /// public static void stack(Context ctx) { - /// var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder() + /// var example = new LoadBalancer("example", LoadBalancerArgs.builder() /// .loadBalancerType("gateway") + /// .name("example") /// .subnetMappings(LoadBalancerSubnetMappingArgs.builder() - /// .subnetId(aws_subnet.example().id()) + /// .subnetId(exampleAwsSubnet.id()) /// .build()) /// .build()); /// /// var exampleTargetGroup = new TargetGroup("exampleTargetGroup", TargetGroupArgs.builder() + /// .name("example") /// .port(6081) /// .protocol("GENEVE") - /// .vpcId(aws_vpc.example().id()) + /// .vpcId(exampleAwsVpc.id()) /// .healthCheck(TargetGroupHealthCheckArgs.builder() /// .port(80) /// .protocol("HTTP") @@ -1373,7 +1371,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// .build()); /// /// var exampleListener = new Listener("exampleListener", ListenerArgs.builder() - /// .loadBalancerArn(exampleLoadBalancer.id()) + /// .loadBalancerArn(example.id()) /// .defaultActions(ListenerDefaultActionArgs.builder() /// .targetGroupArn(exampleTargetGroup.id()) /// .type("forward") @@ -1385,40 +1383,225 @@ namespace Pulumi.Awsx.Lb.Inputs /// ``` /// ```yaml /// resources: - /// exampleLoadBalancer: + /// example: /// type: aws:lb:LoadBalancer /// properties: /// loadBalancerType: gateway + /// name: example /// subnetMappings: - /// - subnetId: ${aws_subnet.example.id} + /// - subnetId: ${exampleAwsSubnet.id} /// exampleTargetGroup: /// type: aws:lb:TargetGroup + /// name: example /// properties: + /// name: example /// port: 6081 /// protocol: GENEVE - /// vpcId: ${aws_vpc.example.id} + /// vpcId: ${exampleAwsVpc.id} /// healthCheck: /// port: 80 /// protocol: HTTP /// exampleListener: /// type: aws:lb:Listener + /// name: example /// properties: - /// loadBalancerArn: ${exampleLoadBalancer.id} + /// loadBalancerArn: ${example.id} /// defaultActions: /// - targetGroupArn: ${exampleTargetGroup.id} /// type: forward /// ``` - /// {{% /example %}} - /// {{% /examples %}} + /// <!--End PulumiCodeChooser --> + /// + /// ### Mutual TLS Authentication + /// + /// <!--Start PulumiCodeChooser --> + /// ```typescript + /// import * as pulumi from "@pulumi/pulumi"; + /// import * as aws from "@pulumi/aws"; + /// + /// const example = new aws.lb.LoadBalancer("example", {loadBalancerType: "application"}); + /// const exampleTargetGroup = new aws.lb.TargetGroup("example", {}); + /// const exampleListener = new aws.lb.Listener("example", { + /// loadBalancerArn: example.id, + /// defaultActions: [{ + /// targetGroupArn: exampleTargetGroup.id, + /// type: "forward", + /// }], + /// mutualAuthentication: { + /// mode: "verify", + /// trustStoreArn: "...", + /// }, + /// }); + /// ``` + /// ```python + /// import pulumi + /// import pulumi_aws as aws + /// + /// example = aws.lb.LoadBalancer("example", load_balancer_type="application") + /// example_target_group = aws.lb.TargetGroup("example") + /// example_listener = aws.lb.Listener("example", + /// load_balancer_arn=example.id, + /// default_actions=[aws.lb.ListenerDefaultActionArgs( + /// target_group_arn=example_target_group.id, + /// type="forward", + /// )], + /// mutual_authentication=aws.lb.ListenerMutualAuthenticationArgs( + /// mode="verify", + /// trust_store_arn="...", + /// )) + /// ``` + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Aws = Pulumi.Aws; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Aws.LB.LoadBalancer("example", new() + /// { + /// LoadBalancerType = "application", + /// }); + /// + /// var exampleTargetGroup = new Aws.LB.TargetGroup("example"); + /// + /// var exampleListener = new Aws.LB.Listener("example", new() + /// { + /// LoadBalancerArn = example.Id, + /// DefaultActions = new[] + /// { + /// new Aws.LB.Inputs.ListenerDefaultActionArgs + /// { + /// TargetGroupArn = exampleTargetGroup.Id, + /// Type = "forward", + /// }, + /// }, + /// MutualAuthentication = new Aws.LB.Inputs.ListenerMutualAuthenticationArgs + /// { + /// Mode = "verify", + /// TrustStoreArn = "...", + /// }, + /// }); + /// + /// }); + /// ``` + /// ```go + /// package main + /// + /// import ( + /// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" + /// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + /// ) + /// + /// func main() { + /// pulumi.Run(func(ctx *pulumi.Context) error { + /// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ + /// LoadBalancerType: pulumi.String("application"), + /// }) + /// if err != nil { + /// return err + /// } + /// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) + /// if err != nil { + /// return err + /// } + /// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + /// LoadBalancerArn: example.ID(), + /// DefaultActions: lb.ListenerDefaultActionArray{ + /// &lb.ListenerDefaultActionArgs{ + /// TargetGroupArn: exampleTargetGroup.ID(), + /// Type: pulumi.String("forward"), + /// }, + /// }, + /// MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ + /// Mode: pulumi.String("verify"), + /// TrustStoreArn: pulumi.String("..."), + /// }, + /// }) + /// if err != nil { + /// return err + /// } + /// return nil + /// }) + /// } + /// ``` + /// ```java + /// package generated_program; + /// + /// import com.pulumi.Context; + /// import com.pulumi.Pulumi; + /// import com.pulumi.core.Output; + /// import com.pulumi.aws.lb.LoadBalancer; + /// import com.pulumi.aws.lb.LoadBalancerArgs; + /// import com.pulumi.aws.lb.TargetGroup; + /// import com.pulumi.aws.lb.Listener; + /// import com.pulumi.aws.lb.ListenerArgs; + /// import com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs; + /// import com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs; + /// import java.util.List; + /// import java.util.ArrayList; + /// import java.util.Map; + /// import java.io.File; + /// import java.nio.file.Files; + /// import java.nio.file.Paths; + /// + /// public class App { + /// public static void main(String[] args) { + /// Pulumi.run(App::stack); + /// } + /// + /// public static void stack(Context ctx) { + /// var example = new LoadBalancer("example", LoadBalancerArgs.builder() + /// .loadBalancerType("application") + /// .build()); + /// + /// var exampleTargetGroup = new TargetGroup("exampleTargetGroup"); + /// + /// var exampleListener = new Listener("exampleListener", ListenerArgs.builder() + /// .loadBalancerArn(example.id()) + /// .defaultActions(ListenerDefaultActionArgs.builder() + /// .targetGroupArn(exampleTargetGroup.id()) + /// .type("forward") + /// .build()) + /// .mutualAuthentication(ListenerMutualAuthenticationArgs.builder() + /// .mode("verify") + /// .trustStoreArn("...") + /// .build()) + /// .build()); + /// + /// } + /// } + /// ``` + /// ```yaml + /// resources: + /// example: + /// type: aws:lb:LoadBalancer + /// properties: + /// loadBalancerType: application + /// exampleTargetGroup: + /// type: aws:lb:TargetGroup + /// name: example + /// exampleListener: + /// type: aws:lb:Listener + /// name: example + /// properties: + /// loadBalancerArn: ${example.id} + /// defaultActions: + /// - targetGroupArn: ${exampleTargetGroup.id} + /// type: forward + /// mutualAuthentication: + /// mode: verify + /// trustStoreArn: '...' + /// ``` + /// <!--End PulumiCodeChooser --> /// /// ## Import /// /// Using `pulumi import`, import listeners using their ARN. For example: /// /// ```sh - /// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 + /// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 /// ``` - /// /// public sealed class ListenerArgs : global::Pulumi.ResourceArgs { @@ -1446,6 +1629,12 @@ public InputList DefaultActions set => _defaultActions = value; } + /// + /// The mutual authentication configuration information. Detailed below. + /// + [Input("mutualAuthentication")] + public Input? MutualAuthentication { get; set; } + /// /// Port on which the load balancer is listening. Not valid for Gateway Load Balancers. /// diff --git a/sdk/dotnet/Lb/Inputs/TargetGroupArgs.cs b/sdk/dotnet/Lb/Inputs/TargetGroupArgs.cs index d384cb70e..1cafc1182 100644 --- a/sdk/dotnet/Lb/Inputs/TargetGroupArgs.cs +++ b/sdk/dotnet/Lb/Inputs/TargetGroupArgs.cs @@ -15,17 +15,18 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. /// - /// {{% examples %}} /// ## Example Usage - /// {{% example %}} + /// /// ### Instance Target Group /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); /// const test = new aws.lb.TargetGroup("test", { + /// name: "tf-example-lb-tg", /// port: 80, /// protocol: "HTTP", /// vpcId: main.id, @@ -37,6 +38,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") /// test = aws.lb.TargetGroup("test", + /// name="tf-example-lb-tg", /// port=80, /// protocol="HTTP", /// vpc_id=main.id) @@ -56,6 +58,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// var test = new Aws.LB.TargetGroup("test", new() /// { + /// Name = "tf-example-lb-tg", /// Port = 80, /// Protocol = "HTTP", /// VpcId = main.Id, @@ -81,6 +84,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// return err /// } /// _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ + /// Name: pulumi.String("tf-example-lb-tg"), /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// VpcId: main.ID(), @@ -120,6 +124,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// .build()); /// /// var test = new TargetGroup("test", TargetGroupArgs.builder() + /// .name("tf-example-lb-tg") /// .port(80) /// .protocol("HTTP") /// .vpcId(main.id()) @@ -133,6 +138,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// test: /// type: aws:lb:TargetGroup /// properties: + /// name: tf-example-lb-tg /// port: 80 /// protocol: HTTP /// vpcId: ${main.id} @@ -141,16 +147,18 @@ namespace Pulumi.Awsx.Lb.Inputs /// properties: /// cidrBlock: 10.0.0.0/16 /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### IP Target Group /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); /// const ip_example = new aws.lb.TargetGroup("ip-example", { + /// name: "tf-example-lb-tg", /// port: 80, /// protocol: "HTTP", /// targetType: "ip", @@ -163,6 +171,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") /// ip_example = aws.lb.TargetGroup("ip-example", + /// name="tf-example-lb-tg", /// port=80, /// protocol="HTTP", /// target_type="ip", @@ -183,6 +192,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// var ip_example = new Aws.LB.TargetGroup("ip-example", new() /// { + /// Name = "tf-example-lb-tg", /// Port = 80, /// Protocol = "HTTP", /// TargetType = "ip", @@ -209,6 +219,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// return err /// } /// _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ + /// Name: pulumi.String("tf-example-lb-tg"), /// Port: pulumi.Int(80), /// Protocol: pulumi.String("HTTP"), /// TargetType: pulumi.String("ip"), @@ -249,6 +260,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// .build()); /// /// var ip_example = new TargetGroup("ip-example", TargetGroupArgs.builder() + /// .name("tf-example-lb-tg") /// .port(80) /// .protocol("HTTP") /// .targetType("ip") @@ -263,6 +275,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// ip-example: /// type: aws:lb:TargetGroup /// properties: + /// name: tf-example-lb-tg /// port: 80 /// protocol: HTTP /// targetType: ip @@ -272,21 +285,27 @@ namespace Pulumi.Awsx.Lb.Inputs /// properties: /// cidrBlock: 10.0.0.0/16 /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Lambda Target Group /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// - /// const lambda_example = new aws.lb.TargetGroup("lambda-example", {targetType: "lambda"}); + /// const lambda_example = new aws.lb.TargetGroup("lambda-example", { + /// name: "tf-example-lb-tg", + /// targetType: "lambda", + /// }); /// ``` /// ```python /// import pulumi /// import pulumi_aws as aws /// - /// lambda_example = aws.lb.TargetGroup("lambda-example", target_type="lambda") + /// lambda_example = aws.lb.TargetGroup("lambda-example", + /// name="tf-example-lb-tg", + /// target_type="lambda") /// ``` /// ```csharp /// using System.Collections.Generic; @@ -298,6 +317,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// { /// var lambda_example = new Aws.LB.TargetGroup("lambda-example", new() /// { + /// Name = "tf-example-lb-tg", /// TargetType = "lambda", /// }); /// @@ -314,6 +334,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ + /// Name: pulumi.String("tf-example-lb-tg"), /// TargetType: pulumi.String("lambda"), /// }) /// if err != nil { @@ -345,6 +366,7 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// public static void stack(Context ctx) { /// var lambda_example = new TargetGroup("lambda-example", TargetGroupArgs.builder() + /// .name("tf-example-lb-tg") /// .targetType("lambda") /// .build()); /// @@ -356,21 +378,24 @@ namespace Pulumi.Awsx.Lb.Inputs /// lambda-example: /// type: aws:lb:TargetGroup /// properties: + /// name: tf-example-lb-tg /// targetType: lambda /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### ALB Target Group /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const alb_example = new aws.lb.TargetGroup("alb-example", { + /// name: "tf-example-lb-alb-tg", /// targetType: "alb", /// port: 80, /// protocol: "TCP", - /// vpcId: aws_vpc.main.id, + /// vpcId: main.id, /// }); /// ``` /// ```python @@ -378,10 +403,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi_aws as aws /// /// alb_example = aws.lb.TargetGroup("alb-example", + /// name="tf-example-lb-alb-tg", /// target_type="alb", /// port=80, /// protocol="TCP", - /// vpc_id=aws_vpc["main"]["id"]) + /// vpc_id=main["id"]) /// ``` /// ```csharp /// using System.Collections.Generic; @@ -393,10 +419,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// { /// var alb_example = new Aws.LB.TargetGroup("alb-example", new() /// { + /// Name = "tf-example-lb-alb-tg", /// TargetType = "alb", /// Port = 80, /// Protocol = "TCP", - /// VpcId = aws_vpc.Main.Id, + /// VpcId = main.Id, /// }); /// /// }); @@ -412,10 +439,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ + /// Name: pulumi.String("tf-example-lb-alb-tg"), /// TargetType: pulumi.String("alb"), /// Port: pulumi.Int(80), /// Protocol: pulumi.String("TCP"), - /// VpcId: pulumi.Any(aws_vpc.Main.Id), + /// VpcId: pulumi.Any(main.Id), /// }) /// if err != nil { /// return err @@ -446,10 +474,11 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// public static void stack(Context ctx) { /// var alb_example = new TargetGroup("alb-example", TargetGroupArgs.builder() + /// .name("tf-example-lb-alb-tg") /// .targetType("alb") /// .port(80) /// .protocol("TCP") - /// .vpcId(aws_vpc.main().id()) + /// .vpcId(main.id()) /// .build()); /// /// } @@ -460,23 +489,26 @@ namespace Pulumi.Awsx.Lb.Inputs /// alb-example: /// type: aws:lb:TargetGroup /// properties: + /// name: tf-example-lb-alb-tg /// targetType: alb /// port: 80 /// protocol: TCP - /// vpcId: ${aws_vpc.main.id} + /// vpcId: ${main.id} /// ``` - /// {{% /example %}} - /// {{% example %}} + /// <!--End PulumiCodeChooser --> + /// /// ### Target group with unhealthy connection termination disabled /// + /// <!--Start PulumiCodeChooser --> /// ```typescript /// import * as pulumi from "@pulumi/pulumi"; /// import * as aws from "@pulumi/aws"; /// /// const tcp_example = new aws.lb.TargetGroup("tcp-example", { + /// name: "tf-example-lb-nlb-tg", /// port: 25, /// protocol: "TCP", - /// vpcId: aws_vpc.main.id, + /// vpcId: main.id, /// targetHealthStates: [{ /// enableUnhealthyConnectionTermination: false, /// }], @@ -487,9 +519,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// import pulumi_aws as aws /// /// tcp_example = aws.lb.TargetGroup("tcp-example", + /// name="tf-example-lb-nlb-tg", /// port=25, /// protocol="TCP", - /// vpc_id=aws_vpc["main"]["id"], + /// vpc_id=main["id"], /// target_health_states=[aws.lb.TargetGroupTargetHealthStateArgs( /// enable_unhealthy_connection_termination=False, /// )]) @@ -504,9 +537,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// { /// var tcp_example = new Aws.LB.TargetGroup("tcp-example", new() /// { + /// Name = "tf-example-lb-nlb-tg", /// Port = 25, /// Protocol = "TCP", - /// VpcId = aws_vpc.Main.Id, + /// VpcId = main.Id, /// TargetHealthStates = new[] /// { /// new Aws.LB.Inputs.TargetGroupTargetHealthStateArgs @@ -529,9 +563,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// func main() { /// pulumi.Run(func(ctx *pulumi.Context) error { /// _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ + /// Name: pulumi.String("tf-example-lb-nlb-tg"), /// Port: pulumi.Int(25), /// Protocol: pulumi.String("TCP"), - /// VpcId: pulumi.Any(aws_vpc.Main.Id), + /// VpcId: pulumi.Any(main.Id), /// TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ /// &lb.TargetGroupTargetHealthStateArgs{ /// EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -568,9 +603,10 @@ namespace Pulumi.Awsx.Lb.Inputs /// /// public static void stack(Context ctx) { /// var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder() + /// .name("tf-example-lb-nlb-tg") /// .port(25) /// .protocol("TCP") - /// .vpcId(aws_vpc.main().id()) + /// .vpcId(main.id()) /// .targetHealthStates(TargetGroupTargetHealthStateArgs.builder() /// .enableUnhealthyConnectionTermination(false) /// .build()) @@ -584,23 +620,22 @@ namespace Pulumi.Awsx.Lb.Inputs /// tcp-example: /// type: aws:lb:TargetGroup /// properties: + /// name: tf-example-lb-nlb-tg /// port: 25 /// protocol: TCP - /// vpcId: ${aws_vpc.main.id} + /// vpcId: ${main.id} /// targetHealthStates: /// - enableUnhealthyConnectionTermination: false /// ``` - /// {{% /example %}} - /// {{% /examples %}} + /// <!--End PulumiCodeChooser --> /// /// ## Import /// /// Using `pulumi import`, import Target Groups using their ARN. For example: /// /// ```sh - /// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 + /// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 /// ``` - /// /// public sealed class TargetGroupArgs : global::Pulumi.ResourceArgs { @@ -635,11 +670,17 @@ public sealed class TargetGroupArgs : global::Pulumi.ResourceArgs public Input? LambdaMultiValueHeadersEnabled { get; set; } /// - /// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + /// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. /// [Input("loadBalancingAlgorithmType")] public Input? LoadBalancingAlgorithmType { get; set; } + /// + /// Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + /// + [Input("loadBalancingAnomalyMitigation")] + public Input? LoadBalancingAnomalyMitigation { get; set; } + /// /// Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. /// @@ -671,7 +712,10 @@ public sealed class TargetGroupArgs : global::Pulumi.ResourceArgs public Input? PreserveClientIp { get; set; } /// - /// Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + /// Protocol to use for routing traffic to the targets. + /// Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + /// Required when `target_type` is `instance`, `ip`, or `alb`. + /// Does not apply when `target_type` is `lambda`. /// [Input("protocol")] public Input? Protocol { get; set; } @@ -737,7 +781,9 @@ public InputList TargetHe } /// - /// Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + /// Type of target that you must specify when registering targets with this target group. + /// See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + /// The default is `instance`. /// /// Note that you can't specify targets for a target group using both instance IDs and IP addresses. /// diff --git a/sdk/dotnet/Lb/NetworkLoadBalancer.cs b/sdk/dotnet/Lb/NetworkLoadBalancer.cs index e9e158502..b3312e5a3 100644 --- a/sdk/dotnet/Lb/NetworkLoadBalancer.cs +++ b/sdk/dotnet/Lb/NetworkLoadBalancer.cs @@ -68,13 +68,25 @@ private static ComponentResourceOptions MakeResourceOptions(ComponentResourceOpt public sealed class NetworkLoadBalancerArgs : global::Pulumi.ResourceArgs { /// - /// An Access Logs block. Access Logs documented below. + /// Access Logs block. See below. /// [Input("accessLogs")] public Input? AccessLogs { get; set; } /// - /// The ID of the customer owned ipv4 pool to use for this load balancer. + /// Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + /// + [Input("clientKeepAlive")] + public Input? ClientKeepAlive { get; set; } + + /// + /// Connection Logs block. See below. Only valid for Load Balancers of type `application`. + /// + [Input("connectionLogs")] + public Input? ConnectionLogs { get; set; } + + /// + /// ID of the customer owned ipv4 pool to use for this load balancer. /// [Input("customerOwnedIpv4Pool")] public Input? CustomerOwnedIpv4Pool { get; set; } @@ -92,19 +104,19 @@ public sealed class NetworkLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? DefaultTargetGroupPort { get; set; } /// - /// Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + /// How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. /// [Input("desyncMitigationMode")] public Input? DesyncMitigationMode { get; set; } /// - /// Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + /// How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. /// [Input("dnsRecordClientRoutingPolicy")] public Input? DnsRecordClientRoutingPolicy { get; set; } /// - /// Indicates 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 `application`. + /// 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 `application`. /// [Input("dropInvalidHeaderFields")] public Input? DropInvalidHeaderFields { get; set; } @@ -122,25 +134,31 @@ public sealed class NetworkLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? EnableDeletionProtection { get; set; } /// - /// Indicates 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 `application`. Defaults to `false` + /// 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 `application`. Defaults to `false` /// [Input("enableTlsVersionAndCipherSuiteHeaders")] public Input? EnableTlsVersionAndCipherSuiteHeaders { get; set; } /// - /// Indicates 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 `false`. + /// 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 `false`. /// [Input("enableWafFailOpen")] public Input? EnableWafFailOpen { get; set; } /// - /// Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + /// Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. /// [Input("enableXffClientPort")] public Input? EnableXffClientPort { get; set; } /// - /// The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + /// Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + /// + [Input("enforceSecurityGroupInboundRulesOnPrivateLinkTraffic")] + public Input? EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic { get; set; } + + /// + /// Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. /// [Input("idleTimeout")] public Input? IdleTimeout { get; set; } @@ -152,7 +170,7 @@ public sealed class NetworkLoadBalancerArgs : global::Pulumi.ResourceArgs public Input? Internal { get; set; } /// - /// The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + /// Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. /// [Input("ipAddressType")] public Input? IpAddressType { get; set; } @@ -176,9 +194,7 @@ public List Listeners } /// - /// The 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`. + /// 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`. /// [Input("name")] public Input? Name { get; set; } @@ -190,7 +206,7 @@ public List Listeners public Input? NamePrefix { get; set; } /// - /// Indicates 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 `false`. + /// 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 `false`. /// [Input("preserveHostHeader")] public Input? PreserveHostHeader { get; set; } @@ -199,9 +215,7 @@ public List Listeners private InputList? _subnetIds; /// - /// A list of subnet IDs to attach to the LB. Subnets - /// cannot be updated for Load Balancers of type `network`. Changing this value - /// for load balancers of type `network` will force a recreation of the resource. + /// List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. /// public InputList SubnetIds { @@ -213,7 +227,7 @@ public InputList SubnetIds private InputList? _subnetMappings; /// - /// A subnet mapping block as documented below. + /// Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. /// public InputList SubnetMappings { @@ -237,7 +251,7 @@ public InputList Subnets private InputMap? _tags; /// - /// A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + /// Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. /// public InputMap Tags { diff --git a/sdk/go.mod b/sdk/go.mod index e79b52355..c2a1944ba 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -6,9 +6,9 @@ toolchain go1.21.1 require ( github.com/blang/semver v3.5.1+incompatible - github.com/pulumi/pulumi-aws/sdk/v6 v6.9.0 + github.com/pulumi/pulumi-aws/sdk/v6 v6.32.0 github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3 - github.com/pulumi/pulumi/sdk/v3 v3.93.0 + github.com/pulumi/pulumi/sdk/v3 v3.112.0 ) require ( @@ -36,6 +36,7 @@ require ( github.com/golang/glog v1.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -44,21 +45,23 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.1 // indirect + github.com/muesli/termenv v0.15.2 // indirect github.com/opentracing/basictracer-go v1.1.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pgavlin/fx v0.1.6 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/term v1.1.0 // indirect - github.com/pulumi/esc v0.5.6 // indirect + github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect + github.com/pulumi/esc v0.6.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect @@ -75,15 +78,15 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/atomic v1.9.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.14.0 // indirect + golang.org/x/tools v0.15.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d // indirect google.golang.org/grpc v1.57.1 // indirect google.golang.org/protobuf v1.33.0 // indirect @@ -91,5 +94,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect pgregory.net/rapid v0.6.1 // indirect - sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect ) diff --git a/sdk/go.sum b/sdk/go.sum index b1a76ebf9..8105e7672 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -75,6 +75,8 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -107,26 +109,26 @@ github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZb github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= -github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= @@ -134,6 +136,8 @@ github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS6 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= +github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -142,14 +146,16 @@ github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pulumi/esc v0.5.6 h1:4WV3X7OEVcChIwbSG+JxhZDdmq/q7lFPaSjHRYlPwmI= -github.com/pulumi/esc v0.5.6/go.mod h1:wpwNfVS5fV7Kd51j4dJ6FWYlKfxdqyppgp0gtkzqH04= -github.com/pulumi/pulumi-aws/sdk/v6 v6.9.0 h1:lXAuHTQpahA/AOE7MstBsoQi4E6by1nKII1WRO3oq+w= -github.com/pulumi/pulumi-aws/sdk/v6 v6.9.0/go.mod h1:j9uDjldfM/PmtXTpmRtHdsmsay3bW4pVYb4cI6OdAvw= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= +github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= +github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= +github.com/pulumi/pulumi-aws/sdk/v6 v6.32.0 h1:Lrh2HiUJvlXpXCjWG7SOjJOTAkF6JdnvXvIaXcKuxmA= +github.com/pulumi/pulumi-aws/sdk/v6 v6.32.0/go.mod h1:sIRGiNHIQNbfxV294D44laQv791coNsyWA6TjY0uqD4= github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3 h1:gQC2As+wE8QflbLCG90jLaKwIpqW3yl1y327Jj6ovbI= github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3/go.mod h1:i19ZhFjFQrngtXYLHp3kjZNRmnEnq/DUdXK6/CBk77o= -github.com/pulumi/pulumi/sdk/v3 v3.93.0 h1:5InTUxulGuPMXQbnrruIbOEJylRkRWfoDyQIj6dtsYA= -github.com/pulumi/pulumi/sdk/v3 v3.93.0/go.mod h1:zeqyIODqbb6GrEyhFV6aJET/xBSXSnF7Bw/EjbYZUnU= +github.com/pulumi/pulumi/sdk/v3 v3.112.0 h1:cq2x5N6iuYhSLdeOdRs+LIq0EneB0Cb54WOlD/VaX3E= +github.com/pulumi/pulumi/sdk/v3 v3.112.0/go.mod h1:JWSzKBoHd8rlncC1DhXLf7YdV+Bk/Qf+hSZOOQh0WwQ= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -207,18 +213,18 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -230,15 +236,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -259,15 +265,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -285,8 +291,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -315,5 +321,3 @@ lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ= pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM= -sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/sdk/go/awsx/awsx/pulumiTypes.go b/sdk/go/awsx/awsx/pulumiTypes.go index d764257f2..da6022247 100644 --- a/sdk/go/awsx/awsx/pulumiTypes.go +++ b/sdk/go/awsx/awsx/pulumiTypes.go @@ -1464,6 +1464,8 @@ type LogGroup struct { // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires // permissions for the CMK whenever the encrypted data is requested. KmsKeyId *string `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass *string `pulumi:"logGroupClass"` // The name of the log group. If omitted, this provider will assign a random, unique name. Name *string `pulumi:"name"` // Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -1495,6 +1497,8 @@ type LogGroupArgs struct { // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires // permissions for the CMK whenever the encrypted data is requested. KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass pulumi.StringPtrInput `pulumi:"logGroupClass"` // The name of the log group. If omitted, this provider will assign a random, unique name. Name pulumi.StringPtrInput `pulumi:"name"` // Creates a unique name beginning with the specified prefix. Conflicts with `name`. @@ -1594,6 +1598,11 @@ func (o LogGroupOutput) KmsKeyId() pulumi.StringPtrOutput { return o.ApplyT(func(v LogGroup) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) } +// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. +func (o LogGroupOutput) LogGroupClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogGroup) *string { return v.LogGroupClass }).(pulumi.StringPtrOutput) +} + // The name of the log group. If omitted, this provider will assign a random, unique name. func (o LogGroupOutput) Name() pulumi.StringPtrOutput { return o.ApplyT(func(v LogGroup) *string { return v.Name }).(pulumi.StringPtrOutput) @@ -1657,6 +1666,16 @@ func (o LogGroupPtrOutput) KmsKeyId() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } +// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. +func (o LogGroupPtrOutput) LogGroupClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) *string { + if v == nil { + return nil + } + return v.LogGroupClass + }).(pulumi.StringPtrOutput) +} + // The name of the log group. If omitted, this provider will assign a random, unique name. func (o LogGroupPtrOutput) Name() pulumi.StringPtrOutput { return o.ApplyT(func(v *LogGroup) *string { diff --git a/sdk/go/awsx/ec2/pulumiTypes.go b/sdk/go/awsx/ec2/pulumiTypes.go index 75cecb232..608b14c9c 100644 --- a/sdk/go/awsx/ec2/pulumiTypes.go +++ b/sdk/go/awsx/ec2/pulumiTypes.go @@ -403,7 +403,10 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // Doing so will cause a conflict of associations and will overwrite the association. // // ## Example Usage +// // ### Basic +// +// // ```go // package main // @@ -417,7 +420,7 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // }) // if err != nil { @@ -428,7 +431,11 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // } // // ``` +// +// // ### Basic w/ Tags +// +// // ```go // package main // @@ -442,7 +449,7 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // Tags: pulumi.StringMap{ // "Environment": pulumi.String("test"), @@ -456,7 +463,11 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // } // // ``` +// +// // ### Interface Endpoint Type +// +// // ```go // package main // @@ -470,11 +481,11 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), // VpcEndpointType: pulumi.String("Interface"), // SecurityGroupIds: pulumi.StringArray{ -// aws_security_group.Sg1.Id, +// sg1.Id, // }, // PrivateDnsEnabled: pulumi.Bool(true), // }) @@ -486,7 +497,11 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // } // // ``` +// +// // ### Gateway Load Balancer Endpoint Type +// +// // ```go // package main // @@ -504,25 +519,25 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // if err != nil { // return err // } -// exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ +// example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ // AcceptanceRequired: pulumi.Bool(false), // AllowedPrincipals: pulumi.StringArray{ -// *pulumi.String(current.Arn), +// pulumi.String(current.Arn), // }, // GatewayLoadBalancerArns: pulumi.StringArray{ -// aws_lb.Example.Arn, +// exampleAwsLb.Arn, // }, // }) // if err != nil { // return err // } -// _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ -// ServiceName: exampleVpcEndpointService.ServiceName, +// _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ +// ServiceName: example.ServiceName, // SubnetIds: pulumi.StringArray{ -// aws_subnet.Example.Id, +// exampleAwsSubnet.Id, // }, -// VpcEndpointType: exampleVpcEndpointService.ServiceType, -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcEndpointType: example.ServiceType, +// VpcId: pulumi.Any(exampleAwsVpc.Id), // }) // if err != nil { // return err @@ -532,15 +547,14 @@ func (o SubnetSpecArrayOutput) Index(i pulumi.IntInput) SubnetSpecOutput { // } // // ``` +// // // ## Import // // Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: // // ```sh -// -// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 -// +// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 // ``` type VpcEndpointSpec struct { // Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account). @@ -590,7 +604,10 @@ type VpcEndpointSpecInput interface { // Doing so will cause a conflict of associations and will overwrite the association. // // ## Example Usage +// // ### Basic +// +// // ```go // package main // @@ -604,7 +621,7 @@ type VpcEndpointSpecInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // }) // if err != nil { @@ -615,7 +632,11 @@ type VpcEndpointSpecInput interface { // } // // ``` +// +// // ### Basic w/ Tags +// +// // ```go // package main // @@ -629,7 +650,7 @@ type VpcEndpointSpecInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // Tags: pulumi.StringMap{ // "Environment": pulumi.String("test"), @@ -643,7 +664,11 @@ type VpcEndpointSpecInput interface { // } // // ``` +// +// // ### Interface Endpoint Type +// +// // ```go // package main // @@ -657,11 +682,11 @@ type VpcEndpointSpecInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), // VpcEndpointType: pulumi.String("Interface"), // SecurityGroupIds: pulumi.StringArray{ -// aws_security_group.Sg1.Id, +// sg1.Id, // }, // PrivateDnsEnabled: pulumi.Bool(true), // }) @@ -673,7 +698,11 @@ type VpcEndpointSpecInput interface { // } // // ``` +// +// // ### Gateway Load Balancer Endpoint Type +// +// // ```go // package main // @@ -691,25 +720,25 @@ type VpcEndpointSpecInput interface { // if err != nil { // return err // } -// exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ +// example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ // AcceptanceRequired: pulumi.Bool(false), // AllowedPrincipals: pulumi.StringArray{ -// *pulumi.String(current.Arn), +// pulumi.String(current.Arn), // }, // GatewayLoadBalancerArns: pulumi.StringArray{ -// aws_lb.Example.Arn, +// exampleAwsLb.Arn, // }, // }) // if err != nil { // return err // } -// _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ -// ServiceName: exampleVpcEndpointService.ServiceName, +// _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ +// ServiceName: example.ServiceName, // SubnetIds: pulumi.StringArray{ -// aws_subnet.Example.Id, +// exampleAwsSubnet.Id, // }, -// VpcEndpointType: exampleVpcEndpointService.ServiceType, -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcEndpointType: example.ServiceType, +// VpcId: pulumi.Any(exampleAwsVpc.Id), // }) // if err != nil { // return err @@ -719,15 +748,14 @@ type VpcEndpointSpecInput interface { // } // // ``` +// // // ## Import // // Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: // // ```sh -// -// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 -// +// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 // ``` type VpcEndpointSpecArgs struct { // Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account). @@ -803,7 +831,10 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // Doing so will cause a conflict of associations and will overwrite the association. // // ## Example Usage +// // ### Basic +// +// // ```go // package main // @@ -817,7 +848,7 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // }) // if err != nil { @@ -828,7 +859,11 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // } // // ``` +// +// // ### Basic w/ Tags +// +// // ```go // package main // @@ -842,7 +877,7 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), // Tags: pulumi.StringMap{ // "Environment": pulumi.String("test"), @@ -856,7 +891,11 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // } // // ``` +// +// // ### Interface Endpoint Type +// +// // ```go // package main // @@ -870,11 +909,11 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), // VpcEndpointType: pulumi.String("Interface"), // SecurityGroupIds: pulumi.StringArray{ -// aws_security_group.Sg1.Id, +// sg1.Id, // }, // PrivateDnsEnabled: pulumi.Bool(true), // }) @@ -886,7 +925,11 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // } // // ``` +// +// // ### Gateway Load Balancer Endpoint Type +// +// // ```go // package main // @@ -904,25 +947,25 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // if err != nil { // return err // } -// exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ +// example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ // AcceptanceRequired: pulumi.Bool(false), // AllowedPrincipals: pulumi.StringArray{ -// *pulumi.String(current.Arn), +// pulumi.String(current.Arn), // }, // GatewayLoadBalancerArns: pulumi.StringArray{ -// aws_lb.Example.Arn, +// exampleAwsLb.Arn, // }, // }) // if err != nil { // return err // } -// _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ -// ServiceName: exampleVpcEndpointService.ServiceName, +// _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ +// ServiceName: example.ServiceName, // SubnetIds: pulumi.StringArray{ -// aws_subnet.Example.Id, +// exampleAwsSubnet.Id, // }, -// VpcEndpointType: exampleVpcEndpointService.ServiceType, -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcEndpointType: example.ServiceType, +// VpcId: pulumi.Any(exampleAwsVpc.Id), // }) // if err != nil { // return err @@ -932,15 +975,14 @@ func (i VpcEndpointSpecArray) ToVpcEndpointSpecArrayOutputWithContext(ctx contex // } // // ``` +// // // ## Import // // Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: // // ```sh -// -// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 -// +// $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 // ``` type VpcEndpointSpecOutput struct{ *pulumi.OutputState } diff --git a/sdk/go/awsx/ecs/ec2service.go b/sdk/go/awsx/ecs/ec2service.go index 25f79ea13..2616d695e 100644 --- a/sdk/go/awsx/ecs/ec2service.go +++ b/sdk/go/awsx/ecs/ec2service.go @@ -94,7 +94,7 @@ type ec2serviceArgs struct { TaskDefinition *string `pulumi:"taskDefinition"` // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. TaskDefinitionArgs *EC2ServiceTaskDefinition `pulumi:"taskDefinitionArgs"` - // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. Triggers map[string]string `pulumi:"triggers"` } @@ -154,7 +154,7 @@ type EC2ServiceArgs struct { TaskDefinition pulumi.StringPtrInput // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. TaskDefinitionArgs *EC2ServiceTaskDefinitionArgs - // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. Triggers pulumi.StringMapInput } diff --git a/sdk/go/awsx/ecs/ec2taskDefinition.go b/sdk/go/awsx/ecs/ec2taskDefinition.go index a1674605b..5fcb5a261 100644 --- a/sdk/go/awsx/ecs/ec2taskDefinition.go +++ b/sdk/go/awsx/ecs/ec2taskDefinition.go @@ -95,6 +95,8 @@ type ec2taskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest *bool `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` } @@ -146,6 +148,8 @@ type EC2TaskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicyArgs + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest pulumi.BoolPtrInput // Configuration block for volumes that containers in your task may use. Detailed below. Volumes ecs.TaskDefinitionVolumeArrayInput } diff --git a/sdk/go/awsx/ecs/fargateService.go b/sdk/go/awsx/ecs/fargateService.go index a2058ac7a..b3ee24008 100644 --- a/sdk/go/awsx/ecs/fargateService.go +++ b/sdk/go/awsx/ecs/fargateService.go @@ -94,7 +94,7 @@ type fargateServiceArgs struct { TaskDefinition *string `pulumi:"taskDefinition"` // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. TaskDefinitionArgs *FargateServiceTaskDefinition `pulumi:"taskDefinitionArgs"` - // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. Triggers map[string]string `pulumi:"triggers"` } @@ -154,7 +154,7 @@ type FargateServiceArgs struct { TaskDefinition pulumi.StringPtrInput // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. TaskDefinitionArgs *FargateServiceTaskDefinitionArgs - // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. Triggers pulumi.StringMapInput } diff --git a/sdk/go/awsx/ecs/fargateTaskDefinition.go b/sdk/go/awsx/ecs/fargateTaskDefinition.go index 4a6b7b81c..42c8ef084 100644 --- a/sdk/go/awsx/ecs/fargateTaskDefinition.go +++ b/sdk/go/awsx/ecs/fargateTaskDefinition.go @@ -93,6 +93,8 @@ type fargateTaskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest *bool `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` } @@ -142,6 +144,8 @@ type FargateTaskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicyArgs + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest pulumi.BoolPtrInput // Configuration block for volumes that containers in your task may use. Detailed below. Volumes ecs.TaskDefinitionVolumeArrayInput } diff --git a/sdk/go/awsx/ecs/pulumiTypes.go b/sdk/go/awsx/ecs/pulumiTypes.go index e8402ebc5..2799fb7e2 100644 --- a/sdk/go/awsx/ecs/pulumiTypes.go +++ b/sdk/go/awsx/ecs/pulumiTypes.go @@ -65,6 +65,8 @@ type EC2ServiceTaskDefinition struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest *bool `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` } @@ -129,6 +131,8 @@ type EC2ServiceTaskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest pulumi.BoolPtrInput `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes ecs.TaskDefinitionVolumeArrayInput `pulumi:"volumes"` } @@ -316,6 +320,11 @@ func (o EC2ServiceTaskDefinitionOutput) TaskRole() awsx.DefaultRoleWithPolicyPtr return o.ApplyT(func(v EC2ServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.TaskRole }).(awsx.DefaultRoleWithPolicyPtrOutput) } +// Whether should track latest task definition or the one created with the resource. Default is `false`. +func (o EC2ServiceTaskDefinitionOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *bool { return v.TrackLatest }).(pulumi.BoolPtrOutput) +} + // Configuration block for volumes that containers in your task may use. Detailed below. func (o EC2ServiceTaskDefinitionOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { return o.ApplyT(func(v EC2ServiceTaskDefinition) []ecs.TaskDefinitionVolume { return v.Volumes }).(ecs.TaskDefinitionVolumeArrayOutput) @@ -534,6 +543,16 @@ func (o EC2ServiceTaskDefinitionPtrOutput) TaskRole() awsx.DefaultRoleWithPolicy }).(awsx.DefaultRoleWithPolicyPtrOutput) } +// Whether should track latest task definition or the one created with the resource. Default is `false`. +func (o EC2ServiceTaskDefinitionPtrOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.TrackLatest + }).(pulumi.BoolPtrOutput) +} + // Configuration block for volumes that containers in your task may use. Detailed below. func (o EC2ServiceTaskDefinitionPtrOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { return o.ApplyT(func(v *EC2ServiceTaskDefinition) []ecs.TaskDefinitionVolume { @@ -591,6 +610,8 @@ type FargateServiceTaskDefinition struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest *bool `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` } @@ -653,6 +674,8 @@ type FargateServiceTaskDefinitionArgs struct { // IAM role that allows your Amazon ECS container task to make calls to other AWS services. // Will be created automatically if not defined. TaskRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"taskRole"` + // Whether should track latest task definition or the one created with the resource. Default is `false`. + TrackLatest pulumi.BoolPtrInput `pulumi:"trackLatest"` // Configuration block for volumes that containers in your task may use. Detailed below. Volumes ecs.TaskDefinitionVolumeArrayInput `pulumi:"volumes"` } @@ -837,6 +860,11 @@ func (o FargateServiceTaskDefinitionOutput) TaskRole() awsx.DefaultRoleWithPolic return o.ApplyT(func(v FargateServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.TaskRole }).(awsx.DefaultRoleWithPolicyPtrOutput) } +// Whether should track latest task definition or the one created with the resource. Default is `false`. +func (o FargateServiceTaskDefinitionOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *bool { return v.TrackLatest }).(pulumi.BoolPtrOutput) +} + // Configuration block for volumes that containers in your task may use. Detailed below. func (o FargateServiceTaskDefinitionOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { return o.ApplyT(func(v FargateServiceTaskDefinition) []ecs.TaskDefinitionVolume { return v.Volumes }).(ecs.TaskDefinitionVolumeArrayOutput) @@ -1045,6 +1073,16 @@ func (o FargateServiceTaskDefinitionPtrOutput) TaskRole() awsx.DefaultRoleWithPo }).(awsx.DefaultRoleWithPolicyPtrOutput) } +// Whether should track latest task definition or the one created with the resource. Default is `false`. +func (o FargateServiceTaskDefinitionPtrOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.TrackLatest + }).(pulumi.BoolPtrOutput) +} + // Configuration block for volumes that containers in your task may use. Detailed below. func (o FargateServiceTaskDefinitionPtrOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { return o.ApplyT(func(v *FargateServiceTaskDefinition) []ecs.TaskDefinitionVolume { diff --git a/sdk/go/awsx/lb/applicationLoadBalancer.go b/sdk/go/awsx/lb/applicationLoadBalancer.go index 0a872b0cc..dab4ef28c 100644 --- a/sdk/go/awsx/lb/applicationLoadBalancer.go +++ b/sdk/go/awsx/lb/applicationLoadBalancer.go @@ -50,9 +50,13 @@ func NewApplicationLoadBalancer(ctx *pulumi.Context, } type applicationLoadBalancerArgs struct { - // An Access Logs block. Access Logs documented below. + // Access Logs block. See below. AccessLogs *lb.LoadBalancerAccessLogs `pulumi:"accessLogs"` - // The ID of the customer owned ipv4 pool to use for this load balancer. + // Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + ClientKeepAlive *int `pulumi:"clientKeepAlive"` + // Connection Logs block. See below. Only valid for Load Balancers of type `application`. + ConnectionLogs *lb.LoadBalancerConnectionLogs `pulumi:"connectionLogs"` + // ID of the customer owned ipv4 pool to use for this load balancer. CustomerOwnedIpv4Pool *string `pulumi:"customerOwnedIpv4Pool"` // Options for creating a default security group if [securityGroups] not specified. DefaultSecurityGroup *awsx.DefaultSecurityGroup `pulumi:"defaultSecurityGroup"` @@ -60,51 +64,49 @@ type applicationLoadBalancerArgs struct { DefaultTargetGroup *TargetGroup `pulumi:"defaultTargetGroup"` // Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. DefaultTargetGroupPort *int `pulumi:"defaultTargetGroupPort"` - // Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + // How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. DesyncMitigationMode *string `pulumi:"desyncMitigationMode"` - // Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + // How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. DnsRecordClientRoutingPolicy *string `pulumi:"dnsRecordClientRoutingPolicy"` - // Indicates 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 `application`. + // 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 `application`. DropInvalidHeaderFields *bool `pulumi:"dropInvalidHeaderFields"` // 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 `false`. EnableDeletionProtection *bool `pulumi:"enableDeletionProtection"` - // Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + // Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. EnableHttp2 *bool `pulumi:"enableHttp2"` - // Indicates 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 `application`. Defaults to `false` + // 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 `application`. Defaults to `false` EnableTlsVersionAndCipherSuiteHeaders *bool `pulumi:"enableTlsVersionAndCipherSuiteHeaders"` - // Indicates 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 `false`. + // 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 `false`. EnableWafFailOpen *bool `pulumi:"enableWafFailOpen"` - // Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + // Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. EnableXffClientPort *bool `pulumi:"enableXffClientPort"` - // The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + // Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic *string `pulumi:"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"` + // Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. IdleTimeout *int `pulumi:"idleTimeout"` // If true, the LB will be internal. Defaults to `false`. Internal *bool `pulumi:"internal"` - // The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + // Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. IpAddressType *string `pulumi:"ipAddressType"` // A listener to create. Only one of [listener] and [listeners] can be specified. Listener *Listener `pulumi:"listener"` // List of listeners to create. Only one of [listener] and [listeners] can be specified. Listeners []Listener `pulumi:"listeners"` - // The 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`. + // 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`. Name *string `pulumi:"name"` // Creates a unique name beginning with the specified prefix. Conflicts with `name`. NamePrefix *string `pulumi:"namePrefix"` - // Indicates 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 `false`. + // 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 `false`. PreserveHostHeader *bool `pulumi:"preserveHostHeader"` - // A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + // List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. SecurityGroups []string `pulumi:"securityGroups"` - // A list of subnet IDs to attach to the LB. Subnets - // cannot be updated for Load Balancers of type `network`. Changing this value - // for load balancers of type `network` will force a recreation of the resource. + // List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. SubnetIds []string `pulumi:"subnetIds"` - // A subnet mapping block as documented below. + // Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. SubnetMappings []lb.LoadBalancerSubnetMapping `pulumi:"subnetMappings"` // A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified Subnets []*ec2.Subnet `pulumi:"subnets"` - // A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags map[string]string `pulumi:"tags"` // 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. XffHeaderProcessingMode *string `pulumi:"xffHeaderProcessingMode"` @@ -112,9 +114,13 @@ type applicationLoadBalancerArgs struct { // The set of arguments for constructing a ApplicationLoadBalancer resource. type ApplicationLoadBalancerArgs struct { - // An Access Logs block. Access Logs documented below. + // Access Logs block. See below. AccessLogs lb.LoadBalancerAccessLogsPtrInput - // The ID of the customer owned ipv4 pool to use for this load balancer. + // Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + ClientKeepAlive pulumi.IntPtrInput + // Connection Logs block. See below. Only valid for Load Balancers of type `application`. + ConnectionLogs lb.LoadBalancerConnectionLogsPtrInput + // ID of the customer owned ipv4 pool to use for this load balancer. CustomerOwnedIpv4Pool pulumi.StringPtrInput // Options for creating a default security group if [securityGroups] not specified. DefaultSecurityGroup *awsx.DefaultSecurityGroupArgs @@ -122,51 +128,49 @@ type ApplicationLoadBalancerArgs struct { DefaultTargetGroup *TargetGroupArgs // Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. DefaultTargetGroupPort pulumi.IntPtrInput - // Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + // How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. DesyncMitigationMode pulumi.StringPtrInput - // Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + // How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. DnsRecordClientRoutingPolicy pulumi.StringPtrInput - // Indicates 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 `application`. + // 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 `application`. DropInvalidHeaderFields pulumi.BoolPtrInput // 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 `false`. EnableDeletionProtection pulumi.BoolPtrInput - // Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + // Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. EnableHttp2 pulumi.BoolPtrInput - // Indicates 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 `application`. Defaults to `false` + // 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 `application`. Defaults to `false` EnableTlsVersionAndCipherSuiteHeaders pulumi.BoolPtrInput - // Indicates 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 `false`. + // 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 `false`. EnableWafFailOpen pulumi.BoolPtrInput - // Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + // Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. EnableXffClientPort pulumi.BoolPtrInput - // The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + // Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic pulumi.StringPtrInput + // Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. IdleTimeout pulumi.IntPtrInput // If true, the LB will be internal. Defaults to `false`. Internal pulumi.BoolPtrInput - // The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + // Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. IpAddressType pulumi.StringPtrInput // A listener to create. Only one of [listener] and [listeners] can be specified. Listener *ListenerArgs // List of listeners to create. Only one of [listener] and [listeners] can be specified. Listeners []ListenerArgs - // The 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`. + // 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`. Name pulumi.StringPtrInput // Creates a unique name beginning with the specified prefix. Conflicts with `name`. NamePrefix pulumi.StringPtrInput - // Indicates 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 `false`. + // 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 `false`. PreserveHostHeader pulumi.BoolPtrInput - // A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + // List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. SecurityGroups pulumi.StringArrayInput - // A list of subnet IDs to attach to the LB. Subnets - // cannot be updated for Load Balancers of type `network`. Changing this value - // for load balancers of type `network` will force a recreation of the resource. + // List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. SubnetIds pulumi.StringArrayInput - // A subnet mapping block as documented below. + // Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. SubnetMappings lb.LoadBalancerSubnetMappingArrayInput // A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified Subnets ec2.SubnetArrayInput - // A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags pulumi.StringMapInput // 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. XffHeaderProcessingMode pulumi.StringPtrInput diff --git a/sdk/go/awsx/lb/networkLoadBalancer.go b/sdk/go/awsx/lb/networkLoadBalancer.go index 8aefe49df..bff0207dd 100644 --- a/sdk/go/awsx/lb/networkLoadBalancer.go +++ b/sdk/go/awsx/lb/networkLoadBalancer.go @@ -44,57 +44,59 @@ func NewNetworkLoadBalancer(ctx *pulumi.Context, } type networkLoadBalancerArgs struct { - // An Access Logs block. Access Logs documented below. + // Access Logs block. See below. AccessLogs *lb.LoadBalancerAccessLogs `pulumi:"accessLogs"` - // The ID of the customer owned ipv4 pool to use for this load balancer. + // Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + ClientKeepAlive *int `pulumi:"clientKeepAlive"` + // Connection Logs block. See below. Only valid for Load Balancers of type `application`. + ConnectionLogs *lb.LoadBalancerConnectionLogs `pulumi:"connectionLogs"` + // ID of the customer owned ipv4 pool to use for this load balancer. CustomerOwnedIpv4Pool *string `pulumi:"customerOwnedIpv4Pool"` // Options creating a default target group. DefaultTargetGroup *TargetGroup `pulumi:"defaultTargetGroup"` // Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. DefaultTargetGroupPort *int `pulumi:"defaultTargetGroupPort"` - // Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + // How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. DesyncMitigationMode *string `pulumi:"desyncMitigationMode"` - // Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + // How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. DnsRecordClientRoutingPolicy *string `pulumi:"dnsRecordClientRoutingPolicy"` - // Indicates 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 `application`. + // 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 `application`. DropInvalidHeaderFields *bool `pulumi:"dropInvalidHeaderFields"` // If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`. EnableCrossZoneLoadBalancing *bool `pulumi:"enableCrossZoneLoadBalancing"` // 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 `false`. EnableDeletionProtection *bool `pulumi:"enableDeletionProtection"` - // Indicates 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 `application`. Defaults to `false` + // 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 `application`. Defaults to `false` EnableTlsVersionAndCipherSuiteHeaders *bool `pulumi:"enableTlsVersionAndCipherSuiteHeaders"` - // Indicates 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 `false`. + // 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 `false`. EnableWafFailOpen *bool `pulumi:"enableWafFailOpen"` - // Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + // Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. EnableXffClientPort *bool `pulumi:"enableXffClientPort"` - // The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + // Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic *string `pulumi:"enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"` + // Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. IdleTimeout *int `pulumi:"idleTimeout"` // If true, the LB will be internal. Defaults to `false`. Internal *bool `pulumi:"internal"` - // The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + // Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. IpAddressType *string `pulumi:"ipAddressType"` // A listener to create. Only one of [listener] and [listeners] can be specified. Listener *Listener `pulumi:"listener"` // List of listeners to create. Only one of [listener] and [listeners] can be specified. Listeners []Listener `pulumi:"listeners"` - // The 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`. + // 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`. Name *string `pulumi:"name"` // Creates a unique name beginning with the specified prefix. Conflicts with `name`. NamePrefix *string `pulumi:"namePrefix"` - // Indicates 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 `false`. + // 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 `false`. PreserveHostHeader *bool `pulumi:"preserveHostHeader"` - // A list of subnet IDs to attach to the LB. Subnets - // cannot be updated for Load Balancers of type `network`. Changing this value - // for load balancers of type `network` will force a recreation of the resource. + // List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. SubnetIds []string `pulumi:"subnetIds"` - // A subnet mapping block as documented below. + // Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. SubnetMappings []lb.LoadBalancerSubnetMapping `pulumi:"subnetMappings"` // A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified Subnets []*ec2.Subnet `pulumi:"subnets"` - // A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags map[string]string `pulumi:"tags"` // 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. XffHeaderProcessingMode *string `pulumi:"xffHeaderProcessingMode"` @@ -102,57 +104,59 @@ type networkLoadBalancerArgs struct { // The set of arguments for constructing a NetworkLoadBalancer resource. type NetworkLoadBalancerArgs struct { - // An Access Logs block. Access Logs documented below. + // Access Logs block. See below. AccessLogs lb.LoadBalancerAccessLogsPtrInput - // The ID of the customer owned ipv4 pool to use for this load balancer. + // Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + ClientKeepAlive pulumi.IntPtrInput + // Connection Logs block. See below. Only valid for Load Balancers of type `application`. + ConnectionLogs lb.LoadBalancerConnectionLogsPtrInput + // ID of the customer owned ipv4 pool to use for this load balancer. CustomerOwnedIpv4Pool pulumi.StringPtrInput // Options creating a default target group. DefaultTargetGroup *TargetGroupArgs // Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. DefaultTargetGroupPort pulumi.IntPtrInput - // Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + // How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. DesyncMitigationMode pulumi.StringPtrInput - // Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + // How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. DnsRecordClientRoutingPolicy pulumi.StringPtrInput - // Indicates 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 `application`. + // 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 `application`. DropInvalidHeaderFields pulumi.BoolPtrInput // If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`. EnableCrossZoneLoadBalancing pulumi.BoolPtrInput // 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 `false`. EnableDeletionProtection pulumi.BoolPtrInput - // Indicates 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 `application`. Defaults to `false` + // 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 `application`. Defaults to `false` EnableTlsVersionAndCipherSuiteHeaders pulumi.BoolPtrInput - // Indicates 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 `false`. + // 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 `false`. EnableWafFailOpen pulumi.BoolPtrInput - // Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + // Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. EnableXffClientPort pulumi.BoolPtrInput - // The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + // Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic pulumi.StringPtrInput + // Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. IdleTimeout pulumi.IntPtrInput // If true, the LB will be internal. Defaults to `false`. Internal pulumi.BoolPtrInput - // The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + // Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. IpAddressType pulumi.StringPtrInput // A listener to create. Only one of [listener] and [listeners] can be specified. Listener *ListenerArgs // List of listeners to create. Only one of [listener] and [listeners] can be specified. Listeners []ListenerArgs - // The 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`. + // 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`. Name pulumi.StringPtrInput // Creates a unique name beginning with the specified prefix. Conflicts with `name`. NamePrefix pulumi.StringPtrInput - // Indicates 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 `false`. + // 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 `false`. PreserveHostHeader pulumi.BoolPtrInput - // A list of subnet IDs to attach to the LB. Subnets - // cannot be updated for Load Balancers of type `network`. Changing this value - // for load balancers of type `network` will force a recreation of the resource. + // List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. SubnetIds pulumi.StringArrayInput - // A subnet mapping block as documented below. + // Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. SubnetMappings lb.LoadBalancerSubnetMappingArrayInput // A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified Subnets ec2.SubnetArrayInput - // A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. Tags pulumi.StringMapInput // 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. XffHeaderProcessingMode pulumi.StringPtrInput diff --git a/sdk/go/awsx/lb/pulumiTypes.go b/sdk/go/awsx/lb/pulumiTypes.go index 58e543101..a5aa9332e 100644 --- a/sdk/go/awsx/lb/pulumiTypes.go +++ b/sdk/go/awsx/lb/pulumiTypes.go @@ -19,7 +19,10 @@ var _ = internal.GetEnvOrDefault // > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. // // ## Example Usage +// // ### Forward Action +// +// // ```go // package main // @@ -32,16 +35,16 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(443), // Protocol: pulumi.String("HTTPS"), // SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -61,8 +64,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// // // To a NLB: +// +// // ```go // package main // @@ -75,8 +81,8 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ -// LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), +// _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), // Port: pulumi.Int(443), // Protocol: pulumi.String("TLS"), // CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -84,7 +90,7 @@ var _ = internal.GetEnvOrDefault // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // Type: pulumi.String("forward"), -// TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), +// TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), // }, // }, // }) @@ -96,7 +102,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// +// // ### Redirect Action +// +// // ```go // package main // @@ -109,12 +119,12 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -136,7 +146,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// +// // ### Fixed-response Action +// +// // ```go // package main // @@ -149,12 +163,12 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -176,7 +190,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// +// // ### Authenticate-cognito Action +// +// // ```go // package main // @@ -190,11 +208,11 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } @@ -210,8 +228,8 @@ var _ = internal.GetEnvOrDefault // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -237,7 +255,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// +// // ### Authenticate-OIDC Action +// +// // ```go // package main // @@ -250,16 +272,16 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -288,7 +310,11 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// +// // ### Gateway Load Balancer Listener +// +// // ```go // package main // @@ -301,21 +327,23 @@ var _ = internal.GetEnvOrDefault // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ // LoadBalancerType: pulumi.String("gateway"), +// Name: pulumi.String("example"), // SubnetMappings: lb.LoadBalancerSubnetMappingArray{ // &lb.LoadBalancerSubnetMappingArgs{ -// SubnetId: pulumi.Any(aws_subnet.Example.Id), +// SubnetId: pulumi.Any(exampleAwsSubnet.Id), // }, // }, // }) // if err != nil { // return err // } -// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ +// Name: pulumi.String("example"), // Port: pulumi.Int(6081), // Protocol: pulumi.String("GENEVE"), -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcId: pulumi.Any(exampleAwsVpc.Id), // HealthCheck: &lb.TargetGroupHealthCheckArgs{ // Port: pulumi.String("80"), // Protocol: pulumi.String("HTTP"), @@ -324,14 +352,62 @@ var _ = internal.GetEnvOrDefault // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ -// LoadBalancerArn: exampleLoadBalancer.ID(), +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), +// DefaultActions: lb.ListenerDefaultActionArray{ +// &lb.ListenerDefaultActionArgs{ +// TargetGroupArn: exampleTargetGroup.ID(), +// Type: pulumi.String("forward"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// +// ### Mutual TLS Authentication +// +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ +// LoadBalancerType: pulumi.String("application"), +// }) +// if err != nil { +// return err +// } +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) +// if err != nil { +// return err +// } +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // TargetGroupArn: exampleTargetGroup.ID(), // Type: pulumi.String("forward"), // }, // }, +// MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ +// Mode: pulumi.String("verify"), +// TrustStoreArn: pulumi.String("..."), +// }, // }) // if err != nil { // return err @@ -341,15 +417,14 @@ var _ = internal.GetEnvOrDefault // } // // ``` +// // // ## Import // // Using `pulumi import`, import listeners using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 -// +// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 // ``` type Listener struct { // Name of the Application-Layer Protocol Negotiation (ALPN) policy. Can be set if `protocol` is `TLS`. Valid values are `HTTP1Only`, `HTTP2Only`, `HTTP2Optional`, `HTTP2Preferred`, and `None`. @@ -358,6 +433,8 @@ type Listener struct { CertificateArn *string `pulumi:"certificateArn"` // Configuration block for default actions. Detailed below. DefaultActions []lb.ListenerDefaultAction `pulumi:"defaultActions"` + // The mutual authentication configuration information. Detailed below. + MutualAuthentication *lb.ListenerMutualAuthentication `pulumi:"mutualAuthentication"` // Port on which the load balancer is listening. Not valid for Gateway Load Balancers. Port *int `pulumi:"port"` // 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. @@ -386,7 +463,10 @@ type ListenerInput interface { // > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. // // ## Example Usage +// // ### Forward Action +// +// // ```go // package main // @@ -399,16 +479,16 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(443), // Protocol: pulumi.String("HTTPS"), // SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -428,8 +508,11 @@ type ListenerInput interface { // } // // ``` +// // // To a NLB: +// +// // ```go // package main // @@ -442,8 +525,8 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ -// LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), +// _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), // Port: pulumi.Int(443), // Protocol: pulumi.String("TLS"), // CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -451,7 +534,7 @@ type ListenerInput interface { // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // Type: pulumi.String("forward"), -// TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), +// TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), // }, // }, // }) @@ -463,7 +546,11 @@ type ListenerInput interface { // } // // ``` +// +// // ### Redirect Action +// +// // ```go // package main // @@ -476,12 +563,12 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -503,7 +590,11 @@ type ListenerInput interface { // } // // ``` +// +// // ### Fixed-response Action +// +// // ```go // package main // @@ -516,12 +607,12 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -543,7 +634,11 @@ type ListenerInput interface { // } // // ``` +// +// // ### Authenticate-cognito Action +// +// // ```go // package main // @@ -557,11 +652,11 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } @@ -577,8 +672,8 @@ type ListenerInput interface { // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -604,7 +699,11 @@ type ListenerInput interface { // } // // ``` +// +// // ### Authenticate-OIDC Action +// +// // ```go // package main // @@ -617,16 +716,16 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -655,7 +754,11 @@ type ListenerInput interface { // } // // ``` +// +// // ### Gateway Load Balancer Listener +// +// // ```go // package main // @@ -668,21 +771,23 @@ type ListenerInput interface { // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ // LoadBalancerType: pulumi.String("gateway"), +// Name: pulumi.String("example"), // SubnetMappings: lb.LoadBalancerSubnetMappingArray{ // &lb.LoadBalancerSubnetMappingArgs{ -// SubnetId: pulumi.Any(aws_subnet.Example.Id), +// SubnetId: pulumi.Any(exampleAwsSubnet.Id), // }, // }, // }) // if err != nil { // return err // } -// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ +// Name: pulumi.String("example"), // Port: pulumi.Int(6081), // Protocol: pulumi.String("GENEVE"), -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcId: pulumi.Any(exampleAwsVpc.Id), // HealthCheck: &lb.TargetGroupHealthCheckArgs{ // Port: pulumi.String("80"), // Protocol: pulumi.String("HTTP"), @@ -691,14 +796,62 @@ type ListenerInput interface { // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ -// LoadBalancerArn: exampleLoadBalancer.ID(), +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), +// DefaultActions: lb.ListenerDefaultActionArray{ +// &lb.ListenerDefaultActionArgs{ +// TargetGroupArn: exampleTargetGroup.ID(), +// Type: pulumi.String("forward"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// +// ### Mutual TLS Authentication +// +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ +// LoadBalancerType: pulumi.String("application"), +// }) +// if err != nil { +// return err +// } +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) +// if err != nil { +// return err +// } +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // TargetGroupArn: exampleTargetGroup.ID(), // Type: pulumi.String("forward"), // }, // }, +// MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ +// Mode: pulumi.String("verify"), +// TrustStoreArn: pulumi.String("..."), +// }, // }) // if err != nil { // return err @@ -708,15 +861,14 @@ type ListenerInput interface { // } // // ``` +// // // ## Import // // Using `pulumi import`, import listeners using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 -// +// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 // ``` type ListenerArgs struct { // Name of the Application-Layer Protocol Negotiation (ALPN) policy. Can be set if `protocol` is `TLS`. Valid values are `HTTP1Only`, `HTTP2Only`, `HTTP2Optional`, `HTTP2Preferred`, and `None`. @@ -725,6 +877,8 @@ type ListenerArgs struct { CertificateArn pulumi.StringPtrInput `pulumi:"certificateArn"` // Configuration block for default actions. Detailed below. DefaultActions lb.ListenerDefaultActionArrayInput `pulumi:"defaultActions"` + // The mutual authentication configuration information. Detailed below. + MutualAuthentication lb.ListenerMutualAuthenticationPtrInput `pulumi:"mutualAuthentication"` // Port on which the load balancer is listening. Not valid for Gateway Load Balancers. Port pulumi.IntPtrInput `pulumi:"port"` // 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. @@ -820,7 +974,10 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. // // ## Example Usage +// // ### Forward Action +// +// // ```go // package main // @@ -833,16 +990,16 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(443), // Protocol: pulumi.String("HTTPS"), // SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -862,8 +1019,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// // // To a NLB: +// +// // ```go // package main // @@ -876,8 +1036,8 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ -// LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), +// _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), // Port: pulumi.Int(443), // Protocol: pulumi.String("TLS"), // CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -885,7 +1045,7 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // Type: pulumi.String("forward"), -// TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), +// TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), // }, // }, // }) @@ -897,7 +1057,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// +// // ### Redirect Action +// +// // ```go // package main // @@ -910,12 +1074,12 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -937,7 +1101,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// +// // ### Fixed-response Action +// +// // ```go // package main // @@ -950,12 +1118,12 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -977,7 +1145,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// +// // ### Authenticate-cognito Action +// +// // ```go // package main // @@ -991,11 +1163,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } @@ -1011,8 +1183,8 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -1038,7 +1210,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// +// // ### Authenticate-OIDC Action +// +// // ```go // package main // @@ -1051,16 +1227,16 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) +// frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) // if err != nil { // return err // } -// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) +// frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ -// LoadBalancerArn: frontEndLoadBalancer.Arn, +// _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ +// LoadBalancerArn: frontEnd.Arn, // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // DefaultActions: lb.ListenerDefaultActionArray{ @@ -1089,7 +1265,11 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// +// // ### Gateway Load Balancer Listener +// +// // ```go // package main // @@ -1102,21 +1282,23 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ // LoadBalancerType: pulumi.String("gateway"), +// Name: pulumi.String("example"), // SubnetMappings: lb.LoadBalancerSubnetMappingArray{ // &lb.LoadBalancerSubnetMappingArgs{ -// SubnetId: pulumi.Any(aws_subnet.Example.Id), +// SubnetId: pulumi.Any(exampleAwsSubnet.Id), // }, // }, // }) // if err != nil { // return err // } -// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ +// Name: pulumi.String("example"), // Port: pulumi.Int(6081), // Protocol: pulumi.String("GENEVE"), -// VpcId: pulumi.Any(aws_vpc.Example.Id), +// VpcId: pulumi.Any(exampleAwsVpc.Id), // HealthCheck: &lb.TargetGroupHealthCheckArgs{ // Port: pulumi.String("80"), // Protocol: pulumi.String("HTTP"), @@ -1125,14 +1307,62 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // if err != nil { // return err // } -// _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ -// LoadBalancerArn: exampleLoadBalancer.ID(), +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), +// DefaultActions: lb.ListenerDefaultActionArray{ +// &lb.ListenerDefaultActionArgs{ +// TargetGroupArn: exampleTargetGroup.ID(), +// Type: pulumi.String("forward"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// +// ### Mutual TLS Authentication +// +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ +// LoadBalancerType: pulumi.String("application"), +// }) +// if err != nil { +// return err +// } +// exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) +// if err != nil { +// return err +// } +// _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ +// LoadBalancerArn: example.ID(), // DefaultActions: lb.ListenerDefaultActionArray{ // &lb.ListenerDefaultActionArgs{ // TargetGroupArn: exampleTargetGroup.ID(), // Type: pulumi.String("forward"), // }, // }, +// MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ +// Mode: pulumi.String("verify"), +// TrustStoreArn: pulumi.String("..."), +// }, // }) // if err != nil { // return err @@ -1142,15 +1372,14 @@ func (i ListenerArray) ToListenerArrayOutputWithContext(ctx context.Context) Lis // } // // ``` +// // // ## Import // // Using `pulumi import`, import listeners using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 -// +// $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 // ``` type ListenerOutput struct{ *pulumi.OutputState } @@ -1191,6 +1420,11 @@ func (o ListenerOutput) DefaultActions() lb.ListenerDefaultActionArrayOutput { return o.ApplyT(func(v Listener) []lb.ListenerDefaultAction { return v.DefaultActions }).(lb.ListenerDefaultActionArrayOutput) } +// The mutual authentication configuration information. Detailed below. +func (o ListenerOutput) MutualAuthentication() lb.ListenerMutualAuthenticationPtrOutput { + return o.ApplyT(func(v Listener) *lb.ListenerMutualAuthentication { return v.MutualAuthentication }).(lb.ListenerMutualAuthenticationPtrOutput) +} + // Port on which the load balancer is listening. Not valid for Gateway Load Balancers. func (o ListenerOutput) Port() pulumi.IntPtrOutput { return o.ApplyT(func(v Listener) *int { return v.Port }).(pulumi.IntPtrOutput) @@ -1267,6 +1501,16 @@ func (o ListenerPtrOutput) DefaultActions() lb.ListenerDefaultActionArrayOutput }).(lb.ListenerDefaultActionArrayOutput) } +// The mutual authentication configuration information. Detailed below. +func (o ListenerPtrOutput) MutualAuthentication() lb.ListenerMutualAuthenticationPtrOutput { + return o.ApplyT(func(v *Listener) *lb.ListenerMutualAuthentication { + if v == nil { + return nil + } + return v.MutualAuthentication + }).(lb.ListenerMutualAuthenticationPtrOutput) +} + // Port on which the load balancer is listening. Not valid for Gateway Load Balancers. func (o ListenerPtrOutput) Port() pulumi.IntPtrOutput { return o.ApplyT(func(v *Listener) *int { @@ -1334,7 +1578,10 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. // // ## Example Usage +// // ### Instance Target Group +// +// // ```go // package main // @@ -1355,6 +1602,7 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // return err // } // _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // VpcId: main.ID(), @@ -1367,7 +1615,11 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // } // // ``` +// +// // ### IP Target Group +// +// // ```go // package main // @@ -1388,6 +1640,7 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // return err // } // _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // TargetType: pulumi.String("ip"), @@ -1401,7 +1654,11 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // } // // ``` +// +// // ### Lambda Target Group +// +// // ```go // package main // @@ -1415,6 +1672,7 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // TargetType: pulumi.String("lambda"), // }) // if err != nil { @@ -1425,7 +1683,11 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // } // // ``` +// +// // ### ALB Target Group +// +// // ```go // package main // @@ -1439,10 +1701,11 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-alb-tg"), // TargetType: pulumi.String("alb"), // Port: pulumi.Int(80), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // }) // if err != nil { // return err @@ -1452,7 +1715,11 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // } // // ``` +// +// // ### Target group with unhealthy connection termination disabled +// +// // ```go // package main // @@ -1466,9 +1733,10 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-nlb-tg"), // Port: pulumi.Int(25), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ // &lb.TargetGroupTargetHealthStateArgs{ // EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -1483,15 +1751,14 @@ func (o ListenerArrayOutput) Index(i pulumi.IntInput) ListenerOutput { // } // // ``` +// // // ## Import // // Using `pulumi import`, import Target Groups using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 -// +// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 // ``` type TargetGroup struct { // 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 `false`. @@ -1504,8 +1771,10 @@ type TargetGroup struct { IpAddressType *string `pulumi:"ipAddressType"` // Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when `target_type` is `lambda`. Default is `false`. LambdaMultiValueHeadersEnabled *bool `pulumi:"lambdaMultiValueHeadersEnabled"` - // Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + // Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. LoadBalancingAlgorithmType *string `pulumi:"loadBalancingAlgorithmType"` + // Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + LoadBalancingAnomalyMitigation *string `pulumi:"loadBalancingAnomalyMitigation"` // Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. LoadBalancingCrossZoneEnabled *string `pulumi:"loadBalancingCrossZoneEnabled"` // 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. @@ -1516,7 +1785,10 @@ type TargetGroup struct { Port *int `pulumi:"port"` // 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. PreserveClientIp *string `pulumi:"preserveClientIp"` - // Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + // Protocol to use for routing traffic to the targets. + // Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + // Required when `target_type` is `instance`, `ip`, or `alb`. + // Does not apply when `target_type` is `lambda`. Protocol *string `pulumi:"protocol"` // Only applicable when `protocol` 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 ProtocolVersion *string `pulumi:"protocolVersion"` @@ -1532,7 +1804,9 @@ type TargetGroup struct { TargetFailovers []lb.TargetGroupTargetFailover `pulumi:"targetFailovers"` // Target health state block. Only applicable for Network Load Balancer target groups when `protocol` is `TCP` or `TLS`. See target_health_state for more information. TargetHealthStates []lb.TargetGroupTargetHealthState `pulumi:"targetHealthStates"` - // Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + // Type of target that you must specify when registering targets with this target group. + // See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + // The default is `instance`. // // Note that you can't specify targets for a target group using both instance IDs and IP addresses. // @@ -1562,7 +1836,10 @@ type TargetGroupInput interface { // > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. // // ## Example Usage +// // ### Instance Target Group +// +// // ```go // package main // @@ -1583,6 +1860,7 @@ type TargetGroupInput interface { // return err // } // _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // VpcId: main.ID(), @@ -1595,7 +1873,11 @@ type TargetGroupInput interface { // } // // ``` +// +// // ### IP Target Group +// +// // ```go // package main // @@ -1616,6 +1898,7 @@ type TargetGroupInput interface { // return err // } // _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // TargetType: pulumi.String("ip"), @@ -1629,7 +1912,11 @@ type TargetGroupInput interface { // } // // ``` +// +// // ### Lambda Target Group +// +// // ```go // package main // @@ -1643,6 +1930,7 @@ type TargetGroupInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // TargetType: pulumi.String("lambda"), // }) // if err != nil { @@ -1653,7 +1941,11 @@ type TargetGroupInput interface { // } // // ``` +// +// // ### ALB Target Group +// +// // ```go // package main // @@ -1667,10 +1959,11 @@ type TargetGroupInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-alb-tg"), // TargetType: pulumi.String("alb"), // Port: pulumi.Int(80), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // }) // if err != nil { // return err @@ -1680,7 +1973,11 @@ type TargetGroupInput interface { // } // // ``` +// +// // ### Target group with unhealthy connection termination disabled +// +// // ```go // package main // @@ -1694,9 +1991,10 @@ type TargetGroupInput interface { // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-nlb-tg"), // Port: pulumi.Int(25), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ // &lb.TargetGroupTargetHealthStateArgs{ // EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -1711,15 +2009,14 @@ type TargetGroupInput interface { // } // // ``` +// // // ## Import // // Using `pulumi import`, import Target Groups using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 -// +// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 // ``` type TargetGroupArgs struct { // 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 `false`. @@ -1732,8 +2029,10 @@ type TargetGroupArgs struct { IpAddressType pulumi.StringPtrInput `pulumi:"ipAddressType"` // Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when `target_type` is `lambda`. Default is `false`. LambdaMultiValueHeadersEnabled pulumi.BoolPtrInput `pulumi:"lambdaMultiValueHeadersEnabled"` - // Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + // Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. LoadBalancingAlgorithmType pulumi.StringPtrInput `pulumi:"loadBalancingAlgorithmType"` + // Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + LoadBalancingAnomalyMitigation pulumi.StringPtrInput `pulumi:"loadBalancingAnomalyMitigation"` // Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. LoadBalancingCrossZoneEnabled pulumi.StringPtrInput `pulumi:"loadBalancingCrossZoneEnabled"` // 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. @@ -1744,7 +2043,10 @@ type TargetGroupArgs struct { Port pulumi.IntPtrInput `pulumi:"port"` // 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. PreserveClientIp pulumi.StringPtrInput `pulumi:"preserveClientIp"` - // Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + // Protocol to use for routing traffic to the targets. + // Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + // Required when `target_type` is `instance`, `ip`, or `alb`. + // Does not apply when `target_type` is `lambda`. Protocol pulumi.StringPtrInput `pulumi:"protocol"` // Only applicable when `protocol` 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 ProtocolVersion pulumi.StringPtrInput `pulumi:"protocolVersion"` @@ -1760,7 +2062,9 @@ type TargetGroupArgs struct { TargetFailovers lb.TargetGroupTargetFailoverArrayInput `pulumi:"targetFailovers"` // Target health state block. Only applicable for Network Load Balancer target groups when `protocol` is `TCP` or `TLS`. See target_health_state for more information. TargetHealthStates lb.TargetGroupTargetHealthStateArrayInput `pulumi:"targetHealthStates"` - // Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + // Type of target that you must specify when registering targets with this target group. + // See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + // The default is `instance`. // // Note that you can't specify targets for a target group using both instance IDs and IP addresses. // @@ -1832,7 +2136,10 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. // // ## Example Usage +// // ### Instance Target Group +// +// // ```go // package main // @@ -1853,6 +2160,7 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // return err // } // _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // VpcId: main.ID(), @@ -1865,7 +2173,11 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // } // // ``` +// +// // ### IP Target Group +// +// // ```go // package main // @@ -1886,6 +2198,7 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // return err // } // _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // Port: pulumi.Int(80), // Protocol: pulumi.String("HTTP"), // TargetType: pulumi.String("ip"), @@ -1899,7 +2212,11 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // } // // ``` +// +// // ### Lambda Target Group +// +// // ```go // package main // @@ -1913,6 +2230,7 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-tg"), // TargetType: pulumi.String("lambda"), // }) // if err != nil { @@ -1923,7 +2241,11 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // } // // ``` +// +// // ### ALB Target Group +// +// // ```go // package main // @@ -1937,10 +2259,11 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-alb-tg"), // TargetType: pulumi.String("alb"), // Port: pulumi.Int(80), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // }) // if err != nil { // return err @@ -1950,7 +2273,11 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // } // // ``` +// +// // ### Target group with unhealthy connection termination disabled +// +// // ```go // package main // @@ -1964,9 +2291,10 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ +// Name: pulumi.String("tf-example-lb-nlb-tg"), // Port: pulumi.Int(25), // Protocol: pulumi.String("TCP"), -// VpcId: pulumi.Any(aws_vpc.Main.Id), +// VpcId: pulumi.Any(main.Id), // TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ // &lb.TargetGroupTargetHealthStateArgs{ // EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -1981,15 +2309,14 @@ func (i *targetGroupPtrType) ToTargetGroupPtrOutputWithContext(ctx context.Conte // } // // ``` +// // // ## Import // // Using `pulumi import`, import Target Groups using their ARN. For example: // // ```sh -// -// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 -// +// $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 // ``` type TargetGroupOutput struct{ *pulumi.OutputState } @@ -2040,11 +2367,16 @@ func (o TargetGroupOutput) LambdaMultiValueHeadersEnabled() pulumi.BoolPtrOutput return o.ApplyT(func(v TargetGroup) *bool { return v.LambdaMultiValueHeadersEnabled }).(pulumi.BoolPtrOutput) } -// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. +// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. func (o TargetGroupOutput) LoadBalancingAlgorithmType() pulumi.StringPtrOutput { return o.ApplyT(func(v TargetGroup) *string { return v.LoadBalancingAlgorithmType }).(pulumi.StringPtrOutput) } +// Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. +func (o TargetGroupOutput) LoadBalancingAnomalyMitigation() pulumi.StringPtrOutput { + return o.ApplyT(func(v TargetGroup) *string { return v.LoadBalancingAnomalyMitigation }).(pulumi.StringPtrOutput) +} + // Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. func (o TargetGroupOutput) LoadBalancingCrossZoneEnabled() pulumi.StringPtrOutput { return o.ApplyT(func(v TargetGroup) *string { return v.LoadBalancingCrossZoneEnabled }).(pulumi.StringPtrOutput) @@ -2070,7 +2402,10 @@ func (o TargetGroupOutput) PreserveClientIp() pulumi.StringPtrOutput { return o.ApplyT(func(v TargetGroup) *string { return v.PreserveClientIp }).(pulumi.StringPtrOutput) } -// Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. +// Protocol to use for routing traffic to the targets. +// Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. +// Required when `target_type` is `instance`, `ip`, or `alb`. +// Does not apply when `target_type` is `lambda`. func (o TargetGroupOutput) Protocol() pulumi.StringPtrOutput { return o.ApplyT(func(v TargetGroup) *string { return v.Protocol }).(pulumi.StringPtrOutput) } @@ -2110,7 +2445,9 @@ func (o TargetGroupOutput) TargetHealthStates() lb.TargetGroupTargetHealthStateA return o.ApplyT(func(v TargetGroup) []lb.TargetGroupTargetHealthState { return v.TargetHealthStates }).(lb.TargetGroupTargetHealthStateArrayOutput) } -// Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. +// Type of target that you must specify when registering targets with this target group. +// See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. +// The default is `instance`. // // Note that you can't specify targets for a target group using both instance IDs and IP addresses. // @@ -2202,7 +2539,7 @@ func (o TargetGroupPtrOutput) LambdaMultiValueHeadersEnabled() pulumi.BoolPtrOut }).(pulumi.BoolPtrOutput) } -// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. +// Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. func (o TargetGroupPtrOutput) LoadBalancingAlgorithmType() pulumi.StringPtrOutput { return o.ApplyT(func(v *TargetGroup) *string { if v == nil { @@ -2212,6 +2549,16 @@ func (o TargetGroupPtrOutput) LoadBalancingAlgorithmType() pulumi.StringPtrOutpu }).(pulumi.StringPtrOutput) } +// Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. +func (o TargetGroupPtrOutput) LoadBalancingAnomalyMitigation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TargetGroup) *string { + if v == nil { + return nil + } + return v.LoadBalancingAnomalyMitigation + }).(pulumi.StringPtrOutput) +} + // Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. func (o TargetGroupPtrOutput) LoadBalancingCrossZoneEnabled() pulumi.StringPtrOutput { return o.ApplyT(func(v *TargetGroup) *string { @@ -2262,7 +2609,10 @@ func (o TargetGroupPtrOutput) PreserveClientIp() pulumi.StringPtrOutput { }).(pulumi.StringPtrOutput) } -// Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. +// Protocol to use for routing traffic to the targets. +// Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. +// Required when `target_type` is `instance`, `ip`, or `alb`. +// Does not apply when `target_type` is `lambda`. func (o TargetGroupPtrOutput) Protocol() pulumi.StringPtrOutput { return o.ApplyT(func(v *TargetGroup) *string { if v == nil { @@ -2342,7 +2692,9 @@ func (o TargetGroupPtrOutput) TargetHealthStates() lb.TargetGroupTargetHealthSta }).(lb.TargetGroupTargetHealthStateArrayOutput) } -// Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. +// Type of target that you must specify when registering targets with this target group. +// See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. +// The default is `instance`. // // Note that you can't specify targets for a target group using both instance IDs and IP addresses. // diff --git a/sdk/java/build.gradle b/sdk/java/build.gradle index 55512dd3a..ccdc9fb9e 100644 --- a/sdk/java/build.gradle +++ b/sdk/java/build.gradle @@ -43,7 +43,7 @@ repositories { dependencies { implementation("com.google.code.findbugs:jsr305:3.0.2") implementation("com.google.code.gson:gson:2.8.9") - implementation("com.pulumi:aws:6.9.0") + implementation("com.pulumi:aws:6.32.0") implementation("com.pulumi:docker:4.5.1") implementation("com.pulumi:pulumi:0.9.7") } diff --git a/sdk/java/src/main/java/com/pulumi/awsx/awsx/inputs/LogGroupArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/awsx/inputs/LogGroupArgs.java index c78a2cf4f..7c535852e 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/awsx/inputs/LogGroupArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/awsx/inputs/LogGroupArgs.java @@ -41,6 +41,21 @@ public Optional> kmsKeyId() { return Optional.ofNullable(this.kmsKeyId); } + /** + * Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + * + */ + @Import(name="logGroupClass") + private @Nullable Output logGroupClass; + + /** + * @return Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + * + */ + public Optional> logGroupClass() { + return Optional.ofNullable(this.logGroupClass); + } + /** * The name of the log group. If omitted, this provider will assign a random, unique name. * @@ -124,6 +139,7 @@ private LogGroupArgs() {} private LogGroupArgs(LogGroupArgs $) { this.kmsKeyId = $.kmsKeyId; + this.logGroupClass = $.logGroupClass; this.name = $.name; this.namePrefix = $.namePrefix; this.retentionInDays = $.retentionInDays; @@ -174,6 +190,27 @@ public Builder kmsKeyId(String kmsKeyId) { return kmsKeyId(Output.of(kmsKeyId)); } + /** + * @param logGroupClass Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + * + * @return builder + * + */ + public Builder logGroupClass(@Nullable Output logGroupClass) { + $.logGroupClass = logGroupClass; + return this; + } + + /** + * @param logGroupClass Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + * + * @return builder + * + */ + public Builder logGroupClass(String logGroupClass) { + return logGroupClass(Output.of(logGroupClass)); + } + /** * @param name The name of the log group. If omitted, this provider will assign a random, unique name. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ec2/inputs/VpcEndpointSpecArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ec2/inputs/VpcEndpointSpecArgs.java index 97421fae2..2d79e9cab 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ec2/inputs/VpcEndpointSpecArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ec2/inputs/VpcEndpointSpecArgs.java @@ -27,7 +27,10 @@ * Doing so will cause a conflict of associations and will overwrite the association. * * ## Example Usage + * * ### Basic + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -50,14 +53,18 @@ * * public static void stack(Context ctx) { * var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.s3") * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Basic w/ Tags + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -80,7 +87,7 @@ * * public static void stack(Context ctx) { * var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.s3") * .tags(Map.of("Environment", "test")) * .build()); @@ -88,7 +95,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Interface Endpoint Type + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -111,17 +122,21 @@ * * public static void stack(Context ctx) { * var ec2 = new VpcEndpoint("ec2", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.ec2") * .vpcEndpointType("Interface") - * .securityGroupIds(aws_security_group.sg1().id()) + * .securityGroupIds(sg1.id()) * .privateDnsEnabled(true) * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Gateway Load Balancer Endpoint Type + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -149,29 +164,30 @@ * public static void stack(Context ctx) { * final var current = AwsFunctions.getCallerIdentity(); * - * var exampleVpcEndpointService = new VpcEndpointService("exampleVpcEndpointService", VpcEndpointServiceArgs.builder() + * var example = new VpcEndpointService("example", VpcEndpointServiceArgs.builder() * .acceptanceRequired(false) * .allowedPrincipals(current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.arn())) - * .gatewayLoadBalancerArns(aws_lb.example().arn()) + * .gatewayLoadBalancerArns(exampleAwsLb.arn()) * .build()); * * var exampleVpcEndpoint = new VpcEndpoint("exampleVpcEndpoint", VpcEndpointArgs.builder() - * .serviceName(exampleVpcEndpointService.serviceName()) - * .subnetIds(aws_subnet.example().id()) - * .vpcEndpointType(exampleVpcEndpointService.serviceType()) - * .vpcId(aws_vpc.example().id()) + * .serviceName(example.serviceName()) + * .subnetIds(exampleAwsSubnet.id()) + * .vpcEndpointType(example.serviceType()) + * .vpcId(exampleAwsVpc.id()) * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> * * ## Import * * Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: * * ```sh - * $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 + * $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 * ``` * */ diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2ServiceArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2ServiceArgs.java index 589b5c372..22aeb4224 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2ServiceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2ServiceArgs.java @@ -424,14 +424,14 @@ public Optional taskDefinitionArgs() { } /** - * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * */ @Import(name="triggers") private @Nullable Output> triggers; /** - * @return Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @return Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * */ public Optional>> triggers() { @@ -1059,7 +1059,7 @@ public Builder taskDefinitionArgs(@Nullable EC2ServiceTaskDefinitionArgs taskDef } /** - * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * * @return builder * @@ -1070,7 +1070,7 @@ public Builder triggers(@Nullable Output> triggers) { } /** - * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2TaskDefinitionArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2TaskDefinitionArgs.java index d4a2fddc6..b8b28e83c 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2TaskDefinitionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/EC2TaskDefinitionArgs.java @@ -315,6 +315,21 @@ public Optional taskRole() { return Optional.ofNullable(this.taskRole); } + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + @Import(name="trackLatest") + private @Nullable Output trackLatest; + + /** + * @return Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + public Optional> trackLatest() { + return Optional.ofNullable(this.trackLatest); + } + /** * Configuration block for volumes that containers in your task may use. Detailed below. * @@ -351,6 +366,7 @@ private EC2TaskDefinitionArgs(EC2TaskDefinitionArgs $) { this.skipDestroy = $.skipDestroy; this.tags = $.tags; this.taskRole = $.taskRole; + this.trackLatest = $.trackLatest; this.volumes = $.volumes; } @@ -730,6 +746,27 @@ public Builder taskRole(@Nullable DefaultRoleWithPolicyArgs taskRole) { return this; } + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(@Nullable Output trackLatest) { + $.trackLatest = trackLatest; + return this; + } + + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(Boolean trackLatest) { + return trackLatest(Output.of(trackLatest)); + } + /** * @param volumes Configuration block for volumes that containers in your task may use. Detailed below. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateServiceArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateServiceArgs.java index 997ae6cf6..465c966cc 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateServiceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateServiceArgs.java @@ -423,14 +423,14 @@ public Optional taskDefinitionArgs() { } /** - * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * */ @Import(name="triggers") private @Nullable Output> triggers; /** - * @return Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @return Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * */ public Optional>> triggers() { @@ -1048,7 +1048,7 @@ public Builder taskDefinitionArgs(@Nullable FargateServiceTaskDefinitionArgs tas } /** - * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * * @return builder * @@ -1059,7 +1059,7 @@ public Builder triggers(@Nullable Output> triggers) { } /** - * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * @param triggers Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateTaskDefinitionArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateTaskDefinitionArgs.java index ca052c95a..201b5aa88 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateTaskDefinitionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/FargateTaskDefinitionArgs.java @@ -300,6 +300,21 @@ public Optional taskRole() { return Optional.ofNullable(this.taskRole); } + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + @Import(name="trackLatest") + private @Nullable Output trackLatest; + + /** + * @return Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + public Optional> trackLatest() { + return Optional.ofNullable(this.trackLatest); + } + /** * Configuration block for volumes that containers in your task may use. Detailed below. * @@ -335,6 +350,7 @@ private FargateTaskDefinitionArgs(FargateTaskDefinitionArgs $) { this.skipDestroy = $.skipDestroy; this.tags = $.tags; this.taskRole = $.taskRole; + this.trackLatest = $.trackLatest; this.volumes = $.volumes; } @@ -693,6 +709,27 @@ public Builder taskRole(@Nullable DefaultRoleWithPolicyArgs taskRole) { return this; } + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(@Nullable Output trackLatest) { + $.trackLatest = trackLatest; + return this; + } + + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(Boolean trackLatest) { + return trackLatest(Output.of(trackLatest)); + } + /** * @param volumes Configuration block for volumes that containers in your task may use. Detailed below. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/EC2ServiceTaskDefinitionArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/EC2ServiceTaskDefinitionArgs.java index b12016002..95d6cd210 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/EC2ServiceTaskDefinitionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/EC2ServiceTaskDefinitionArgs.java @@ -321,6 +321,21 @@ public Optional taskRole() { return Optional.ofNullable(this.taskRole); } + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + @Import(name="trackLatest") + private @Nullable Output trackLatest; + + /** + * @return Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + public Optional> trackLatest() { + return Optional.ofNullable(this.trackLatest); + } + /** * Configuration block for volumes that containers in your task may use. Detailed below. * @@ -357,6 +372,7 @@ private EC2ServiceTaskDefinitionArgs(EC2ServiceTaskDefinitionArgs $) { this.skipDestroy = $.skipDestroy; this.tags = $.tags; this.taskRole = $.taskRole; + this.trackLatest = $.trackLatest; this.volumes = $.volumes; } @@ -736,6 +752,27 @@ public Builder taskRole(@Nullable DefaultRoleWithPolicyArgs taskRole) { return this; } + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(@Nullable Output trackLatest) { + $.trackLatest = trackLatest; + return this; + } + + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(Boolean trackLatest) { + return trackLatest(Output.of(trackLatest)); + } + /** * @param volumes Configuration block for volumes that containers in your task may use. Detailed below. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/FargateServiceTaskDefinitionArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/FargateServiceTaskDefinitionArgs.java index e3c41dba2..7dec122cb 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/FargateServiceTaskDefinitionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/ecs/inputs/FargateServiceTaskDefinitionArgs.java @@ -306,6 +306,21 @@ public Optional taskRole() { return Optional.ofNullable(this.taskRole); } + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + @Import(name="trackLatest") + private @Nullable Output trackLatest; + + /** + * @return Whether should track latest task definition or the one created with the resource. Default is `false`. + * + */ + public Optional> trackLatest() { + return Optional.ofNullable(this.trackLatest); + } + /** * Configuration block for volumes that containers in your task may use. Detailed below. * @@ -341,6 +356,7 @@ private FargateServiceTaskDefinitionArgs(FargateServiceTaskDefinitionArgs $) { this.skipDestroy = $.skipDestroy; this.tags = $.tags; this.taskRole = $.taskRole; + this.trackLatest = $.trackLatest; this.volumes = $.volumes; } @@ -699,6 +715,27 @@ public Builder taskRole(@Nullable DefaultRoleWithPolicyArgs taskRole) { return this; } + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(@Nullable Output trackLatest) { + $.trackLatest = trackLatest; + return this; + } + + /** + * @param trackLatest Whether should track latest task definition or the one created with the resource. Default is `false`. + * + * @return builder + * + */ + public Builder trackLatest(Boolean trackLatest) { + return trackLatest(Output.of(trackLatest)); + } + /** * @param volumes Configuration block for volumes that containers in your task may use. Detailed below. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/lb/ApplicationLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/lb/ApplicationLoadBalancerArgs.java index 6363a2d8a..5d5a607c6 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/lb/ApplicationLoadBalancerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/lb/ApplicationLoadBalancerArgs.java @@ -5,6 +5,7 @@ import com.pulumi.aws.ec2.Subnet; import com.pulumi.aws.lb.inputs.LoadBalancerAccessLogsArgs; +import com.pulumi.aws.lb.inputs.LoadBalancerConnectionLogsArgs; import com.pulumi.aws.lb.inputs.LoadBalancerSubnetMappingArgs; import com.pulumi.awsx.awsx.inputs.DefaultSecurityGroupArgs; import com.pulumi.awsx.lb.inputs.ListenerArgs; @@ -26,14 +27,14 @@ public final class ApplicationLoadBalancerArgs extends com.pulumi.resources.Reso public static final ApplicationLoadBalancerArgs Empty = new ApplicationLoadBalancerArgs(); /** - * An Access Logs block. Access Logs documented below. + * Access Logs block. See below. * */ @Import(name="accessLogs") private @Nullable Output accessLogs; /** - * @return An Access Logs block. Access Logs documented below. + * @return Access Logs block. See below. * */ public Optional> accessLogs() { @@ -41,14 +42,44 @@ public Optional> accessLogs() { } /** - * The ID of the customer owned ipv4 pool to use for this load balancer. + * Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + */ + @Import(name="clientKeepAlive") + private @Nullable Output clientKeepAlive; + + /** + * @return Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + */ + public Optional> clientKeepAlive() { + return Optional.ofNullable(this.clientKeepAlive); + } + + /** + * Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + */ + @Import(name="connectionLogs") + private @Nullable Output connectionLogs; + + /** + * @return Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + */ + public Optional> connectionLogs() { + return Optional.ofNullable(this.connectionLogs); + } + + /** + * ID of the customer owned ipv4 pool to use for this load balancer. * */ @Import(name="customerOwnedIpv4Pool") private @Nullable Output customerOwnedIpv4Pool; /** - * @return The ID of the customer owned ipv4 pool to use for this load balancer. + * @return ID of the customer owned ipv4 pool to use for this load balancer. * */ public Optional> customerOwnedIpv4Pool() { @@ -101,14 +132,14 @@ public Optional> defaultTargetGroupPort() { } /** - * Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * */ @Import(name="desyncMitigationMode") private @Nullable Output desyncMitigationMode; /** - * @return Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @return How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * */ public Optional> desyncMitigationMode() { @@ -116,14 +147,14 @@ public Optional> desyncMitigationMode() { } /** - * Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * */ @Import(name="dnsRecordClientRoutingPolicy") private @Nullable Output dnsRecordClientRoutingPolicy; /** - * @return Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @return How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * */ public Optional> dnsRecordClientRoutingPolicy() { @@ -131,14 +162,14 @@ public Optional> dnsRecordClientRoutingPolicy() { } /** - * Indicates 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 `application`. + * 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 `application`. * */ @Import(name="dropInvalidHeaderFields") private @Nullable Output dropInvalidHeaderFields; /** - * @return Indicates 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 `application`. + * @return 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 `application`. * */ public Optional> dropInvalidHeaderFields() { @@ -161,14 +192,14 @@ public Optional> enableDeletionProtection() { } /** - * Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + * Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. * */ @Import(name="enableHttp2") private @Nullable Output enableHttp2; /** - * @return Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + * @return Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. * */ public Optional> enableHttp2() { @@ -176,14 +207,14 @@ public Optional> enableHttp2() { } /** - * Indicates 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 `application`. Defaults to `false` + * 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 `application`. Defaults to `false` * */ @Import(name="enableTlsVersionAndCipherSuiteHeaders") private @Nullable Output enableTlsVersionAndCipherSuiteHeaders; /** - * @return Indicates 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 `application`. Defaults to `false` + * @return 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 `application`. Defaults to `false` * */ public Optional> enableTlsVersionAndCipherSuiteHeaders() { @@ -191,14 +222,14 @@ public Optional> enableTlsVersionAndCipherSuiteHeaders() { } /** - * Indicates 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 `false`. + * 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 `false`. * */ @Import(name="enableWafFailOpen") private @Nullable Output enableWafFailOpen; /** - * @return Indicates 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 `false`. + * @return 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 `false`. * */ public Optional> enableWafFailOpen() { @@ -206,14 +237,14 @@ public Optional> enableWafFailOpen() { } /** - * Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * */ @Import(name="enableXffClientPort") private @Nullable Output enableXffClientPort; /** - * @return Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @return Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * */ public Optional> enableXffClientPort() { @@ -221,14 +252,29 @@ public Optional> enableXffClientPort() { } /** - * The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + */ + @Import(name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic") + private @Nullable Output enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; + + /** + * @return Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + */ + public Optional> enforceSecurityGroupInboundRulesOnPrivateLinkTraffic() { + return Optional.ofNullable(this.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic); + } + + /** + * Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * */ @Import(name="idleTimeout") private @Nullable Output idleTimeout; /** - * @return The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @return Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * */ public Optional> idleTimeout() { @@ -251,14 +297,14 @@ public Optional> internal() { } /** - * The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * */ @Import(name="ipAddressType") private @Nullable Output ipAddressType; /** - * @return The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @return Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * */ public Optional> ipAddressType() { @@ -296,18 +342,14 @@ public Optional> listeners() { } /** - * The 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`. + * 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`. * */ @Import(name="name") private @Nullable Output name; /** - * @return The 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`. + * @return 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`. * */ public Optional> name() { @@ -330,14 +372,14 @@ public Optional> namePrefix() { } /** - * Indicates 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 `false`. + * 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 `false`. * */ @Import(name="preserveHostHeader") private @Nullable Output preserveHostHeader; /** - * @return Indicates 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 `false`. + * @return 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 `false`. * */ public Optional> preserveHostHeader() { @@ -345,14 +387,14 @@ public Optional> preserveHostHeader() { } /** - * A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. * */ @Import(name="securityGroups") private @Nullable Output> securityGroups; /** - * @return A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * @return List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. * */ public Optional>> securityGroups() { @@ -360,18 +402,14 @@ public Optional>> securityGroups() { } /** - * A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * */ @Import(name="subnetIds") private @Nullable Output> subnetIds; /** - * @return A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @return List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * */ public Optional>> subnetIds() { @@ -379,14 +417,14 @@ public Optional>> subnetIds() { } /** - * A subnet mapping block as documented below. + * Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * */ @Import(name="subnetMappings") private @Nullable Output> subnetMappings; /** - * @return A subnet mapping block as documented below. + * @return Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * */ public Optional>> subnetMappings() { @@ -409,14 +447,14 @@ public Optional>> subnets() { } /** - * A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * */ @Import(name="tags") private @Nullable Output> tags; /** - * @return A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @return Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * */ public Optional>> tags() { @@ -442,6 +480,8 @@ private ApplicationLoadBalancerArgs() {} private ApplicationLoadBalancerArgs(ApplicationLoadBalancerArgs $) { this.accessLogs = $.accessLogs; + this.clientKeepAlive = $.clientKeepAlive; + this.connectionLogs = $.connectionLogs; this.customerOwnedIpv4Pool = $.customerOwnedIpv4Pool; this.defaultSecurityGroup = $.defaultSecurityGroup; this.defaultTargetGroup = $.defaultTargetGroup; @@ -454,6 +494,7 @@ private ApplicationLoadBalancerArgs(ApplicationLoadBalancerArgs $) { this.enableTlsVersionAndCipherSuiteHeaders = $.enableTlsVersionAndCipherSuiteHeaders; this.enableWafFailOpen = $.enableWafFailOpen; this.enableXffClientPort = $.enableXffClientPort; + this.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = $.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; this.idleTimeout = $.idleTimeout; this.internal = $.internal; this.ipAddressType = $.ipAddressType; @@ -489,7 +530,7 @@ public Builder(ApplicationLoadBalancerArgs defaults) { } /** - * @param accessLogs An Access Logs block. Access Logs documented below. + * @param accessLogs Access Logs block. See below. * * @return builder * @@ -500,7 +541,7 @@ public Builder accessLogs(@Nullable Output accessLog } /** - * @param accessLogs An Access Logs block. Access Logs documented below. + * @param accessLogs Access Logs block. See below. * * @return builder * @@ -510,7 +551,49 @@ public Builder accessLogs(LoadBalancerAccessLogsArgs accessLogs) { } /** - * @param customerOwnedIpv4Pool The ID of the customer owned ipv4 pool to use for this load balancer. + * @param clientKeepAlive Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + * @return builder + * + */ + public Builder clientKeepAlive(@Nullable Output clientKeepAlive) { + $.clientKeepAlive = clientKeepAlive; + return this; + } + + /** + * @param clientKeepAlive Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + * @return builder + * + */ + public Builder clientKeepAlive(Integer clientKeepAlive) { + return clientKeepAlive(Output.of(clientKeepAlive)); + } + + /** + * @param connectionLogs Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + * @return builder + * + */ + public Builder connectionLogs(@Nullable Output connectionLogs) { + $.connectionLogs = connectionLogs; + return this; + } + + /** + * @param connectionLogs Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + * @return builder + * + */ + public Builder connectionLogs(LoadBalancerConnectionLogsArgs connectionLogs) { + return connectionLogs(Output.of(connectionLogs)); + } + + /** + * @param customerOwnedIpv4Pool ID of the customer owned ipv4 pool to use for this load balancer. * * @return builder * @@ -521,7 +604,7 @@ public Builder customerOwnedIpv4Pool(@Nullable Output customerOwnedIpv4P } /** - * @param customerOwnedIpv4Pool The ID of the customer owned ipv4 pool to use for this load balancer. + * @param customerOwnedIpv4Pool ID of the customer owned ipv4 pool to use for this load balancer. * * @return builder * @@ -574,7 +657,7 @@ public Builder defaultTargetGroupPort(Integer defaultTargetGroupPort) { } /** - * @param desyncMitigationMode Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @param desyncMitigationMode How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * * @return builder * @@ -585,7 +668,7 @@ public Builder desyncMitigationMode(@Nullable Output desyncMitigationMod } /** - * @param desyncMitigationMode Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @param desyncMitigationMode How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * * @return builder * @@ -595,7 +678,7 @@ public Builder desyncMitigationMode(String desyncMitigationMode) { } /** - * @param dnsRecordClientRoutingPolicy Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @param dnsRecordClientRoutingPolicy How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * * @return builder * @@ -606,7 +689,7 @@ public Builder dnsRecordClientRoutingPolicy(@Nullable Output dnsRecordCl } /** - * @param dnsRecordClientRoutingPolicy Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @param dnsRecordClientRoutingPolicy How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * * @return builder * @@ -616,7 +699,7 @@ public Builder dnsRecordClientRoutingPolicy(String dnsRecordClientRoutingPolicy) } /** - * @param dropInvalidHeaderFields Indicates 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 `application`. + * @param dropInvalidHeaderFields 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 `application`. * * @return builder * @@ -627,7 +710,7 @@ public Builder dropInvalidHeaderFields(@Nullable Output dropInvalidHead } /** - * @param dropInvalidHeaderFields Indicates 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 `application`. + * @param dropInvalidHeaderFields 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 `application`. * * @return builder * @@ -658,7 +741,7 @@ public Builder enableDeletionProtection(Boolean enableDeletionProtection) { } /** - * @param enableHttp2 Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + * @param enableHttp2 Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. * * @return builder * @@ -669,7 +752,7 @@ public Builder enableHttp2(@Nullable Output enableHttp2) { } /** - * @param enableHttp2 Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + * @param enableHttp2 Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. * * @return builder * @@ -679,7 +762,7 @@ public Builder enableHttp2(Boolean enableHttp2) { } /** - * @param enableTlsVersionAndCipherSuiteHeaders Indicates 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 `application`. Defaults to `false` + * @param enableTlsVersionAndCipherSuiteHeaders 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 `application`. Defaults to `false` * * @return builder * @@ -690,7 +773,7 @@ public Builder enableTlsVersionAndCipherSuiteHeaders(@Nullable Output e } /** - * @param enableTlsVersionAndCipherSuiteHeaders Indicates 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 `application`. Defaults to `false` + * @param enableTlsVersionAndCipherSuiteHeaders 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 `application`. Defaults to `false` * * @return builder * @@ -700,7 +783,7 @@ public Builder enableTlsVersionAndCipherSuiteHeaders(Boolean enableTlsVersionAnd } /** - * @param enableWafFailOpen Indicates 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 `false`. + * @param enableWafFailOpen 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 `false`. * * @return builder * @@ -711,7 +794,7 @@ public Builder enableWafFailOpen(@Nullable Output enableWafFailOpen) { } /** - * @param enableWafFailOpen Indicates 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 `false`. + * @param enableWafFailOpen 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 `false`. * * @return builder * @@ -721,7 +804,7 @@ public Builder enableWafFailOpen(Boolean enableWafFailOpen) { } /** - * @param enableXffClientPort Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @param enableXffClientPort Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * * @return builder * @@ -732,7 +815,7 @@ public Builder enableXffClientPort(@Nullable Output enableXffClientPort } /** - * @param enableXffClientPort Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @param enableXffClientPort Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * * @return builder * @@ -742,7 +825,28 @@ public Builder enableXffClientPort(Boolean enableXffClientPort) { } /** - * @param idleTimeout The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @param enforceSecurityGroupInboundRulesOnPrivateLinkTraffic Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + * @return builder + * + */ + public Builder enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(@Nullable Output enforceSecurityGroupInboundRulesOnPrivateLinkTraffic) { + $.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; + return this; + } + + /** + * @param enforceSecurityGroupInboundRulesOnPrivateLinkTraffic Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + * @return builder + * + */ + public Builder enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(String enforceSecurityGroupInboundRulesOnPrivateLinkTraffic) { + return enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(Output.of(enforceSecurityGroupInboundRulesOnPrivateLinkTraffic)); + } + + /** + * @param idleTimeout Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * * @return builder * @@ -753,7 +857,7 @@ public Builder idleTimeout(@Nullable Output idleTimeout) { } /** - * @param idleTimeout The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @param idleTimeout Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * * @return builder * @@ -784,7 +888,7 @@ public Builder internal(Boolean internal) { } /** - * @param ipAddressType The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @param ipAddressType Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * * @return builder * @@ -795,7 +899,7 @@ public Builder ipAddressType(@Nullable Output ipAddressType) { } /** - * @param ipAddressType The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @param ipAddressType Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * * @return builder * @@ -837,9 +941,7 @@ public Builder listeners(ListenerArgs... listeners) { } /** - * @param name The 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`. + * @param name 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`. * * @return builder * @@ -850,9 +952,7 @@ public Builder name(@Nullable Output name) { } /** - * @param name The 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`. + * @param name 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`. * * @return builder * @@ -883,7 +983,7 @@ public Builder namePrefix(String namePrefix) { } /** - * @param preserveHostHeader Indicates 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 `false`. + * @param preserveHostHeader 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 `false`. * * @return builder * @@ -894,7 +994,7 @@ public Builder preserveHostHeader(@Nullable Output preserveHostHeader) } /** - * @param preserveHostHeader Indicates 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 `false`. + * @param preserveHostHeader 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 `false`. * * @return builder * @@ -904,7 +1004,7 @@ public Builder preserveHostHeader(Boolean preserveHostHeader) { } /** - * @param securityGroups A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * @param securityGroups List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. * * @return builder * @@ -915,7 +1015,7 @@ public Builder securityGroups(@Nullable Output> securityGroups) { } /** - * @param securityGroups A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * @param securityGroups List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. * * @return builder * @@ -925,7 +1025,7 @@ public Builder securityGroups(List securityGroups) { } /** - * @param securityGroups A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * @param securityGroups List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. * * @return builder * @@ -935,9 +1035,7 @@ public Builder securityGroups(String... securityGroups) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -948,9 +1046,7 @@ public Builder subnetIds(@Nullable Output> subnetIds) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -960,9 +1056,7 @@ public Builder subnetIds(List subnetIds) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -972,7 +1066,7 @@ public Builder subnetIds(String... subnetIds) { } /** - * @param subnetMappings A subnet mapping block as documented below. + * @param subnetMappings Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * * @return builder * @@ -983,7 +1077,7 @@ public Builder subnetMappings(@Nullable Output subnetMappings } /** - * @param subnetMappings A subnet mapping block as documented below. + * @param subnetMappings Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * * @return builder * @@ -1034,7 +1128,7 @@ public Builder subnets(Subnet... subnets) { } /** - * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * * @return builder * @@ -1045,7 +1139,7 @@ public Builder tags(@Nullable Output> tags) { } /** - * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/lb/NetworkLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/lb/NetworkLoadBalancerArgs.java index 0de90b326..96b94d941 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/lb/NetworkLoadBalancerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/lb/NetworkLoadBalancerArgs.java @@ -5,6 +5,7 @@ import com.pulumi.aws.ec2.Subnet; import com.pulumi.aws.lb.inputs.LoadBalancerAccessLogsArgs; +import com.pulumi.aws.lb.inputs.LoadBalancerConnectionLogsArgs; import com.pulumi.aws.lb.inputs.LoadBalancerSubnetMappingArgs; import com.pulumi.awsx.lb.inputs.ListenerArgs; import com.pulumi.awsx.lb.inputs.TargetGroupArgs; @@ -25,14 +26,14 @@ public final class NetworkLoadBalancerArgs extends com.pulumi.resources.Resource public static final NetworkLoadBalancerArgs Empty = new NetworkLoadBalancerArgs(); /** - * An Access Logs block. Access Logs documented below. + * Access Logs block. See below. * */ @Import(name="accessLogs") private @Nullable Output accessLogs; /** - * @return An Access Logs block. Access Logs documented below. + * @return Access Logs block. See below. * */ public Optional> accessLogs() { @@ -40,14 +41,44 @@ public Optional> accessLogs() { } /** - * The ID of the customer owned ipv4 pool to use for this load balancer. + * Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + */ + @Import(name="clientKeepAlive") + private @Nullable Output clientKeepAlive; + + /** + * @return Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + */ + public Optional> clientKeepAlive() { + return Optional.ofNullable(this.clientKeepAlive); + } + + /** + * Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + */ + @Import(name="connectionLogs") + private @Nullable Output connectionLogs; + + /** + * @return Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + */ + public Optional> connectionLogs() { + return Optional.ofNullable(this.connectionLogs); + } + + /** + * ID of the customer owned ipv4 pool to use for this load balancer. * */ @Import(name="customerOwnedIpv4Pool") private @Nullable Output customerOwnedIpv4Pool; /** - * @return The ID of the customer owned ipv4 pool to use for this load balancer. + * @return ID of the customer owned ipv4 pool to use for this load balancer. * */ public Optional> customerOwnedIpv4Pool() { @@ -85,14 +116,14 @@ public Optional> defaultTargetGroupPort() { } /** - * Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * */ @Import(name="desyncMitigationMode") private @Nullable Output desyncMitigationMode; /** - * @return Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @return How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * */ public Optional> desyncMitigationMode() { @@ -100,14 +131,14 @@ public Optional> desyncMitigationMode() { } /** - * Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * */ @Import(name="dnsRecordClientRoutingPolicy") private @Nullable Output dnsRecordClientRoutingPolicy; /** - * @return Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @return How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * */ public Optional> dnsRecordClientRoutingPolicy() { @@ -115,14 +146,14 @@ public Optional> dnsRecordClientRoutingPolicy() { } /** - * Indicates 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 `application`. + * 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 `application`. * */ @Import(name="dropInvalidHeaderFields") private @Nullable Output dropInvalidHeaderFields; /** - * @return Indicates 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 `application`. + * @return 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 `application`. * */ public Optional> dropInvalidHeaderFields() { @@ -160,14 +191,14 @@ public Optional> enableDeletionProtection() { } /** - * Indicates 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 `application`. Defaults to `false` + * 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 `application`. Defaults to `false` * */ @Import(name="enableTlsVersionAndCipherSuiteHeaders") private @Nullable Output enableTlsVersionAndCipherSuiteHeaders; /** - * @return Indicates 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 `application`. Defaults to `false` + * @return 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 `application`. Defaults to `false` * */ public Optional> enableTlsVersionAndCipherSuiteHeaders() { @@ -175,14 +206,14 @@ public Optional> enableTlsVersionAndCipherSuiteHeaders() { } /** - * Indicates 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 `false`. + * 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 `false`. * */ @Import(name="enableWafFailOpen") private @Nullable Output enableWafFailOpen; /** - * @return Indicates 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 `false`. + * @return 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 `false`. * */ public Optional> enableWafFailOpen() { @@ -190,14 +221,14 @@ public Optional> enableWafFailOpen() { } /** - * Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * */ @Import(name="enableXffClientPort") private @Nullable Output enableXffClientPort; /** - * @return Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @return Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * */ public Optional> enableXffClientPort() { @@ -205,14 +236,29 @@ public Optional> enableXffClientPort() { } /** - * The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + */ + @Import(name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic") + private @Nullable Output enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; + + /** + * @return Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + */ + public Optional> enforceSecurityGroupInboundRulesOnPrivateLinkTraffic() { + return Optional.ofNullable(this.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic); + } + + /** + * Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * */ @Import(name="idleTimeout") private @Nullable Output idleTimeout; /** - * @return The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @return Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * */ public Optional> idleTimeout() { @@ -235,14 +281,14 @@ public Optional> internal() { } /** - * The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * */ @Import(name="ipAddressType") private @Nullable Output ipAddressType; /** - * @return The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @return Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * */ public Optional> ipAddressType() { @@ -280,18 +326,14 @@ public Optional> listeners() { } /** - * The 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`. + * 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`. * */ @Import(name="name") private @Nullable Output name; /** - * @return The 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`. + * @return 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`. * */ public Optional> name() { @@ -314,14 +356,14 @@ public Optional> namePrefix() { } /** - * Indicates 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 `false`. + * 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 `false`. * */ @Import(name="preserveHostHeader") private @Nullable Output preserveHostHeader; /** - * @return Indicates 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 `false`. + * @return 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 `false`. * */ public Optional> preserveHostHeader() { @@ -329,18 +371,14 @@ public Optional> preserveHostHeader() { } /** - * A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * */ @Import(name="subnetIds") private @Nullable Output> subnetIds; /** - * @return A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @return List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * */ public Optional>> subnetIds() { @@ -348,14 +386,14 @@ public Optional>> subnetIds() { } /** - * A subnet mapping block as documented below. + * Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * */ @Import(name="subnetMappings") private @Nullable Output> subnetMappings; /** - * @return A subnet mapping block as documented below. + * @return Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * */ public Optional>> subnetMappings() { @@ -378,14 +416,14 @@ public Optional>> subnets() { } /** - * A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * */ @Import(name="tags") private @Nullable Output> tags; /** - * @return A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @return Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * */ public Optional>> tags() { @@ -411,6 +449,8 @@ private NetworkLoadBalancerArgs() {} private NetworkLoadBalancerArgs(NetworkLoadBalancerArgs $) { this.accessLogs = $.accessLogs; + this.clientKeepAlive = $.clientKeepAlive; + this.connectionLogs = $.connectionLogs; this.customerOwnedIpv4Pool = $.customerOwnedIpv4Pool; this.defaultTargetGroup = $.defaultTargetGroup; this.defaultTargetGroupPort = $.defaultTargetGroupPort; @@ -422,6 +462,7 @@ private NetworkLoadBalancerArgs(NetworkLoadBalancerArgs $) { this.enableTlsVersionAndCipherSuiteHeaders = $.enableTlsVersionAndCipherSuiteHeaders; this.enableWafFailOpen = $.enableWafFailOpen; this.enableXffClientPort = $.enableXffClientPort; + this.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = $.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; this.idleTimeout = $.idleTimeout; this.internal = $.internal; this.ipAddressType = $.ipAddressType; @@ -456,7 +497,7 @@ public Builder(NetworkLoadBalancerArgs defaults) { } /** - * @param accessLogs An Access Logs block. Access Logs documented below. + * @param accessLogs Access Logs block. See below. * * @return builder * @@ -467,7 +508,7 @@ public Builder accessLogs(@Nullable Output accessLog } /** - * @param accessLogs An Access Logs block. Access Logs documented below. + * @param accessLogs Access Logs block. See below. * * @return builder * @@ -477,7 +518,49 @@ public Builder accessLogs(LoadBalancerAccessLogsArgs accessLogs) { } /** - * @param customerOwnedIpv4Pool The ID of the customer owned ipv4 pool to use for this load balancer. + * @param clientKeepAlive Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + * @return builder + * + */ + public Builder clientKeepAlive(@Nullable Output clientKeepAlive) { + $.clientKeepAlive = clientKeepAlive; + return this; + } + + /** + * @param clientKeepAlive Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + * + * @return builder + * + */ + public Builder clientKeepAlive(Integer clientKeepAlive) { + return clientKeepAlive(Output.of(clientKeepAlive)); + } + + /** + * @param connectionLogs Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + * @return builder + * + */ + public Builder connectionLogs(@Nullable Output connectionLogs) { + $.connectionLogs = connectionLogs; + return this; + } + + /** + * @param connectionLogs Connection Logs block. See below. Only valid for Load Balancers of type `application`. + * + * @return builder + * + */ + public Builder connectionLogs(LoadBalancerConnectionLogsArgs connectionLogs) { + return connectionLogs(Output.of(connectionLogs)); + } + + /** + * @param customerOwnedIpv4Pool ID of the customer owned ipv4 pool to use for this load balancer. * * @return builder * @@ -488,7 +571,7 @@ public Builder customerOwnedIpv4Pool(@Nullable Output customerOwnedIpv4P } /** - * @param customerOwnedIpv4Pool The ID of the customer owned ipv4 pool to use for this load balancer. + * @param customerOwnedIpv4Pool ID of the customer owned ipv4 pool to use for this load balancer. * * @return builder * @@ -530,7 +613,7 @@ public Builder defaultTargetGroupPort(Integer defaultTargetGroupPort) { } /** - * @param desyncMitigationMode Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @param desyncMitigationMode How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * * @return builder * @@ -541,7 +624,7 @@ public Builder desyncMitigationMode(@Nullable Output desyncMitigationMod } /** - * @param desyncMitigationMode Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * @param desyncMitigationMode How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. * * @return builder * @@ -551,7 +634,7 @@ public Builder desyncMitigationMode(String desyncMitigationMode) { } /** - * @param dnsRecordClientRoutingPolicy Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @param dnsRecordClientRoutingPolicy How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * * @return builder * @@ -562,7 +645,7 @@ public Builder dnsRecordClientRoutingPolicy(@Nullable Output dnsRecordCl } /** - * @param dnsRecordClientRoutingPolicy Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * @param dnsRecordClientRoutingPolicy How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. * * @return builder * @@ -572,7 +655,7 @@ public Builder dnsRecordClientRoutingPolicy(String dnsRecordClientRoutingPolicy) } /** - * @param dropInvalidHeaderFields Indicates 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 `application`. + * @param dropInvalidHeaderFields 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 `application`. * * @return builder * @@ -583,7 +666,7 @@ public Builder dropInvalidHeaderFields(@Nullable Output dropInvalidHead } /** - * @param dropInvalidHeaderFields Indicates 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 `application`. + * @param dropInvalidHeaderFields 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 `application`. * * @return builder * @@ -635,7 +718,7 @@ public Builder enableDeletionProtection(Boolean enableDeletionProtection) { } /** - * @param enableTlsVersionAndCipherSuiteHeaders Indicates 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 `application`. Defaults to `false` + * @param enableTlsVersionAndCipherSuiteHeaders 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 `application`. Defaults to `false` * * @return builder * @@ -646,7 +729,7 @@ public Builder enableTlsVersionAndCipherSuiteHeaders(@Nullable Output e } /** - * @param enableTlsVersionAndCipherSuiteHeaders Indicates 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 `application`. Defaults to `false` + * @param enableTlsVersionAndCipherSuiteHeaders 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 `application`. Defaults to `false` * * @return builder * @@ -656,7 +739,7 @@ public Builder enableTlsVersionAndCipherSuiteHeaders(Boolean enableTlsVersionAnd } /** - * @param enableWafFailOpen Indicates 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 `false`. + * @param enableWafFailOpen 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 `false`. * * @return builder * @@ -667,7 +750,7 @@ public Builder enableWafFailOpen(@Nullable Output enableWafFailOpen) { } /** - * @param enableWafFailOpen Indicates 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 `false`. + * @param enableWafFailOpen 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 `false`. * * @return builder * @@ -677,7 +760,7 @@ public Builder enableWafFailOpen(Boolean enableWafFailOpen) { } /** - * @param enableXffClientPort Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @param enableXffClientPort Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * * @return builder * @@ -688,7 +771,7 @@ public Builder enableXffClientPort(@Nullable Output enableXffClientPort } /** - * @param enableXffClientPort Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * @param enableXffClientPort Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. * * @return builder * @@ -698,7 +781,28 @@ public Builder enableXffClientPort(Boolean enableXffClientPort) { } /** - * @param idleTimeout The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @param enforceSecurityGroupInboundRulesOnPrivateLinkTraffic Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + * @return builder + * + */ + public Builder enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(@Nullable Output enforceSecurityGroupInboundRulesOnPrivateLinkTraffic) { + $.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = enforceSecurityGroupInboundRulesOnPrivateLinkTraffic; + return this; + } + + /** + * @param enforceSecurityGroupInboundRulesOnPrivateLinkTraffic Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + * + * @return builder + * + */ + public Builder enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(String enforceSecurityGroupInboundRulesOnPrivateLinkTraffic) { + return enforceSecurityGroupInboundRulesOnPrivateLinkTraffic(Output.of(enforceSecurityGroupInboundRulesOnPrivateLinkTraffic)); + } + + /** + * @param idleTimeout Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * * @return builder * @@ -709,7 +813,7 @@ public Builder idleTimeout(@Nullable Output idleTimeout) { } /** - * @param idleTimeout The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * @param idleTimeout Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. * * @return builder * @@ -740,7 +844,7 @@ public Builder internal(Boolean internal) { } /** - * @param ipAddressType The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @param ipAddressType Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * * @return builder * @@ -751,7 +855,7 @@ public Builder ipAddressType(@Nullable Output ipAddressType) { } /** - * @param ipAddressType The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * @param ipAddressType Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. * * @return builder * @@ -793,9 +897,7 @@ public Builder listeners(ListenerArgs... listeners) { } /** - * @param name The 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`. + * @param name 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`. * * @return builder * @@ -806,9 +908,7 @@ public Builder name(@Nullable Output name) { } /** - * @param name The 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`. + * @param name 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`. * * @return builder * @@ -839,7 +939,7 @@ public Builder namePrefix(String namePrefix) { } /** - * @param preserveHostHeader Indicates 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 `false`. + * @param preserveHostHeader 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 `false`. * * @return builder * @@ -850,7 +950,7 @@ public Builder preserveHostHeader(@Nullable Output preserveHostHeader) } /** - * @param preserveHostHeader Indicates 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 `false`. + * @param preserveHostHeader 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 `false`. * * @return builder * @@ -860,9 +960,7 @@ public Builder preserveHostHeader(Boolean preserveHostHeader) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -873,9 +971,7 @@ public Builder subnetIds(@Nullable Output> subnetIds) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -885,9 +981,7 @@ public Builder subnetIds(List subnetIds) { } /** - * @param subnetIds A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * @param subnetIds List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. * * @return builder * @@ -897,7 +991,7 @@ public Builder subnetIds(String... subnetIds) { } /** - * @param subnetMappings A subnet mapping block as documented below. + * @param subnetMappings Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * * @return builder * @@ -908,7 +1002,7 @@ public Builder subnetMappings(@Nullable Output subnetMappings } /** - * @param subnetMappings A subnet mapping block as documented below. + * @param subnetMappings Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. * * @return builder * @@ -959,7 +1053,7 @@ public Builder subnets(Subnet... subnets) { } /** - * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * * @return builder * @@ -970,7 +1064,7 @@ public Builder tags(@Nullable Output> tags) { } /** - * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/ListenerArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/ListenerArgs.java index 9f5109051..072cb05c1 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/ListenerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/ListenerArgs.java @@ -4,6 +4,7 @@ package com.pulumi.awsx.lb.inputs; import com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs; +import com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs; import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import java.lang.Integer; @@ -21,7 +22,10 @@ * > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. * * ## Example Usage + * * ### Forward Action + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -46,12 +50,12 @@ * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("443") * .protocol("HTTPS") * .sslPolicy("ELBSecurityPolicy-2016-08") @@ -65,8 +69,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> * * To a NLB: + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -90,21 +97,25 @@ * * public static void stack(Context ctx) { * var frontEnd = new Listener("frontEnd", ListenerArgs.builder() - * .loadBalancerArn(aws_lb.front_end().arn()) + * .loadBalancerArn(frontEndAwsLb.arn()) * .port("443") * .protocol("TLS") * .certificateArn("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4") * .alpnPolicy("HTTP2Preferred") * .defaultActions(ListenerDefaultActionArgs.builder() * .type("forward") - * .targetGroupArn(aws_lb_target_group.front_end().arn()) + * .targetGroupArn(frontEndAwsLbTargetGroup.arn()) * .build()) * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Redirect Action + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -129,10 +140,10 @@ * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions(ListenerDefaultActionArgs.builder() @@ -148,7 +159,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Fixed-response Action + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -173,10 +188,10 @@ * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions(ListenerDefaultActionArgs.builder() @@ -192,7 +207,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Authenticate-cognito Action + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -221,7 +240,7 @@ * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * @@ -232,7 +251,7 @@ * var domain = new UserPoolDomain("domain"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions( @@ -253,7 +272,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Authenticate-OIDC Action + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -279,12 +302,12 @@ * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions( @@ -308,7 +331,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Gateway Load Balancer Listener + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -337,17 +364,19 @@ * } * * public static void stack(Context ctx) { - * var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder() + * var example = new LoadBalancer("example", LoadBalancerArgs.builder() * .loadBalancerType("gateway") + * .name("example") * .subnetMappings(LoadBalancerSubnetMappingArgs.builder() - * .subnetId(aws_subnet.example().id()) + * .subnetId(exampleAwsSubnet.id()) * .build()) * .build()); * * var exampleTargetGroup = new TargetGroup("exampleTargetGroup", TargetGroupArgs.builder() + * .name("example") * .port(6081) * .protocol("GENEVE") - * .vpcId(aws_vpc.example().id()) + * .vpcId(exampleAwsVpc.id()) * .healthCheck(TargetGroupHealthCheckArgs.builder() * .port(80) * .protocol("HTTP") @@ -355,23 +384,76 @@ * .build()); * * var exampleListener = new Listener("exampleListener", ListenerArgs.builder() - * .loadBalancerArn(exampleLoadBalancer.id()) + * .loadBalancerArn(example.id()) + * .defaultActions(ListenerDefaultActionArgs.builder() + * .targetGroupArn(exampleTargetGroup.id()) + * .type("forward") + * .build()) + * .build()); + * + * } + * } + * ``` + * <!--End PulumiCodeChooser --> + * + * ### Mutual TLS Authentication + * + * <!--Start PulumiCodeChooser --> + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.aws.lb.LoadBalancer; + * import com.pulumi.aws.lb.LoadBalancerArgs; + * import com.pulumi.aws.lb.TargetGroup; + * import com.pulumi.aws.lb.Listener; + * import com.pulumi.aws.lb.ListenerArgs; + * import com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs; + * import com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var example = new LoadBalancer("example", LoadBalancerArgs.builder() + * .loadBalancerType("application") + * .build()); + * + * var exampleTargetGroup = new TargetGroup("exampleTargetGroup"); + * + * var exampleListener = new Listener("exampleListener", ListenerArgs.builder() + * .loadBalancerArn(example.id()) * .defaultActions(ListenerDefaultActionArgs.builder() * .targetGroupArn(exampleTargetGroup.id()) * .type("forward") * .build()) + * .mutualAuthentication(ListenerMutualAuthenticationArgs.builder() + * .mode("verify") + * .trustStoreArn("...") + * .build()) * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> * * ## Import * * Using `pulumi import`, import listeners using their ARN. For example: * * ```sh - * $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 + * $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 * ``` * */ @@ -424,6 +506,21 @@ public Optional>> defaultActions() { return Optional.ofNullable(this.defaultActions); } + /** + * The mutual authentication configuration information. Detailed below. + * + */ + @Import(name="mutualAuthentication") + private @Nullable Output mutualAuthentication; + + /** + * @return The mutual authentication configuration information. Detailed below. + * + */ + public Optional> mutualAuthentication() { + return Optional.ofNullable(this.mutualAuthentication); + } + /** * Port on which the load balancer is listening. Not valid for Gateway Load Balancers. * @@ -494,6 +591,7 @@ private ListenerArgs(ListenerArgs $) { this.alpnPolicy = $.alpnPolicy; this.certificateArn = $.certificateArn; this.defaultActions = $.defaultActions; + this.mutualAuthentication = $.mutualAuthentication; this.port = $.port; this.protocol = $.protocol; this.sslPolicy = $.sslPolicy; @@ -591,6 +689,27 @@ public Builder defaultActions(ListenerDefaultActionArgs... defaultActions) { return defaultActions(List.of(defaultActions)); } + /** + * @param mutualAuthentication The mutual authentication configuration information. Detailed below. + * + * @return builder + * + */ + public Builder mutualAuthentication(@Nullable Output mutualAuthentication) { + $.mutualAuthentication = mutualAuthentication; + return this; + } + + /** + * @param mutualAuthentication The mutual authentication configuration information. Detailed below. + * + * @return builder + * + */ + public Builder mutualAuthentication(ListenerMutualAuthenticationArgs mutualAuthentication) { + return mutualAuthentication(Output.of(mutualAuthentication)); + } + /** * @param port Port on which the load balancer is listening. Not valid for Gateway Load Balancers. * diff --git a/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/TargetGroupArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/TargetGroupArgs.java index 67f2e47a7..43364c40d 100644 --- a/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/TargetGroupArgs.java +++ b/sdk/java/src/main/java/com/pulumi/awsx/lb/inputs/TargetGroupArgs.java @@ -25,7 +25,10 @@ * > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. * * ## Example Usage + * * ### Instance Target Group + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -54,6 +57,7 @@ * .build()); * * var test = new TargetGroup("test", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .port(80) * .protocol("HTTP") * .vpcId(main.id()) @@ -62,7 +66,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### IP Target Group + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -91,6 +99,7 @@ * .build()); * * var ip_example = new TargetGroup("ip-example", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .port(80) * .protocol("HTTP") * .targetType("ip") @@ -100,7 +109,11 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Lambda Target Group + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -123,13 +136,18 @@ * * public static void stack(Context ctx) { * var lambda_example = new TargetGroup("lambda-example", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .targetType("lambda") * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### ALB Target Group + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -152,16 +170,21 @@ * * public static void stack(Context ctx) { * var alb_example = new TargetGroup("alb-example", TargetGroupArgs.builder() + * .name("tf-example-lb-alb-tg") * .targetType("alb") * .port(80) * .protocol("TCP") - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .build()); * * } * } * ``` + * <!--End PulumiCodeChooser --> + * * ### Target group with unhealthy connection termination disabled + * + * <!--Start PulumiCodeChooser --> * ```java * package generated_program; * @@ -185,9 +208,10 @@ * * public static void stack(Context ctx) { * var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder() + * .name("tf-example-lb-nlb-tg") * .port(25) * .protocol("TCP") - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .targetHealthStates(TargetGroupTargetHealthStateArgs.builder() * .enableUnhealthyConnectionTermination(false) * .build()) @@ -196,13 +220,14 @@ * } * } * ``` + * <!--End PulumiCodeChooser --> * * ## Import * * Using `pulumi import`, import Target Groups using their ARN. For example: * * ```sh - * $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 + * $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 * ``` * */ @@ -286,20 +311,35 @@ public Optional> lambdaMultiValueHeadersEnabled() { } /** - * Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + * Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. * */ @Import(name="loadBalancingAlgorithmType") private @Nullable Output loadBalancingAlgorithmType; /** - * @return Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + * @return Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. * */ public Optional> loadBalancingAlgorithmType() { return Optional.ofNullable(this.loadBalancingAlgorithmType); } + /** + * Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + * + */ + @Import(name="loadBalancingAnomalyMitigation") + private @Nullable Output loadBalancingAnomalyMitigation; + + /** + * @return Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + * + */ + public Optional> loadBalancingAnomalyMitigation() { + return Optional.ofNullable(this.loadBalancingAnomalyMitigation); + } + /** * Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. * @@ -376,14 +416,20 @@ public Optional> preserveClientIp() { } /** - * Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + * Protocol to use for routing traffic to the targets. + * Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + * Required when `target_type` is `instance`, `ip`, or `alb`. + * Does not apply when `target_type` is `lambda`. * */ @Import(name="protocol") private @Nullable Output protocol; /** - * @return Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + * @return Protocol to use for routing traffic to the targets. + * Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + * Required when `target_type` is `instance`, `ip`, or `alb`. + * Does not apply when `target_type` is `lambda`. * */ public Optional> protocol() { @@ -496,7 +542,9 @@ public Optional>> targetHealthStat } /** - * Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + * Type of target that you must specify when registering targets with this target group. + * See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + * The default is `instance`. * * Note that you can't specify targets for a target group using both instance IDs and IP addresses. * @@ -511,7 +559,9 @@ public Optional>> targetHealthStat private @Nullable Output targetType; /** - * @return Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + * @return Type of target that you must specify when registering targets with this target group. + * See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + * The default is `instance`. * * Note that you can't specify targets for a target group using both instance IDs and IP addresses. * @@ -550,6 +600,7 @@ private TargetGroupArgs(TargetGroupArgs $) { this.ipAddressType = $.ipAddressType; this.lambdaMultiValueHeadersEnabled = $.lambdaMultiValueHeadersEnabled; this.loadBalancingAlgorithmType = $.loadBalancingAlgorithmType; + this.loadBalancingAnomalyMitigation = $.loadBalancingAnomalyMitigation; this.loadBalancingCrossZoneEnabled = $.loadBalancingCrossZoneEnabled; this.name = $.name; this.namePrefix = $.namePrefix; @@ -691,7 +742,7 @@ public Builder lambdaMultiValueHeadersEnabled(Boolean lambdaMultiValueHeadersEna } /** - * @param loadBalancingAlgorithmType Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + * @param loadBalancingAlgorithmType Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. * * @return builder * @@ -702,7 +753,7 @@ public Builder loadBalancingAlgorithmType(@Nullable Output loadBalancing } /** - * @param loadBalancingAlgorithmType Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + * @param loadBalancingAlgorithmType Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. * * @return builder * @@ -711,6 +762,27 @@ public Builder loadBalancingAlgorithmType(String loadBalancingAlgorithmType) { return loadBalancingAlgorithmType(Output.of(loadBalancingAlgorithmType)); } + /** + * @param loadBalancingAnomalyMitigation Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + * + * @return builder + * + */ + public Builder loadBalancingAnomalyMitigation(@Nullable Output loadBalancingAnomalyMitigation) { + $.loadBalancingAnomalyMitigation = loadBalancingAnomalyMitigation; + return this; + } + + /** + * @param loadBalancingAnomalyMitigation Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + * + * @return builder + * + */ + public Builder loadBalancingAnomalyMitigation(String loadBalancingAnomalyMitigation) { + return loadBalancingAnomalyMitigation(Output.of(loadBalancingAnomalyMitigation)); + } + /** * @param loadBalancingCrossZoneEnabled Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. * @@ -817,7 +889,10 @@ public Builder preserveClientIp(String preserveClientIp) { } /** - * @param protocol Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + * @param protocol Protocol to use for routing traffic to the targets. + * Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + * Required when `target_type` is `instance`, `ip`, or `alb`. + * Does not apply when `target_type` is `lambda`. * * @return builder * @@ -828,7 +903,10 @@ public Builder protocol(@Nullable Output protocol) { } /** - * @param protocol Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + * @param protocol Protocol to use for routing traffic to the targets. + * Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + * Required when `target_type` is `instance`, `ip`, or `alb`. + * Does not apply when `target_type` is `lambda`. * * @return builder * @@ -1005,7 +1083,9 @@ public Builder targetHealthStates(TargetGroupTargetHealthStateArgs... targetHeal } /** - * @param targetType Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + * @param targetType Type of target that you must specify when registering targets with this target group. + * See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + * The default is `instance`. * * Note that you can't specify targets for a target group using both instance IDs and IP addresses. * @@ -1024,7 +1104,9 @@ public Builder targetType(@Nullable Output targetType) { } /** - * @param targetType Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + * @param targetType Type of target that you must specify when registering targets with this target group. + * See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + * The default is `instance`. * * Note that you can't specify targets for a target group using both instance IDs and IP addresses. * diff --git a/sdk/nodejs/ecs/ec2service.ts b/sdk/nodejs/ecs/ec2service.ts index ef52ac931..3927ffcc5 100644 --- a/sdk/nodejs/ecs/ec2service.ts +++ b/sdk/nodejs/ecs/ec2service.ts @@ -196,7 +196,7 @@ export interface EC2ServiceArgs { */ taskDefinitionArgs?: inputs.ecs.EC2ServiceTaskDefinitionArgs; /** - * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. */ triggers?: pulumi.Input<{[key: string]: pulumi.Input}>; } diff --git a/sdk/nodejs/ecs/ec2taskDefinition.ts b/sdk/nodejs/ecs/ec2taskDefinition.ts index 687a1780c..39343da1a 100644 --- a/sdk/nodejs/ecs/ec2taskDefinition.ts +++ b/sdk/nodejs/ecs/ec2taskDefinition.ts @@ -79,6 +79,7 @@ export class EC2TaskDefinition extends pulumi.ComponentResource { resourceInputs["skipDestroy"] = args ? args.skipDestroy : undefined; resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["taskRole"] = args ? args.taskRole : undefined; + resourceInputs["trackLatest"] = args ? args.trackLatest : undefined; resourceInputs["volumes"] = args ? args.volumes : undefined; resourceInputs["loadBalancers"] = undefined /*out*/; resourceInputs["taskDefinition"] = undefined /*out*/; @@ -179,6 +180,10 @@ export interface EC2TaskDefinitionArgs { * Will be created automatically if not defined. */ taskRole?: inputs.awsx.DefaultRoleWithPolicyArgs; + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + */ + trackLatest?: pulumi.Input; /** * Configuration block for volumes that containers in your task may use. Detailed below. */ diff --git a/sdk/nodejs/ecs/fargateService.ts b/sdk/nodejs/ecs/fargateService.ts index c5feb5ccf..4f9b6879b 100644 --- a/sdk/nodejs/ecs/fargateService.ts +++ b/sdk/nodejs/ecs/fargateService.ts @@ -196,7 +196,7 @@ export interface FargateServiceArgs { */ taskDefinitionArgs?: inputs.ecs.FargateServiceTaskDefinitionArgs; /** - * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + * Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. */ triggers?: pulumi.Input<{[key: string]: pulumi.Input}>; } diff --git a/sdk/nodejs/ecs/fargateTaskDefinition.ts b/sdk/nodejs/ecs/fargateTaskDefinition.ts index f9d625479..2738bbdb6 100644 --- a/sdk/nodejs/ecs/fargateTaskDefinition.ts +++ b/sdk/nodejs/ecs/fargateTaskDefinition.ts @@ -78,6 +78,7 @@ export class FargateTaskDefinition extends pulumi.ComponentResource { resourceInputs["skipDestroy"] = args ? args.skipDestroy : undefined; resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["taskRole"] = args ? args.taskRole : undefined; + resourceInputs["trackLatest"] = args ? args.trackLatest : undefined; resourceInputs["volumes"] = args ? args.volumes : undefined; resourceInputs["loadBalancers"] = undefined /*out*/; resourceInputs["taskDefinition"] = undefined /*out*/; @@ -174,6 +175,10 @@ export interface FargateTaskDefinitionArgs { * Will be created automatically if not defined. */ taskRole?: inputs.awsx.DefaultRoleWithPolicyArgs; + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + */ + trackLatest?: pulumi.Input; /** * Configuration block for volumes that containers in your task may use. Detailed below. */ diff --git a/sdk/nodejs/lb/applicationLoadBalancer.ts b/sdk/nodejs/lb/applicationLoadBalancer.ts index 838241d9f..f7c63b59a 100644 --- a/sdk/nodejs/lb/applicationLoadBalancer.ts +++ b/sdk/nodejs/lb/applicationLoadBalancer.ts @@ -60,6 +60,8 @@ export class ApplicationLoadBalancer extends pulumi.ComponentResource { opts = opts || {}; if (!opts.id) { resourceInputs["accessLogs"] = args ? args.accessLogs : undefined; + resourceInputs["clientKeepAlive"] = args ? args.clientKeepAlive : undefined; + resourceInputs["connectionLogs"] = args ? args.connectionLogs : undefined; resourceInputs["customerOwnedIpv4Pool"] = args ? args.customerOwnedIpv4Pool : undefined; resourceInputs["defaultSecurityGroup"] = args ? (args.defaultSecurityGroup ? inputs.awsx.defaultSecurityGroupArgsProvideDefaults(args.defaultSecurityGroup) : undefined) : undefined; resourceInputs["defaultTargetGroup"] = args ? args.defaultTargetGroup : undefined; @@ -72,6 +74,7 @@ export class ApplicationLoadBalancer extends pulumi.ComponentResource { resourceInputs["enableTlsVersionAndCipherSuiteHeaders"] = args ? args.enableTlsVersionAndCipherSuiteHeaders : undefined; resourceInputs["enableWafFailOpen"] = args ? args.enableWafFailOpen : undefined; resourceInputs["enableXffClientPort"] = args ? args.enableXffClientPort : undefined; + resourceInputs["enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"] = args ? args.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic : undefined; resourceInputs["idleTimeout"] = args ? args.idleTimeout : undefined; resourceInputs["internal"] = args ? args.internal : undefined; resourceInputs["ipAddressType"] = args ? args.ipAddressType : undefined; @@ -105,11 +108,19 @@ export class ApplicationLoadBalancer extends pulumi.ComponentResource { */ export interface ApplicationLoadBalancerArgs { /** - * An Access Logs block. Access Logs documented below. + * Access Logs block. See below. */ accessLogs?: pulumi.Input; /** - * The ID of the customer owned ipv4 pool to use for this load balancer. + * Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + */ + clientKeepAlive?: pulumi.Input; + /** + * Connection Logs block. See below. Only valid for Load Balancers of type `application`. + */ + connectionLogs?: pulumi.Input; + /** + * ID of the customer owned ipv4 pool to use for this load balancer. */ customerOwnedIpv4Pool?: pulumi.Input; /** @@ -125,15 +136,15 @@ export interface ApplicationLoadBalancerArgs { */ defaultTargetGroupPort?: pulumi.Input; /** - * Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. */ desyncMitigationMode?: pulumi.Input; /** - * Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. */ dnsRecordClientRoutingPolicy?: pulumi.Input; /** - * Indicates 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 `application`. + * 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 `application`. */ dropInvalidHeaderFields?: pulumi.Input; /** @@ -141,23 +152,27 @@ export interface ApplicationLoadBalancerArgs { */ enableDeletionProtection?: pulumi.Input; /** - * Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + * Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. */ enableHttp2?: pulumi.Input; /** - * Indicates 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 `application`. Defaults to `false` + * 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 `application`. Defaults to `false` */ enableTlsVersionAndCipherSuiteHeaders?: pulumi.Input; /** - * Indicates 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 `false`. + * 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 `false`. */ enableWafFailOpen?: pulumi.Input; /** - * Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. */ enableXffClientPort?: pulumi.Input; /** - * The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + */ + enforceSecurityGroupInboundRulesOnPrivateLinkTraffic?: pulumi.Input; + /** + * Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. */ idleTimeout?: pulumi.Input; /** @@ -165,7 +180,7 @@ export interface ApplicationLoadBalancerArgs { */ internal?: pulumi.Input; /** - * The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. */ ipAddressType?: pulumi.Input; /** @@ -177,9 +192,7 @@ export interface ApplicationLoadBalancerArgs { */ listeners?: inputs.lb.ListenerArgs[]; /** - * The 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`. + * 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`. */ name?: pulumi.Input; /** @@ -187,21 +200,19 @@ export interface ApplicationLoadBalancerArgs { */ namePrefix?: pulumi.Input; /** - * Indicates 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 `false`. + * 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 `false`. */ preserveHostHeader?: pulumi.Input; /** - * A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + * List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. */ securityGroups?: pulumi.Input[]>; /** - * A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. */ subnetIds?: pulumi.Input[]>; /** - * A subnet mapping block as documented below. + * Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. */ subnetMappings?: pulumi.Input[]>; /** @@ -209,7 +220,7 @@ export interface ApplicationLoadBalancerArgs { */ subnets?: pulumi.Input[]>; /** - * A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{[key: string]: pulumi.Input}>; /** diff --git a/sdk/nodejs/lb/networkLoadBalancer.ts b/sdk/nodejs/lb/networkLoadBalancer.ts index b7db7caa2..7a7f8418c 100644 --- a/sdk/nodejs/lb/networkLoadBalancer.ts +++ b/sdk/nodejs/lb/networkLoadBalancer.ts @@ -56,6 +56,8 @@ export class NetworkLoadBalancer extends pulumi.ComponentResource { opts = opts || {}; if (!opts.id) { resourceInputs["accessLogs"] = args ? args.accessLogs : undefined; + resourceInputs["clientKeepAlive"] = args ? args.clientKeepAlive : undefined; + resourceInputs["connectionLogs"] = args ? args.connectionLogs : undefined; resourceInputs["customerOwnedIpv4Pool"] = args ? args.customerOwnedIpv4Pool : undefined; resourceInputs["defaultTargetGroup"] = args ? args.defaultTargetGroup : undefined; resourceInputs["defaultTargetGroupPort"] = args ? args.defaultTargetGroupPort : undefined; @@ -67,6 +69,7 @@ export class NetworkLoadBalancer extends pulumi.ComponentResource { resourceInputs["enableTlsVersionAndCipherSuiteHeaders"] = args ? args.enableTlsVersionAndCipherSuiteHeaders : undefined; resourceInputs["enableWafFailOpen"] = args ? args.enableWafFailOpen : undefined; resourceInputs["enableXffClientPort"] = args ? args.enableXffClientPort : undefined; + resourceInputs["enforceSecurityGroupInboundRulesOnPrivateLinkTraffic"] = args ? args.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic : undefined; resourceInputs["idleTimeout"] = args ? args.idleTimeout : undefined; resourceInputs["internal"] = args ? args.internal : undefined; resourceInputs["ipAddressType"] = args ? args.ipAddressType : undefined; @@ -98,11 +101,19 @@ export class NetworkLoadBalancer extends pulumi.ComponentResource { */ export interface NetworkLoadBalancerArgs { /** - * An Access Logs block. Access Logs documented below. + * Access Logs block. See below. */ accessLogs?: pulumi.Input; /** - * The ID of the customer owned ipv4 pool to use for this load balancer. + * Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + */ + clientKeepAlive?: pulumi.Input; + /** + * Connection Logs block. See below. Only valid for Load Balancers of type `application`. + */ + connectionLogs?: pulumi.Input; + /** + * ID of the customer owned ipv4 pool to use for this load balancer. */ customerOwnedIpv4Pool?: pulumi.Input; /** @@ -114,15 +125,15 @@ export interface NetworkLoadBalancerArgs { */ defaultTargetGroupPort?: pulumi.Input; /** - * Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + * How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. */ desyncMitigationMode?: pulumi.Input; /** - * Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + * How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. */ dnsRecordClientRoutingPolicy?: pulumi.Input; /** - * Indicates 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 `application`. + * 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 `application`. */ dropInvalidHeaderFields?: pulumi.Input; /** @@ -134,19 +145,23 @@ export interface NetworkLoadBalancerArgs { */ enableDeletionProtection?: pulumi.Input; /** - * Indicates 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 `application`. Defaults to `false` + * 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 `application`. Defaults to `false` */ enableTlsVersionAndCipherSuiteHeaders?: pulumi.Input; /** - * Indicates 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 `false`. + * 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 `false`. */ enableWafFailOpen?: pulumi.Input; /** - * Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + * Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. */ enableXffClientPort?: pulumi.Input; /** - * The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + * Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + */ + enforceSecurityGroupInboundRulesOnPrivateLinkTraffic?: pulumi.Input; + /** + * Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. */ idleTimeout?: pulumi.Input; /** @@ -154,7 +169,7 @@ export interface NetworkLoadBalancerArgs { */ internal?: pulumi.Input; /** - * The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + * Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. */ ipAddressType?: pulumi.Input; /** @@ -166,9 +181,7 @@ export interface NetworkLoadBalancerArgs { */ listeners?: inputs.lb.ListenerArgs[]; /** - * The 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`. + * 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`. */ name?: pulumi.Input; /** @@ -176,17 +189,15 @@ export interface NetworkLoadBalancerArgs { */ namePrefix?: pulumi.Input; /** - * Indicates 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 `false`. + * 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 `false`. */ preserveHostHeader?: pulumi.Input; /** - * A list of subnet IDs to attach to the LB. Subnets - * cannot be updated for Load Balancers of type `network`. Changing this value - * for load balancers of type `network` will force a recreation of the resource. + * List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. */ subnetIds?: pulumi.Input[]>; /** - * A subnet mapping block as documented below. + * Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. */ subnetMappings?: pulumi.Input[]>; /** @@ -194,7 +205,7 @@ export interface NetworkLoadBalancerArgs { */ subnets?: pulumi.Input[]>; /** - * A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + * Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{[key: string]: pulumi.Input}>; /** diff --git a/sdk/nodejs/package.json b/sdk/nodejs/package.json index 972cd2f41..9e5d9cdbd 100644 --- a/sdk/nodejs/package.json +++ b/sdk/nodejs/package.json @@ -16,7 +16,7 @@ }, "dependencies": { "@aws-sdk/client-ecs": "^3.405.0", - "@pulumi/aws": "^6.9.0", + "@pulumi/aws": "^6.32.0", "@pulumi/docker": "^4.5.1", "@pulumi/pulumi": "^3.0.0", "@types/aws-lambda": "^8.10.23", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 3fd0cc932..cf42b11f4 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -210,6 +210,10 @@ export namespace awsx { * permissions for the CMK whenever the encrypted data is requested. */ kmsKeyId?: pulumi.Input; + /** + * Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + */ + logGroupClass?: pulumi.Input; /** * The name of the log group. If omitted, this provider will assign a random, unique name. */ @@ -420,17 +424,17 @@ export namespace ec2 { * Do not use the same resource ID in both a VPC Endpoint resource and a VPC Endpoint Association resource. * Doing so will cause a conflict of associations and will overwrite the association. * - * {{% examples %}} * ## Example Usage - * {{% example %}} + * * ### Basic * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const s3 = new aws.ec2.VpcEndpoint("s3", { - * vpcId: aws_vpc.main.id, + * vpcId: main.id, * serviceName: "com.amazonaws.us-west-2.s3", * }); * ``` @@ -439,7 +443,7 @@ export namespace ec2 { * import pulumi_aws as aws * * s3 = aws.ec2.VpcEndpoint("s3", - * vpc_id=aws_vpc["main"]["id"], + * vpc_id=main["id"], * service_name="com.amazonaws.us-west-2.s3") * ``` * ```csharp @@ -452,7 +456,7 @@ export namespace ec2 { * { * var s3 = new Aws.Ec2.VpcEndpoint("s3", new() * { - * VpcId = aws_vpc.Main.Id, + * VpcId = main.Id, * ServiceName = "com.amazonaws.us-west-2.s3", * }); * @@ -469,7 +473,7 @@ export namespace ec2 { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - * VpcId: pulumi.Any(aws_vpc.Main.Id), + * VpcId: pulumi.Any(main.Id), * ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), * }) * if err != nil { @@ -501,7 +505,7 @@ export namespace ec2 { * * public static void stack(Context ctx) { * var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.s3") * .build()); * @@ -513,19 +517,20 @@ export namespace ec2 { * s3: * type: aws:ec2:VpcEndpoint * properties: - * vpcId: ${aws_vpc.main.id} + * vpcId: ${main.id} * serviceName: com.amazonaws.us-west-2.s3 * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Basic w/ Tags * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const s3 = new aws.ec2.VpcEndpoint("s3", { - * vpcId: aws_vpc.main.id, + * vpcId: main.id, * serviceName: "com.amazonaws.us-west-2.s3", * tags: { * Environment: "test", @@ -537,7 +542,7 @@ export namespace ec2 { * import pulumi_aws as aws * * s3 = aws.ec2.VpcEndpoint("s3", - * vpc_id=aws_vpc["main"]["id"], + * vpc_id=main["id"], * service_name="com.amazonaws.us-west-2.s3", * tags={ * "Environment": "test", @@ -553,7 +558,7 @@ export namespace ec2 { * { * var s3 = new Aws.Ec2.VpcEndpoint("s3", new() * { - * VpcId = aws_vpc.Main.Id, + * VpcId = main.Id, * ServiceName = "com.amazonaws.us-west-2.s3", * Tags = * { @@ -574,7 +579,7 @@ export namespace ec2 { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - * VpcId: pulumi.Any(aws_vpc.Main.Id), + * VpcId: pulumi.Any(main.Id), * ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), * Tags: pulumi.StringMap{ * "Environment": pulumi.String("test"), @@ -609,7 +614,7 @@ export namespace ec2 { * * public static void stack(Context ctx) { * var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.s3") * .tags(Map.of("Environment", "test")) * .build()); @@ -622,24 +627,25 @@ export namespace ec2 { * s3: * type: aws:ec2:VpcEndpoint * properties: - * vpcId: ${aws_vpc.main.id} + * vpcId: ${main.id} * serviceName: com.amazonaws.us-west-2.s3 * tags: * Environment: test * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Interface Endpoint Type * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const ec2 = new aws.ec2.VpcEndpoint("ec2", { - * vpcId: aws_vpc.main.id, + * vpcId: main.id, * serviceName: "com.amazonaws.us-west-2.ec2", * vpcEndpointType: "Interface", - * securityGroupIds: [aws_security_group.sg1.id], + * securityGroupIds: [sg1.id], * privateDnsEnabled: true, * }); * ``` @@ -648,10 +654,10 @@ export namespace ec2 { * import pulumi_aws as aws * * ec2 = aws.ec2.VpcEndpoint("ec2", - * vpc_id=aws_vpc["main"]["id"], + * vpc_id=main["id"], * service_name="com.amazonaws.us-west-2.ec2", * vpc_endpoint_type="Interface", - * security_group_ids=[aws_security_group["sg1"]["id"]], + * security_group_ids=[sg1["id"]], * private_dns_enabled=True) * ``` * ```csharp @@ -664,12 +670,12 @@ export namespace ec2 { * { * var ec2 = new Aws.Ec2.VpcEndpoint("ec2", new() * { - * VpcId = aws_vpc.Main.Id, + * VpcId = main.Id, * ServiceName = "com.amazonaws.us-west-2.ec2", * VpcEndpointType = "Interface", * SecurityGroupIds = new[] * { - * aws_security_group.Sg1.Id, + * sg1.Id, * }, * PrivateDnsEnabled = true, * }); @@ -687,11 +693,11 @@ export namespace ec2 { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ - * VpcId: pulumi.Any(aws_vpc.Main.Id), + * VpcId: pulumi.Any(main.Id), * ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), * VpcEndpointType: pulumi.String("Interface"), * SecurityGroupIds: pulumi.StringArray{ - * aws_security_group.Sg1.Id, + * sg1.Id, * }, * PrivateDnsEnabled: pulumi.Bool(true), * }) @@ -724,10 +730,10 @@ export namespace ec2 { * * public static void stack(Context ctx) { * var ec2 = new VpcEndpoint("ec2", VpcEndpointArgs.builder() - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .serviceName("com.amazonaws.us-west-2.ec2") * .vpcEndpointType("Interface") - * .securityGroupIds(aws_security_group.sg1().id()) + * .securityGroupIds(sg1.id()) * .privateDnsEnabled(true) * .build()); * @@ -739,32 +745,33 @@ export namespace ec2 { * ec2: * type: aws:ec2:VpcEndpoint * properties: - * vpcId: ${aws_vpc.main.id} + * vpcId: ${main.id} * serviceName: com.amazonaws.us-west-2.ec2 * vpcEndpointType: Interface * securityGroupIds: - * - ${aws_security_group.sg1.id} + * - ${sg1.id} * privateDnsEnabled: true * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Gateway Load Balancer Endpoint Type * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const current = aws.getCallerIdentity({}); - * const exampleVpcEndpointService = new aws.ec2.VpcEndpointService("exampleVpcEndpointService", { + * const example = new aws.ec2.VpcEndpointService("example", { * acceptanceRequired: false, * allowedPrincipals: [current.then(current => current.arn)], - * gatewayLoadBalancerArns: [aws_lb.example.arn], + * gatewayLoadBalancerArns: [exampleAwsLb.arn], * }); - * const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("exampleVpcEndpoint", { - * serviceName: exampleVpcEndpointService.serviceName, - * subnetIds: [aws_subnet.example.id], - * vpcEndpointType: exampleVpcEndpointService.serviceType, - * vpcId: aws_vpc.example.id, + * const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("example", { + * serviceName: example.serviceName, + * subnetIds: [exampleAwsSubnet.id], + * vpcEndpointType: example.serviceType, + * vpcId: exampleAwsVpc.id, * }); * ``` * ```python @@ -772,15 +779,15 @@ export namespace ec2 { * import pulumi_aws as aws * * current = aws.get_caller_identity() - * example_vpc_endpoint_service = aws.ec2.VpcEndpointService("exampleVpcEndpointService", + * example = aws.ec2.VpcEndpointService("example", * acceptance_required=False, * allowed_principals=[current.arn], - * gateway_load_balancer_arns=[aws_lb["example"]["arn"]]) - * example_vpc_endpoint = aws.ec2.VpcEndpoint("exampleVpcEndpoint", - * service_name=example_vpc_endpoint_service.service_name, - * subnet_ids=[aws_subnet["example"]["id"]], - * vpc_endpoint_type=example_vpc_endpoint_service.service_type, - * vpc_id=aws_vpc["example"]["id"]) + * gateway_load_balancer_arns=[example_aws_lb["arn"]]) + * example_vpc_endpoint = aws.ec2.VpcEndpoint("example", + * service_name=example.service_name, + * subnet_ids=[example_aws_subnet["id"]], + * vpc_endpoint_type=example.service_type, + * vpc_id=example_aws_vpc["id"]) * ``` * ```csharp * using System.Collections.Generic; @@ -792,7 +799,7 @@ export namespace ec2 { * { * var current = Aws.GetCallerIdentity.Invoke(); * - * var exampleVpcEndpointService = new Aws.Ec2.VpcEndpointService("exampleVpcEndpointService", new() + * var example = new Aws.Ec2.VpcEndpointService("example", new() * { * AcceptanceRequired = false, * AllowedPrincipals = new[] @@ -801,19 +808,19 @@ export namespace ec2 { * }, * GatewayLoadBalancerArns = new[] * { - * aws_lb.Example.Arn, + * exampleAwsLb.Arn, * }, * }); * - * var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("exampleVpcEndpoint", new() + * var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("example", new() * { - * ServiceName = exampleVpcEndpointService.ServiceName, + * ServiceName = example.ServiceName, * SubnetIds = new[] * { - * aws_subnet.Example.Id, + * exampleAwsSubnet.Id, * }, - * VpcEndpointType = exampleVpcEndpointService.ServiceType, - * VpcId = aws_vpc.Example.Id, + * VpcEndpointType = example.ServiceType, + * VpcId = exampleAwsVpc.Id, * }); * * }); @@ -833,25 +840,25 @@ export namespace ec2 { * if err != nil { * return err * } - * exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ + * example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ * AcceptanceRequired: pulumi.Bool(false), * AllowedPrincipals: pulumi.StringArray{ - * *pulumi.String(current.Arn), + * pulumi.String(current.Arn), * }, * GatewayLoadBalancerArns: pulumi.StringArray{ - * aws_lb.Example.Arn, + * exampleAwsLb.Arn, * }, * }) * if err != nil { * return err * } - * _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ - * ServiceName: exampleVpcEndpointService.ServiceName, + * _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ + * ServiceName: example.ServiceName, * SubnetIds: pulumi.StringArray{ - * aws_subnet.Example.Id, + * exampleAwsSubnet.Id, * }, - * VpcEndpointType: exampleVpcEndpointService.ServiceType, - * VpcId: pulumi.Any(aws_vpc.Example.Id), + * VpcEndpointType: example.ServiceType, + * VpcId: pulumi.Any(exampleAwsVpc.Id), * }) * if err != nil { * return err @@ -887,17 +894,17 @@ export namespace ec2 { * public static void stack(Context ctx) { * final var current = AwsFunctions.getCallerIdentity(); * - * var exampleVpcEndpointService = new VpcEndpointService("exampleVpcEndpointService", VpcEndpointServiceArgs.builder() + * var example = new VpcEndpointService("example", VpcEndpointServiceArgs.builder() * .acceptanceRequired(false) * .allowedPrincipals(current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.arn())) - * .gatewayLoadBalancerArns(aws_lb.example().arn()) + * .gatewayLoadBalancerArns(exampleAwsLb.arn()) * .build()); * * var exampleVpcEndpoint = new VpcEndpoint("exampleVpcEndpoint", VpcEndpointArgs.builder() - * .serviceName(exampleVpcEndpointService.serviceName()) - * .subnetIds(aws_subnet.example().id()) - * .vpcEndpointType(exampleVpcEndpointService.serviceType()) - * .vpcId(aws_vpc.example().id()) + * .serviceName(example.serviceName()) + * .subnetIds(exampleAwsSubnet.id()) + * .vpcEndpointType(example.serviceType()) + * .vpcId(exampleAwsVpc.id()) * .build()); * * } @@ -905,39 +912,38 @@ export namespace ec2 { * ``` * ```yaml * resources: - * exampleVpcEndpointService: + * example: * type: aws:ec2:VpcEndpointService * properties: * acceptanceRequired: false * allowedPrincipals: * - ${current.arn} * gatewayLoadBalancerArns: - * - ${aws_lb.example.arn} + * - ${exampleAwsLb.arn} * exampleVpcEndpoint: * type: aws:ec2:VpcEndpoint + * name: example * properties: - * serviceName: ${exampleVpcEndpointService.serviceName} + * serviceName: ${example.serviceName} * subnetIds: - * - ${aws_subnet.example.id} - * vpcEndpointType: ${exampleVpcEndpointService.serviceType} - * vpcId: ${aws_vpc.example.id} + * - ${exampleAwsSubnet.id} + * vpcEndpointType: ${example.serviceType} + * vpcId: ${exampleAwsVpc.id} * variables: * current: * fn::invoke: * Function: aws:getCallerIdentity * Arguments: {} * ``` - * {{% /example %}} - * {{% /examples %}} + * * * ## Import * * Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: * * ```sh - * $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 + * $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 * ``` - * */ export interface VpcEndpointSpecArgs { /** @@ -1118,6 +1124,10 @@ export namespace ecs { * Will be created automatically if not defined. */ taskRole?: inputs.awsx.DefaultRoleWithPolicyArgs; + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + */ + trackLatest?: pulumi.Input; /** * Configuration block for volumes that containers in your task may use. Detailed below. */ @@ -1207,6 +1217,10 @@ export namespace ecs { * Will be created automatically if not defined. */ taskRole?: inputs.awsx.DefaultRoleWithPolicyArgs; + /** + * Whether should track latest task definition or the one created with the resource. Default is `false`. + */ + trackLatest?: pulumi.Input; /** * Configuration block for volumes that containers in your task may use. Detailed below. */ @@ -1413,21 +1427,19 @@ export namespace lb { * * > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. * - * {{% examples %}} * ## Example Usage - * {{% example %}} + * * ### Forward Action * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - * // ... - * const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - * // ... - * const frontEndListener = new aws.lb.Listener("frontEndListener", { - * loadBalancerArn: frontEndLoadBalancer.arn, + * const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + * const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + * const frontEndListener = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEnd.arn, * port: 443, * protocol: "HTTPS", * sslPolicy: "ELBSecurityPolicy-2016-08", @@ -1442,12 +1454,10 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - * # ... - * front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - * # ... - * front_end_listener = aws.lb.Listener("frontEndListener", - * load_balancer_arn=front_end_load_balancer.arn, + * front_end = aws.lb.LoadBalancer("front_end") + * front_end_target_group = aws.lb.TargetGroup("front_end") + * front_end_listener = aws.lb.Listener("front_end", + * load_balancer_arn=front_end.arn, * port=443, * protocol="HTTPS", * ssl_policy="ELBSecurityPolicy-2016-08", @@ -1465,15 +1475,13 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new Aws.LB.LoadBalancer("front_end"); * - * // ... - * var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + * var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); * - * // ... - * var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + * var frontEndListener = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = frontEndLoadBalancer.Arn, + * LoadBalancerArn = frontEnd.Arn, * Port = 443, * Protocol = "HTTPS", * SslPolicy = "ELBSecurityPolicy-2016-08", @@ -1500,16 +1508,16 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + * frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) * if err != nil { * return err * } - * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - * LoadBalancerArn: frontEndLoadBalancer.Arn, + * _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: frontEnd.Arn, * Port: pulumi.Int(443), * Protocol: pulumi.String("HTTPS"), * SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -1552,12 +1560,12 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("443") * .protocol("HTTPS") * .sslPolicy("ELBSecurityPolicy-2016-08") @@ -1573,14 +1581,17 @@ export namespace lb { * ``` * ```yaml * resources: - * frontEndLoadBalancer: + * frontEnd: * type: aws:lb:LoadBalancer + * name: front_end * frontEndTargetGroup: * type: aws:lb:TargetGroup + * name: front_end * frontEndListener: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${frontEndLoadBalancer.arn} + * loadBalancerArn: ${frontEnd.arn} * port: '443' * protocol: HTTPS * sslPolicy: ELBSecurityPolicy-2016-08 @@ -1589,22 +1600,24 @@ export namespace lb { * - type: forward * targetGroupArn: ${frontEndTargetGroup.arn} * ``` + * * * To a NLB: * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEnd = new aws.lb.Listener("frontEnd", { - * loadBalancerArn: aws_lb.front_end.arn, + * const frontEnd = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEndAwsLb.arn, * port: 443, * protocol: "TLS", * certificateArn: "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", * alpnPolicy: "HTTP2Preferred", * defaultActions: [{ * type: "forward", - * targetGroupArn: aws_lb_target_group.front_end.arn, + * targetGroupArn: frontEndAwsLbTargetGroup.arn, * }], * }); * ``` @@ -1612,15 +1625,15 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end = aws.lb.Listener("frontEnd", - * load_balancer_arn=aws_lb["front_end"]["arn"], + * front_end = aws.lb.Listener("front_end", + * load_balancer_arn=front_end_aws_lb["arn"], * port=443, * protocol="TLS", * certificate_arn="arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", * alpn_policy="HTTP2Preferred", * default_actions=[aws.lb.ListenerDefaultActionArgs( * type="forward", - * target_group_arn=aws_lb_target_group["front_end"]["arn"], + * target_group_arn=front_end_aws_lb_target_group["arn"], * )]) * ``` * ```csharp @@ -1631,9 +1644,9 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEnd = new Aws.LB.Listener("frontEnd", new() + * var frontEnd = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = aws_lb.Front_end.Arn, + * LoadBalancerArn = frontEndAwsLb.Arn, * Port = 443, * Protocol = "TLS", * CertificateArn = "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", @@ -1643,7 +1656,7 @@ export namespace lb { * new Aws.LB.Inputs.ListenerDefaultActionArgs * { * Type = "forward", - * TargetGroupArn = aws_lb_target_group.Front_end.Arn, + * TargetGroupArn = frontEndAwsLbTargetGroup.Arn, * }, * }, * }); @@ -1660,8 +1673,8 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ - * LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), + * _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), * Port: pulumi.Int(443), * Protocol: pulumi.String("TLS"), * CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -1669,7 +1682,7 @@ export namespace lb { * DefaultActions: lb.ListenerDefaultActionArray{ * &lb.ListenerDefaultActionArgs{ * Type: pulumi.String("forward"), - * TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), + * TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), * }, * }, * }) @@ -1703,14 +1716,14 @@ export namespace lb { * * public static void stack(Context ctx) { * var frontEnd = new Listener("frontEnd", ListenerArgs.builder() - * .loadBalancerArn(aws_lb.front_end().arn()) + * .loadBalancerArn(frontEndAwsLb.arn()) * .port("443") * .protocol("TLS") * .certificateArn("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4") * .alpnPolicy("HTTP2Preferred") * .defaultActions(ListenerDefaultActionArgs.builder() * .type("forward") - * .targetGroupArn(aws_lb_target_group.front_end().arn()) + * .targetGroupArn(frontEndAwsLbTargetGroup.arn()) * .build()) * .build()); * @@ -1721,28 +1734,29 @@ export namespace lb { * resources: * frontEnd: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${aws_lb.front_end.arn} + * loadBalancerArn: ${frontEndAwsLb.arn} * port: '443' * protocol: TLS * certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4 * alpnPolicy: HTTP2Preferred * defaultActions: * - type: forward - * targetGroupArn: ${aws_lb_target_group.front_end.arn} + * targetGroupArn: ${frontEndAwsLbTargetGroup.arn} * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Redirect Action * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - * // ... - * const frontEndListener = new aws.lb.Listener("frontEndListener", { - * loadBalancerArn: frontEndLoadBalancer.arn, + * const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + * const frontEndListener = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEnd.arn, * port: 80, * protocol: "HTTP", * defaultActions: [{ @@ -1759,10 +1773,9 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - * # ... - * front_end_listener = aws.lb.Listener("frontEndListener", - * load_balancer_arn=front_end_load_balancer.arn, + * front_end = aws.lb.LoadBalancer("front_end") + * front_end_listener = aws.lb.Listener("front_end", + * load_balancer_arn=front_end.arn, * port=80, * protocol="HTTP", * default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -1782,12 +1795,11 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new Aws.LB.LoadBalancer("front_end"); * - * // ... - * var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + * var frontEndListener = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = frontEndLoadBalancer.Arn, + * LoadBalancerArn = frontEnd.Arn, * Port = 80, * Protocol = "HTTP", * DefaultActions = new[] @@ -1817,12 +1829,12 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + * frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - * LoadBalancerArn: frontEndLoadBalancer.Arn, + * _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: frontEnd.Arn, * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * DefaultActions: lb.ListenerDefaultActionArray{ @@ -1867,10 +1879,10 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions(ListenerDefaultActionArgs.builder() @@ -1888,12 +1900,14 @@ export namespace lb { * ``` * ```yaml * resources: - * frontEndLoadBalancer: + * frontEnd: * type: aws:lb:LoadBalancer + * name: front_end * frontEndListener: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${frontEndLoadBalancer.arn} + * loadBalancerArn: ${frontEnd.arn} * port: '80' * protocol: HTTP * defaultActions: @@ -1903,18 +1917,18 @@ export namespace lb { * protocol: HTTPS * statusCode: HTTP_301 * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Fixed-response Action * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - * // ... - * const frontEndListener = new aws.lb.Listener("frontEndListener", { - * loadBalancerArn: frontEndLoadBalancer.arn, + * const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + * const frontEndListener = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEnd.arn, * port: 80, * protocol: "HTTP", * defaultActions: [{ @@ -1931,10 +1945,9 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - * # ... - * front_end_listener = aws.lb.Listener("frontEndListener", - * load_balancer_arn=front_end_load_balancer.arn, + * front_end = aws.lb.LoadBalancer("front_end") + * front_end_listener = aws.lb.Listener("front_end", + * load_balancer_arn=front_end.arn, * port=80, * protocol="HTTP", * default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -1954,12 +1967,11 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new Aws.LB.LoadBalancer("front_end"); * - * // ... - * var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + * var frontEndListener = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = frontEndLoadBalancer.Arn, + * LoadBalancerArn = frontEnd.Arn, * Port = 80, * Protocol = "HTTP", * DefaultActions = new[] @@ -1989,12 +2001,12 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + * frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - * LoadBalancerArn: frontEndLoadBalancer.Arn, + * _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: frontEnd.Arn, * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * DefaultActions: lb.ListenerDefaultActionArray{ @@ -2039,10 +2051,10 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions(ListenerDefaultActionArgs.builder() @@ -2060,12 +2072,14 @@ export namespace lb { * ``` * ```yaml * resources: - * frontEndLoadBalancer: + * frontEnd: * type: aws:lb:LoadBalancer + * name: front_end * frontEndListener: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${frontEndLoadBalancer.arn} + * loadBalancerArn: ${frontEnd.arn} * port: '80' * protocol: HTTP * defaultActions: @@ -2075,26 +2089,22 @@ export namespace lb { * messageBody: Fixed response content * statusCode: '200' * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Authenticate-cognito Action * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - * // ... - * const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - * // ... + * const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + * const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); * const pool = new aws.cognito.UserPool("pool", {}); - * // ... * const client = new aws.cognito.UserPoolClient("client", {}); - * // ... * const domain = new aws.cognito.UserPoolDomain("domain", {}); - * // ... - * const frontEndListener = new aws.lb.Listener("frontEndListener", { - * loadBalancerArn: frontEndLoadBalancer.arn, + * const frontEndListener = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEnd.arn, * port: 80, * protocol: "HTTP", * defaultActions: [ @@ -2117,18 +2127,13 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - * # ... - * front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - * # ... + * front_end = aws.lb.LoadBalancer("front_end") + * front_end_target_group = aws.lb.TargetGroup("front_end") * pool = aws.cognito.UserPool("pool") - * # ... * client = aws.cognito.UserPoolClient("client") - * # ... * domain = aws.cognito.UserPoolDomain("domain") - * # ... - * front_end_listener = aws.lb.Listener("frontEndListener", - * load_balancer_arn=front_end_load_balancer.arn, + * front_end_listener = aws.lb.Listener("front_end", + * load_balancer_arn=front_end.arn, * port=80, * protocol="HTTP", * default_actions=[ @@ -2154,24 +2159,19 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new Aws.LB.LoadBalancer("front_end"); * - * // ... - * var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + * var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); * - * // ... * var pool = new Aws.Cognito.UserPool("pool"); * - * // ... * var client = new Aws.Cognito.UserPoolClient("client"); * - * // ... * var domain = new Aws.Cognito.UserPoolDomain("domain"); * - * // ... - * var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + * var frontEndListener = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = frontEndLoadBalancer.Arn, + * LoadBalancerArn = frontEnd.Arn, * Port = 80, * Protocol = "HTTP", * DefaultActions = new[] @@ -2207,11 +2207,11 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + * frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) * if err != nil { * return err * } - * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) * if err != nil { * return err * } @@ -2227,8 +2227,8 @@ export namespace lb { * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - * LoadBalancerArn: frontEndLoadBalancer.Arn, + * _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: frontEnd.Arn, * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * DefaultActions: lb.ListenerDefaultActionArray{ @@ -2281,7 +2281,7 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * @@ -2292,7 +2292,7 @@ export namespace lb { * var domain = new UserPoolDomain("domain"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions( @@ -2315,10 +2315,12 @@ export namespace lb { * ``` * ```yaml * resources: - * frontEndLoadBalancer: + * frontEnd: * type: aws:lb:LoadBalancer + * name: front_end * frontEndTargetGroup: * type: aws:lb:TargetGroup + * name: front_end * pool: * type: aws:cognito:UserPool * client: @@ -2327,8 +2329,9 @@ export namespace lb { * type: aws:cognito:UserPoolDomain * frontEndListener: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${frontEndLoadBalancer.arn} + * loadBalancerArn: ${frontEnd.arn} * port: '80' * protocol: HTTP * defaultActions: @@ -2340,20 +2343,19 @@ export namespace lb { * - type: forward * targetGroupArn: ${frontEndTargetGroup.arn} * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Authenticate-OIDC Action * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - * // ... - * const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - * // ... - * const frontEndListener = new aws.lb.Listener("frontEndListener", { - * loadBalancerArn: frontEndLoadBalancer.arn, + * const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + * const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + * const frontEndListener = new aws.lb.Listener("front_end", { + * loadBalancerArn: frontEnd.arn, * port: 80, * protocol: "HTTP", * defaultActions: [ @@ -2379,12 +2381,10 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - * # ... - * front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - * # ... - * front_end_listener = aws.lb.Listener("frontEndListener", - * load_balancer_arn=front_end_load_balancer.arn, + * front_end = aws.lb.LoadBalancer("front_end") + * front_end_target_group = aws.lb.TargetGroup("front_end") + * front_end_listener = aws.lb.Listener("front_end", + * load_balancer_arn=front_end.arn, * port=80, * protocol="HTTP", * default_actions=[ @@ -2413,15 +2413,13 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new Aws.LB.LoadBalancer("front_end"); * - * // ... - * var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + * var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); * - * // ... - * var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + * var frontEndListener = new Aws.LB.Listener("front_end", new() * { - * LoadBalancerArn = frontEndLoadBalancer.Arn, + * LoadBalancerArn = frontEnd.Arn, * Port = 80, * Protocol = "HTTP", * DefaultActions = new[] @@ -2459,16 +2457,16 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + * frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) * if err != nil { * return err * } - * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + * frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - * LoadBalancerArn: frontEndLoadBalancer.Arn, + * _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + * LoadBalancerArn: frontEnd.Arn, * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * DefaultActions: lb.ListenerDefaultActionArray{ @@ -2521,12 +2519,12 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + * var frontEnd = new LoadBalancer("frontEnd"); * * var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); * * var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - * .loadBalancerArn(frontEndLoadBalancer.arn()) + * .loadBalancerArn(frontEnd.arn()) * .port("80") * .protocol("HTTP") * .defaultActions( @@ -2552,14 +2550,17 @@ export namespace lb { * ``` * ```yaml * resources: - * frontEndLoadBalancer: + * frontEnd: * type: aws:lb:LoadBalancer + * name: front_end * frontEndTargetGroup: * type: aws:lb:TargetGroup + * name: front_end * frontEndListener: * type: aws:lb:Listener + * name: front_end * properties: - * loadBalancerArn: ${frontEndLoadBalancer.arn} + * loadBalancerArn: ${frontEnd.arn} * port: '80' * protocol: HTTP * defaultActions: @@ -2574,31 +2575,34 @@ export namespace lb { * - type: forward * targetGroupArn: ${frontEndTargetGroup.arn} * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Gateway Load Balancer Listener * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const exampleLoadBalancer = new aws.lb.LoadBalancer("exampleLoadBalancer", { + * const example = new aws.lb.LoadBalancer("example", { * loadBalancerType: "gateway", + * name: "example", * subnetMappings: [{ - * subnetId: aws_subnet.example.id, + * subnetId: exampleAwsSubnet.id, * }], * }); - * const exampleTargetGroup = new aws.lb.TargetGroup("exampleTargetGroup", { + * const exampleTargetGroup = new aws.lb.TargetGroup("example", { + * name: "example", * port: 6081, * protocol: "GENEVE", - * vpcId: aws_vpc.example.id, + * vpcId: exampleAwsVpc.id, * healthCheck: { * port: "80", * protocol: "HTTP", * }, * }); - * const exampleListener = new aws.lb.Listener("exampleListener", { - * loadBalancerArn: exampleLoadBalancer.id, + * const exampleListener = new aws.lb.Listener("example", { + * loadBalancerArn: example.id, * defaultActions: [{ * targetGroupArn: exampleTargetGroup.id, * type: "forward", @@ -2609,21 +2613,23 @@ export namespace lb { * import pulumi * import pulumi_aws as aws * - * example_load_balancer = aws.lb.LoadBalancer("exampleLoadBalancer", + * example = aws.lb.LoadBalancer("example", * load_balancer_type="gateway", + * name="example", * subnet_mappings=[aws.lb.LoadBalancerSubnetMappingArgs( - * subnet_id=aws_subnet["example"]["id"], + * subnet_id=example_aws_subnet["id"], * )]) - * example_target_group = aws.lb.TargetGroup("exampleTargetGroup", + * example_target_group = aws.lb.TargetGroup("example", + * name="example", * port=6081, * protocol="GENEVE", - * vpc_id=aws_vpc["example"]["id"], + * vpc_id=example_aws_vpc["id"], * health_check=aws.lb.TargetGroupHealthCheckArgs( * port="80", * protocol="HTTP", * )) - * example_listener = aws.lb.Listener("exampleListener", - * load_balancer_arn=example_load_balancer.id, + * example_listener = aws.lb.Listener("example", + * load_balancer_arn=example.id, * default_actions=[aws.lb.ListenerDefaultActionArgs( * target_group_arn=example_target_group.id, * type="forward", @@ -2637,23 +2643,25 @@ export namespace lb { * * return await Deployment.RunAsync(() => * { - * var exampleLoadBalancer = new Aws.LB.LoadBalancer("exampleLoadBalancer", new() + * var example = new Aws.LB.LoadBalancer("example", new() * { * LoadBalancerType = "gateway", + * Name = "example", * SubnetMappings = new[] * { * new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs * { - * SubnetId = aws_subnet.Example.Id, + * SubnetId = exampleAwsSubnet.Id, * }, * }, * }); * - * var exampleTargetGroup = new Aws.LB.TargetGroup("exampleTargetGroup", new() + * var exampleTargetGroup = new Aws.LB.TargetGroup("example", new() * { + * Name = "example", * Port = 6081, * Protocol = "GENEVE", - * VpcId = aws_vpc.Example.Id, + * VpcId = exampleAwsVpc.Id, * HealthCheck = new Aws.LB.Inputs.TargetGroupHealthCheckArgs * { * Port = "80", @@ -2661,9 +2669,9 @@ export namespace lb { * }, * }); * - * var exampleListener = new Aws.LB.Listener("exampleListener", new() + * var exampleListener = new Aws.LB.Listener("example", new() * { - * LoadBalancerArn = exampleLoadBalancer.Id, + * LoadBalancerArn = example.Id, * DefaultActions = new[] * { * new Aws.LB.Inputs.ListenerDefaultActionArgs @@ -2686,21 +2694,23 @@ export namespace lb { * * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { - * exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ + * example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ * LoadBalancerType: pulumi.String("gateway"), + * Name: pulumi.String("example"), * SubnetMappings: lb.LoadBalancerSubnetMappingArray{ * &lb.LoadBalancerSubnetMappingArgs{ - * SubnetId: pulumi.Any(aws_subnet.Example.Id), + * SubnetId: pulumi.Any(exampleAwsSubnet.Id), * }, * }, * }) * if err != nil { * return err * } - * exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ + * exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ + * Name: pulumi.String("example"), * Port: pulumi.Int(6081), * Protocol: pulumi.String("GENEVE"), - * VpcId: pulumi.Any(aws_vpc.Example.Id), + * VpcId: pulumi.Any(exampleAwsVpc.Id), * HealthCheck: &lb.TargetGroupHealthCheckArgs{ * Port: pulumi.String("80"), * Protocol: pulumi.String("HTTP"), @@ -2709,8 +2719,8 @@ export namespace lb { * if err != nil { * return err * } - * _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ - * LoadBalancerArn: exampleLoadBalancer.ID(), + * _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + * LoadBalancerArn: example.ID(), * DefaultActions: lb.ListenerDefaultActionArray{ * &lb.ListenerDefaultActionArgs{ * TargetGroupArn: exampleTargetGroup.ID(), @@ -2753,17 +2763,19 @@ export namespace lb { * } * * public static void stack(Context ctx) { - * var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder() + * var example = new LoadBalancer("example", LoadBalancerArgs.builder() * .loadBalancerType("gateway") + * .name("example") * .subnetMappings(LoadBalancerSubnetMappingArgs.builder() - * .subnetId(aws_subnet.example().id()) + * .subnetId(exampleAwsSubnet.id()) * .build()) * .build()); * * var exampleTargetGroup = new TargetGroup("exampleTargetGroup", TargetGroupArgs.builder() + * .name("example") * .port(6081) * .protocol("GENEVE") - * .vpcId(aws_vpc.example().id()) + * .vpcId(exampleAwsVpc.id()) * .healthCheck(TargetGroupHealthCheckArgs.builder() * .port(80) * .protocol("HTTP") @@ -2771,7 +2783,7 @@ export namespace lb { * .build()); * * var exampleListener = new Listener("exampleListener", ListenerArgs.builder() - * .loadBalancerArn(exampleLoadBalancer.id()) + * .loadBalancerArn(example.id()) * .defaultActions(ListenerDefaultActionArgs.builder() * .targetGroupArn(exampleTargetGroup.id()) * .type("forward") @@ -2783,40 +2795,225 @@ export namespace lb { * ``` * ```yaml * resources: - * exampleLoadBalancer: + * example: * type: aws:lb:LoadBalancer * properties: * loadBalancerType: gateway + * name: example * subnetMappings: - * - subnetId: ${aws_subnet.example.id} + * - subnetId: ${exampleAwsSubnet.id} * exampleTargetGroup: * type: aws:lb:TargetGroup + * name: example * properties: + * name: example * port: 6081 * protocol: GENEVE - * vpcId: ${aws_vpc.example.id} + * vpcId: ${exampleAwsVpc.id} * healthCheck: * port: 80 * protocol: HTTP * exampleListener: * type: aws:lb:Listener + * name: example + * properties: + * loadBalancerArn: ${example.id} + * defaultActions: + * - targetGroupArn: ${exampleTargetGroup.id} + * type: forward + * ``` + * + * + * ### Mutual TLS Authentication + * + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as aws from "@pulumi/aws"; + * + * const example = new aws.lb.LoadBalancer("example", {loadBalancerType: "application"}); + * const exampleTargetGroup = new aws.lb.TargetGroup("example", {}); + * const exampleListener = new aws.lb.Listener("example", { + * loadBalancerArn: example.id, + * defaultActions: [{ + * targetGroupArn: exampleTargetGroup.id, + * type: "forward", + * }], + * mutualAuthentication: { + * mode: "verify", + * trustStoreArn: "...", + * }, + * }); + * ``` + * ```python + * import pulumi + * import pulumi_aws as aws + * + * example = aws.lb.LoadBalancer("example", load_balancer_type="application") + * example_target_group = aws.lb.TargetGroup("example") + * example_listener = aws.lb.Listener("example", + * load_balancer_arn=example.id, + * default_actions=[aws.lb.ListenerDefaultActionArgs( + * target_group_arn=example_target_group.id, + * type="forward", + * )], + * mutual_authentication=aws.lb.ListenerMutualAuthenticationArgs( + * mode="verify", + * trust_store_arn="...", + * )) + * ``` + * ```csharp + * using System.Collections.Generic; + * using System.Linq; + * using Pulumi; + * using Aws = Pulumi.Aws; + * + * return await Deployment.RunAsync(() => + * { + * var example = new Aws.LB.LoadBalancer("example", new() + * { + * LoadBalancerType = "application", + * }); + * + * var exampleTargetGroup = new Aws.LB.TargetGroup("example"); + * + * var exampleListener = new Aws.LB.Listener("example", new() + * { + * LoadBalancerArn = example.Id, + * DefaultActions = new[] + * { + * new Aws.LB.Inputs.ListenerDefaultActionArgs + * { + * TargetGroupArn = exampleTargetGroup.Id, + * Type = "forward", + * }, + * }, + * MutualAuthentication = new Aws.LB.Inputs.ListenerMutualAuthenticationArgs + * { + * Mode = "verify", + * TrustStoreArn = "...", + * }, + * }); + * + * }); + * ``` + * ```go + * package main + * + * import ( + * "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" + * "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + * ) + * + * func main() { + * pulumi.Run(func(ctx *pulumi.Context) error { + * example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ + * LoadBalancerType: pulumi.String("application"), + * }) + * if err != nil { + * return err + * } + * exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) + * if err != nil { + * return err + * } + * _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + * LoadBalancerArn: example.ID(), + * DefaultActions: lb.ListenerDefaultActionArray{ + * &lb.ListenerDefaultActionArgs{ + * TargetGroupArn: exampleTargetGroup.ID(), + * Type: pulumi.String("forward"), + * }, + * }, + * MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ + * Mode: pulumi.String("verify"), + * TrustStoreArn: pulumi.String("..."), + * }, + * }) + * if err != nil { + * return err + * } + * return nil + * }) + * } + * ``` + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.aws.lb.LoadBalancer; + * import com.pulumi.aws.lb.LoadBalancerArgs; + * import com.pulumi.aws.lb.TargetGroup; + * import com.pulumi.aws.lb.Listener; + * import com.pulumi.aws.lb.ListenerArgs; + * import com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs; + * import com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var example = new LoadBalancer("example", LoadBalancerArgs.builder() + * .loadBalancerType("application") + * .build()); + * + * var exampleTargetGroup = new TargetGroup("exampleTargetGroup"); + * + * var exampleListener = new Listener("exampleListener", ListenerArgs.builder() + * .loadBalancerArn(example.id()) + * .defaultActions(ListenerDefaultActionArgs.builder() + * .targetGroupArn(exampleTargetGroup.id()) + * .type("forward") + * .build()) + * .mutualAuthentication(ListenerMutualAuthenticationArgs.builder() + * .mode("verify") + * .trustStoreArn("...") + * .build()) + * .build()); + * + * } + * } + * ``` + * ```yaml + * resources: + * example: + * type: aws:lb:LoadBalancer + * properties: + * loadBalancerType: application + * exampleTargetGroup: + * type: aws:lb:TargetGroup + * name: example + * exampleListener: + * type: aws:lb:Listener + * name: example * properties: - * loadBalancerArn: ${exampleLoadBalancer.id} + * loadBalancerArn: ${example.id} * defaultActions: * - targetGroupArn: ${exampleTargetGroup.id} * type: forward + * mutualAuthentication: + * mode: verify + * trustStoreArn: '...' * ``` - * {{% /example %}} - * {{% /examples %}} + * * * ## Import * * Using `pulumi import`, import listeners using their ARN. For example: * * ```sh - * $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 + * $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 * ``` - * */ export interface ListenerArgs { /** @@ -2831,6 +3028,10 @@ export namespace lb { * Configuration block for default actions. Detailed below. */ defaultActions?: pulumi.Input[]>; + /** + * The mutual authentication configuration information. Detailed below. + */ + mutualAuthentication?: pulumi.Input; /** * Port on which the load balancer is listening. Not valid for Gateway Load Balancers. */ @@ -2856,17 +3057,18 @@ export namespace lb { * * > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. * - * {{% examples %}} * ## Example Usage - * {{% example %}} + * * ### Instance Target Group * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); * const test = new aws.lb.TargetGroup("test", { + * name: "tf-example-lb-tg", * port: 80, * protocol: "HTTP", * vpcId: main.id, @@ -2878,6 +3080,7 @@ export namespace lb { * * main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") * test = aws.lb.TargetGroup("test", + * name="tf-example-lb-tg", * port=80, * protocol="HTTP", * vpc_id=main.id) @@ -2897,6 +3100,7 @@ export namespace lb { * * var test = new Aws.LB.TargetGroup("test", new() * { + * Name = "tf-example-lb-tg", * Port = 80, * Protocol = "HTTP", * VpcId = main.Id, @@ -2922,6 +3126,7 @@ export namespace lb { * return err * } * _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ + * Name: pulumi.String("tf-example-lb-tg"), * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * VpcId: main.ID(), @@ -2961,6 +3166,7 @@ export namespace lb { * .build()); * * var test = new TargetGroup("test", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .port(80) * .protocol("HTTP") * .vpcId(main.id()) @@ -2974,6 +3180,7 @@ export namespace lb { * test: * type: aws:lb:TargetGroup * properties: + * name: tf-example-lb-tg * port: 80 * protocol: HTTP * vpcId: ${main.id} @@ -2982,16 +3189,18 @@ export namespace lb { * properties: * cidrBlock: 10.0.0.0/16 * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### IP Target Group * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); * const ip_example = new aws.lb.TargetGroup("ip-example", { + * name: "tf-example-lb-tg", * port: 80, * protocol: "HTTP", * targetType: "ip", @@ -3004,6 +3213,7 @@ export namespace lb { * * main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") * ip_example = aws.lb.TargetGroup("ip-example", + * name="tf-example-lb-tg", * port=80, * protocol="HTTP", * target_type="ip", @@ -3024,6 +3234,7 @@ export namespace lb { * * var ip_example = new Aws.LB.TargetGroup("ip-example", new() * { + * Name = "tf-example-lb-tg", * Port = 80, * Protocol = "HTTP", * TargetType = "ip", @@ -3050,6 +3261,7 @@ export namespace lb { * return err * } * _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ + * Name: pulumi.String("tf-example-lb-tg"), * Port: pulumi.Int(80), * Protocol: pulumi.String("HTTP"), * TargetType: pulumi.String("ip"), @@ -3090,6 +3302,7 @@ export namespace lb { * .build()); * * var ip_example = new TargetGroup("ip-example", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .port(80) * .protocol("HTTP") * .targetType("ip") @@ -3104,6 +3317,7 @@ export namespace lb { * ip-example: * type: aws:lb:TargetGroup * properties: + * name: tf-example-lb-tg * port: 80 * protocol: HTTP * targetType: ip @@ -3113,21 +3327,27 @@ export namespace lb { * properties: * cidrBlock: 10.0.0.0/16 * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Lambda Target Group * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * - * const lambda_example = new aws.lb.TargetGroup("lambda-example", {targetType: "lambda"}); + * const lambda_example = new aws.lb.TargetGroup("lambda-example", { + * name: "tf-example-lb-tg", + * targetType: "lambda", + * }); * ``` * ```python * import pulumi * import pulumi_aws as aws * - * lambda_example = aws.lb.TargetGroup("lambda-example", target_type="lambda") + * lambda_example = aws.lb.TargetGroup("lambda-example", + * name="tf-example-lb-tg", + * target_type="lambda") * ``` * ```csharp * using System.Collections.Generic; @@ -3139,6 +3359,7 @@ export namespace lb { * { * var lambda_example = new Aws.LB.TargetGroup("lambda-example", new() * { + * Name = "tf-example-lb-tg", * TargetType = "lambda", * }); * @@ -3155,6 +3376,7 @@ export namespace lb { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ + * Name: pulumi.String("tf-example-lb-tg"), * TargetType: pulumi.String("lambda"), * }) * if err != nil { @@ -3186,6 +3408,7 @@ export namespace lb { * * public static void stack(Context ctx) { * var lambda_example = new TargetGroup("lambda-example", TargetGroupArgs.builder() + * .name("tf-example-lb-tg") * .targetType("lambda") * .build()); * @@ -3197,21 +3420,24 @@ export namespace lb { * lambda-example: * type: aws:lb:TargetGroup * properties: + * name: tf-example-lb-tg * targetType: lambda * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### ALB Target Group * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const alb_example = new aws.lb.TargetGroup("alb-example", { + * name: "tf-example-lb-alb-tg", * targetType: "alb", * port: 80, * protocol: "TCP", - * vpcId: aws_vpc.main.id, + * vpcId: main.id, * }); * ``` * ```python @@ -3219,10 +3445,11 @@ export namespace lb { * import pulumi_aws as aws * * alb_example = aws.lb.TargetGroup("alb-example", + * name="tf-example-lb-alb-tg", * target_type="alb", * port=80, * protocol="TCP", - * vpc_id=aws_vpc["main"]["id"]) + * vpc_id=main["id"]) * ``` * ```csharp * using System.Collections.Generic; @@ -3234,10 +3461,11 @@ export namespace lb { * { * var alb_example = new Aws.LB.TargetGroup("alb-example", new() * { + * Name = "tf-example-lb-alb-tg", * TargetType = "alb", * Port = 80, * Protocol = "TCP", - * VpcId = aws_vpc.Main.Id, + * VpcId = main.Id, * }); * * }); @@ -3253,10 +3481,11 @@ export namespace lb { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ + * Name: pulumi.String("tf-example-lb-alb-tg"), * TargetType: pulumi.String("alb"), * Port: pulumi.Int(80), * Protocol: pulumi.String("TCP"), - * VpcId: pulumi.Any(aws_vpc.Main.Id), + * VpcId: pulumi.Any(main.Id), * }) * if err != nil { * return err @@ -3287,10 +3516,11 @@ export namespace lb { * * public static void stack(Context ctx) { * var alb_example = new TargetGroup("alb-example", TargetGroupArgs.builder() + * .name("tf-example-lb-alb-tg") * .targetType("alb") * .port(80) * .protocol("TCP") - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .build()); * * } @@ -3301,23 +3531,26 @@ export namespace lb { * alb-example: * type: aws:lb:TargetGroup * properties: + * name: tf-example-lb-alb-tg * targetType: alb * port: 80 * protocol: TCP - * vpcId: ${aws_vpc.main.id} + * vpcId: ${main.id} * ``` - * {{% /example %}} - * {{% example %}} + * + * * ### Target group with unhealthy connection termination disabled * + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const tcp_example = new aws.lb.TargetGroup("tcp-example", { + * name: "tf-example-lb-nlb-tg", * port: 25, * protocol: "TCP", - * vpcId: aws_vpc.main.id, + * vpcId: main.id, * targetHealthStates: [{ * enableUnhealthyConnectionTermination: false, * }], @@ -3328,9 +3561,10 @@ export namespace lb { * import pulumi_aws as aws * * tcp_example = aws.lb.TargetGroup("tcp-example", + * name="tf-example-lb-nlb-tg", * port=25, * protocol="TCP", - * vpc_id=aws_vpc["main"]["id"], + * vpc_id=main["id"], * target_health_states=[aws.lb.TargetGroupTargetHealthStateArgs( * enable_unhealthy_connection_termination=False, * )]) @@ -3345,9 +3579,10 @@ export namespace lb { * { * var tcp_example = new Aws.LB.TargetGroup("tcp-example", new() * { + * Name = "tf-example-lb-nlb-tg", * Port = 25, * Protocol = "TCP", - * VpcId = aws_vpc.Main.Id, + * VpcId = main.Id, * TargetHealthStates = new[] * { * new Aws.LB.Inputs.TargetGroupTargetHealthStateArgs @@ -3370,9 +3605,10 @@ export namespace lb { * func main() { * pulumi.Run(func(ctx *pulumi.Context) error { * _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ + * Name: pulumi.String("tf-example-lb-nlb-tg"), * Port: pulumi.Int(25), * Protocol: pulumi.String("TCP"), - * VpcId: pulumi.Any(aws_vpc.Main.Id), + * VpcId: pulumi.Any(main.Id), * TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ * &lb.TargetGroupTargetHealthStateArgs{ * EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -3409,9 +3645,10 @@ export namespace lb { * * public static void stack(Context ctx) { * var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder() + * .name("tf-example-lb-nlb-tg") * .port(25) * .protocol("TCP") - * .vpcId(aws_vpc.main().id()) + * .vpcId(main.id()) * .targetHealthStates(TargetGroupTargetHealthStateArgs.builder() * .enableUnhealthyConnectionTermination(false) * .build()) @@ -3425,23 +3662,22 @@ export namespace lb { * tcp-example: * type: aws:lb:TargetGroup * properties: + * name: tf-example-lb-nlb-tg * port: 25 * protocol: TCP - * vpcId: ${aws_vpc.main.id} + * vpcId: ${main.id} * targetHealthStates: * - enableUnhealthyConnectionTermination: false * ``` - * {{% /example %}} - * {{% /examples %}} + * * * ## Import * * Using `pulumi import`, import Target Groups using their ARN. For example: * * ```sh - * $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 + * $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 * ``` - * */ export interface TargetGroupArgs { /** @@ -3465,9 +3701,13 @@ export namespace lb { */ lambdaMultiValueHeadersEnabled?: pulumi.Input; /** - * Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + * Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. */ loadBalancingAlgorithmType?: pulumi.Input; + /** + * Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + */ + loadBalancingAnomalyMitigation?: pulumi.Input; /** * Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. */ @@ -3489,7 +3729,10 @@ export namespace lb { */ preserveClientIp?: pulumi.Input; /** - * Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + * Protocol to use for routing traffic to the targets. + * Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + * Required when `target_type` is `instance`, `ip`, or `alb`. + * Does not apply when `target_type` is `lambda`. */ protocol?: pulumi.Input; /** @@ -3521,7 +3764,9 @@ export namespace lb { */ targetHealthStates?: pulumi.Input[]>; /** - * Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + * Type of target that you must specify when registering targets with this target group. + * See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + * The default is `instance`. * * Note that you can't specify targets for a target group using both instance IDs and IP addresses. * diff --git a/sdk/python/pulumi_awsx/awsx/_inputs.py b/sdk/python/pulumi_awsx/awsx/_inputs.py index 2c894b3d4..fc11cd48d 100644 --- a/sdk/python/pulumi_awsx/awsx/_inputs.py +++ b/sdk/python/pulumi_awsx/awsx/_inputs.py @@ -646,6 +646,7 @@ def region(self, value: Optional[pulumi.Input[str]]): class LogGroupArgs: def __init__(__self__, *, kms_key_id: Optional[pulumi.Input[str]] = None, + log_group_class: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, retention_in_days: Optional[pulumi.Input[int]] = None, @@ -656,6 +657,7 @@ def __init__(__self__, *, :param pulumi.Input[str] kms_key_id: 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, AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires permissions for the CMK whenever the encrypted data is requested. + :param pulumi.Input[str] log_group_class: Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. :param pulumi.Input[str] name: The name of the log group. If omitted, this provider will assign a random, unique name. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. :param pulumi.Input[int] retention_in_days: Specifies the number of days @@ -666,6 +668,8 @@ def __init__(__self__, *, """ if kms_key_id is not None: pulumi.set(__self__, "kms_key_id", kms_key_id) + if log_group_class is not None: + pulumi.set(__self__, "log_group_class", log_group_class) if name is not None: pulumi.set(__self__, "name", name) if name_prefix is not None: @@ -691,6 +695,18 @@ def kms_key_id(self) -> Optional[pulumi.Input[str]]: def kms_key_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "kms_key_id", value) + @property + @pulumi.getter(name="logGroupClass") + def log_group_class(self) -> Optional[pulumi.Input[str]]: + """ + Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + """ + return pulumi.get(self, "log_group_class") + + @log_group_class.setter + def log_group_class(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "log_group_class", value) + @property @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_awsx/ec2/_inputs.py b/sdk/python/pulumi_awsx/ec2/_inputs.py index ca140bc48..d397ed793 100644 --- a/sdk/python/pulumi_awsx/ec2/_inputs.py +++ b/sdk/python/pulumi_awsx/ec2/_inputs.py @@ -184,17 +184,17 @@ def __init__(__self__, *, Do not use the same resource ID in both a VPC Endpoint resource and a VPC Endpoint Association resource. Doing so will cause a conflict of associations and will overwrite the association. - {{% examples %}} ## Example Usage - {{% example %}} + ### Basic + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const s3 = new aws.ec2.VpcEndpoint("s3", { - vpcId: aws_vpc.main.id, + vpcId: main.id, serviceName: "com.amazonaws.us-west-2.s3", }); ``` @@ -203,7 +203,7 @@ def __init__(__self__, *, import pulumi_aws as aws s3 = aws.ec2.VpcEndpoint("s3", - vpc_id=aws_vpc["main"]["id"], + vpc_id=main["id"], service_name="com.amazonaws.us-west-2.s3") ``` ```csharp @@ -216,7 +216,7 @@ def __init__(__self__, *, { var s3 = new Aws.Ec2.VpcEndpoint("s3", new() { - VpcId = aws_vpc.Main.Id, + VpcId = main.Id, ServiceName = "com.amazonaws.us-west-2.s3", }); @@ -233,7 +233,7 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - VpcId: pulumi.Any(aws_vpc.Main.Id), + VpcId: pulumi.Any(main.Id), ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), }) if err != nil { @@ -265,7 +265,7 @@ def __init__(__self__, *, public static void stack(Context ctx) { var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - .vpcId(aws_vpc.main().id()) + .vpcId(main.id()) .serviceName("com.amazonaws.us-west-2.s3") .build()); @@ -277,19 +277,20 @@ def __init__(__self__, *, s3: type: aws:ec2:VpcEndpoint properties: - vpcId: ${aws_vpc.main.id} + vpcId: ${main.id} serviceName: com.amazonaws.us-west-2.s3 ``` - {{% /example %}} - {{% example %}} + + ### Basic w/ Tags + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const s3 = new aws.ec2.VpcEndpoint("s3", { - vpcId: aws_vpc.main.id, + vpcId: main.id, serviceName: "com.amazonaws.us-west-2.s3", tags: { Environment: "test", @@ -301,7 +302,7 @@ def __init__(__self__, *, import pulumi_aws as aws s3 = aws.ec2.VpcEndpoint("s3", - vpc_id=aws_vpc["main"]["id"], + vpc_id=main["id"], service_name="com.amazonaws.us-west-2.s3", tags={ "Environment": "test", @@ -317,7 +318,7 @@ def __init__(__self__, *, { var s3 = new Aws.Ec2.VpcEndpoint("s3", new() { - VpcId = aws_vpc.Main.Id, + VpcId = main.Id, ServiceName = "com.amazonaws.us-west-2.s3", Tags = { @@ -338,7 +339,7 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := ec2.NewVpcEndpoint(ctx, "s3", &ec2.VpcEndpointArgs{ - VpcId: pulumi.Any(aws_vpc.Main.Id), + VpcId: pulumi.Any(main.Id), ServiceName: pulumi.String("com.amazonaws.us-west-2.s3"), Tags: pulumi.StringMap{ "Environment": pulumi.String("test"), @@ -373,7 +374,7 @@ def __init__(__self__, *, public static void stack(Context ctx) { var s3 = new VpcEndpoint("s3", VpcEndpointArgs.builder() - .vpcId(aws_vpc.main().id()) + .vpcId(main.id()) .serviceName("com.amazonaws.us-west-2.s3") .tags(Map.of("Environment", "test")) .build()); @@ -386,24 +387,25 @@ def __init__(__self__, *, s3: type: aws:ec2:VpcEndpoint properties: - vpcId: ${aws_vpc.main.id} + vpcId: ${main.id} serviceName: com.amazonaws.us-west-2.s3 tags: Environment: test ``` - {{% /example %}} - {{% example %}} + + ### Interface Endpoint Type + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const ec2 = new aws.ec2.VpcEndpoint("ec2", { - vpcId: aws_vpc.main.id, + vpcId: main.id, serviceName: "com.amazonaws.us-west-2.ec2", vpcEndpointType: "Interface", - securityGroupIds: [aws_security_group.sg1.id], + securityGroupIds: [sg1.id], privateDnsEnabled: true, }); ``` @@ -412,10 +414,10 @@ def __init__(__self__, *, import pulumi_aws as aws ec2 = aws.ec2.VpcEndpoint("ec2", - vpc_id=aws_vpc["main"]["id"], + vpc_id=main["id"], service_name="com.amazonaws.us-west-2.ec2", vpc_endpoint_type="Interface", - security_group_ids=[aws_security_group["sg1"]["id"]], + security_group_ids=[sg1["id"]], private_dns_enabled=True) ``` ```csharp @@ -428,12 +430,12 @@ def __init__(__self__, *, { var ec2 = new Aws.Ec2.VpcEndpoint("ec2", new() { - VpcId = aws_vpc.Main.Id, + VpcId = main.Id, ServiceName = "com.amazonaws.us-west-2.ec2", VpcEndpointType = "Interface", SecurityGroupIds = new[] { - aws_security_group.Sg1.Id, + sg1.Id, }, PrivateDnsEnabled = true, }); @@ -451,11 +453,11 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := ec2.NewVpcEndpoint(ctx, "ec2", &ec2.VpcEndpointArgs{ - VpcId: pulumi.Any(aws_vpc.Main.Id), + VpcId: pulumi.Any(main.Id), ServiceName: pulumi.String("com.amazonaws.us-west-2.ec2"), VpcEndpointType: pulumi.String("Interface"), SecurityGroupIds: pulumi.StringArray{ - aws_security_group.Sg1.Id, + sg1.Id, }, PrivateDnsEnabled: pulumi.Bool(true), }) @@ -488,10 +490,10 @@ def __init__(__self__, *, public static void stack(Context ctx) { var ec2 = new VpcEndpoint("ec2", VpcEndpointArgs.builder() - .vpcId(aws_vpc.main().id()) + .vpcId(main.id()) .serviceName("com.amazonaws.us-west-2.ec2") .vpcEndpointType("Interface") - .securityGroupIds(aws_security_group.sg1().id()) + .securityGroupIds(sg1.id()) .privateDnsEnabled(true) .build()); @@ -503,32 +505,33 @@ def __init__(__self__, *, ec2: type: aws:ec2:VpcEndpoint properties: - vpcId: ${aws_vpc.main.id} + vpcId: ${main.id} serviceName: com.amazonaws.us-west-2.ec2 vpcEndpointType: Interface securityGroupIds: - - ${aws_security_group.sg1.id} + - ${sg1.id} privateDnsEnabled: true ``` - {{% /example %}} - {{% example %}} + + ### Gateway Load Balancer Endpoint Type + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const current = aws.getCallerIdentity({}); - const exampleVpcEndpointService = new aws.ec2.VpcEndpointService("exampleVpcEndpointService", { + const example = new aws.ec2.VpcEndpointService("example", { acceptanceRequired: false, allowedPrincipals: [current.then(current => current.arn)], - gatewayLoadBalancerArns: [aws_lb.example.arn], + gatewayLoadBalancerArns: [exampleAwsLb.arn], }); - const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("exampleVpcEndpoint", { - serviceName: exampleVpcEndpointService.serviceName, - subnetIds: [aws_subnet.example.id], - vpcEndpointType: exampleVpcEndpointService.serviceType, - vpcId: aws_vpc.example.id, + const exampleVpcEndpoint = new aws.ec2.VpcEndpoint("example", { + serviceName: example.serviceName, + subnetIds: [exampleAwsSubnet.id], + vpcEndpointType: example.serviceType, + vpcId: exampleAwsVpc.id, }); ``` ```python @@ -536,15 +539,15 @@ def __init__(__self__, *, import pulumi_aws as aws current = aws.get_caller_identity() - example_vpc_endpoint_service = aws.ec2.VpcEndpointService("exampleVpcEndpointService", + example = aws.ec2.VpcEndpointService("example", acceptance_required=False, allowed_principals=[current.arn], - gateway_load_balancer_arns=[aws_lb["example"]["arn"]]) - example_vpc_endpoint = aws.ec2.VpcEndpoint("exampleVpcEndpoint", - service_name=example_vpc_endpoint_service.service_name, - subnet_ids=[aws_subnet["example"]["id"]], - vpc_endpoint_type=example_vpc_endpoint_service.service_type, - vpc_id=aws_vpc["example"]["id"]) + gateway_load_balancer_arns=[example_aws_lb["arn"]]) + example_vpc_endpoint = aws.ec2.VpcEndpoint("example", + service_name=example.service_name, + subnet_ids=[example_aws_subnet["id"]], + vpc_endpoint_type=example.service_type, + vpc_id=example_aws_vpc["id"]) ``` ```csharp using System.Collections.Generic; @@ -556,7 +559,7 @@ def __init__(__self__, *, { var current = Aws.GetCallerIdentity.Invoke(); - var exampleVpcEndpointService = new Aws.Ec2.VpcEndpointService("exampleVpcEndpointService", new() + var example = new Aws.Ec2.VpcEndpointService("example", new() { AcceptanceRequired = false, AllowedPrincipals = new[] @@ -565,19 +568,19 @@ def __init__(__self__, *, }, GatewayLoadBalancerArns = new[] { - aws_lb.Example.Arn, + exampleAwsLb.Arn, }, }); - var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("exampleVpcEndpoint", new() + var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint("example", new() { - ServiceName = exampleVpcEndpointService.ServiceName, + ServiceName = example.ServiceName, SubnetIds = new[] { - aws_subnet.Example.Id, + exampleAwsSubnet.Id, }, - VpcEndpointType = exampleVpcEndpointService.ServiceType, - VpcId = aws_vpc.Example.Id, + VpcEndpointType = example.ServiceType, + VpcId = exampleAwsVpc.Id, }); }); @@ -597,25 +600,25 @@ def __init__(__self__, *, if err != nil { return err } - exampleVpcEndpointService, err := ec2.NewVpcEndpointService(ctx, "exampleVpcEndpointService", &ec2.VpcEndpointServiceArgs{ + example, err := ec2.NewVpcEndpointService(ctx, "example", &ec2.VpcEndpointServiceArgs{ AcceptanceRequired: pulumi.Bool(false), AllowedPrincipals: pulumi.StringArray{ - *pulumi.String(current.Arn), + pulumi.String(current.Arn), }, GatewayLoadBalancerArns: pulumi.StringArray{ - aws_lb.Example.Arn, + exampleAwsLb.Arn, }, }) if err != nil { return err } - _, err = ec2.NewVpcEndpoint(ctx, "exampleVpcEndpoint", &ec2.VpcEndpointArgs{ - ServiceName: exampleVpcEndpointService.ServiceName, + _, err = ec2.NewVpcEndpoint(ctx, "example", &ec2.VpcEndpointArgs{ + ServiceName: example.ServiceName, SubnetIds: pulumi.StringArray{ - aws_subnet.Example.Id, + exampleAwsSubnet.Id, }, - VpcEndpointType: exampleVpcEndpointService.ServiceType, - VpcId: pulumi.Any(aws_vpc.Example.Id), + VpcEndpointType: example.ServiceType, + VpcId: pulumi.Any(exampleAwsVpc.Id), }) if err != nil { return err @@ -651,17 +654,17 @@ def __init__(__self__, *, public static void stack(Context ctx) { final var current = AwsFunctions.getCallerIdentity(); - var exampleVpcEndpointService = new VpcEndpointService("exampleVpcEndpointService", VpcEndpointServiceArgs.builder() + var example = new VpcEndpointService("example", VpcEndpointServiceArgs.builder() .acceptanceRequired(false) .allowedPrincipals(current.applyValue(getCallerIdentityResult -> getCallerIdentityResult.arn())) - .gatewayLoadBalancerArns(aws_lb.example().arn()) + .gatewayLoadBalancerArns(exampleAwsLb.arn()) .build()); var exampleVpcEndpoint = new VpcEndpoint("exampleVpcEndpoint", VpcEndpointArgs.builder() - .serviceName(exampleVpcEndpointService.serviceName()) - .subnetIds(aws_subnet.example().id()) - .vpcEndpointType(exampleVpcEndpointService.serviceType()) - .vpcId(aws_vpc.example().id()) + .serviceName(example.serviceName()) + .subnetIds(exampleAwsSubnet.id()) + .vpcEndpointType(example.serviceType()) + .vpcId(exampleAwsVpc.id()) .build()); } @@ -669,39 +672,39 @@ def __init__(__self__, *, ``` ```yaml resources: - exampleVpcEndpointService: + example: type: aws:ec2:VpcEndpointService properties: acceptanceRequired: false allowedPrincipals: - ${current.arn} gatewayLoadBalancerArns: - - ${aws_lb.example.arn} + - ${exampleAwsLb.arn} exampleVpcEndpoint: type: aws:ec2:VpcEndpoint + name: example properties: - serviceName: ${exampleVpcEndpointService.serviceName} + serviceName: ${example.serviceName} subnetIds: - - ${aws_subnet.example.id} - vpcEndpointType: ${exampleVpcEndpointService.serviceType} - vpcId: ${aws_vpc.example.id} + - ${exampleAwsSubnet.id} + vpcEndpointType: ${example.serviceType} + vpcId: ${exampleAwsVpc.id} variables: current: fn::invoke: Function: aws:getCallerIdentity Arguments: {} ``` - {{% /example %}} - {{% /examples %}} + ## Import Using `pulumi import`, import VPC Endpoints using the VPC endpoint `id`. For example: ```sh - $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 + $ pulumi import aws:ec2/vpcEndpoint:VpcEndpoint endpoint1 vpce-3ecf2a57 ``` - + :param str service_name: The service name. For AWS services the service name is usually in the form `com.amazonaws..` (the SageMaker Notebook service is an exception to this rule, the service name is in the form `aws.sagemaker..notebook`). :param bool auto_accept: Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account). :param pulumi.Input['pulumi_aws.ec2.VpcEndpointDnsOptionsArgs'] dns_options: The DNS options for the endpoint. See dns_options below. diff --git a/sdk/python/pulumi_awsx/ecs/_inputs.py b/sdk/python/pulumi_awsx/ecs/_inputs.py index 7d2b1ed10..d507f4f3c 100644 --- a/sdk/python/pulumi_awsx/ecs/_inputs.py +++ b/sdk/python/pulumi_awsx/ecs/_inputs.py @@ -58,6 +58,7 @@ def __init__(__self__, *, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional['_awsx.DefaultRoleWithPolicyArgs'] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] = None): """ Create a TaskDefinition resource with the given unique name, arguments, and options. @@ -90,6 +91,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param '_awsx.DefaultRoleWithPolicyArgs' task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ if container is not None: @@ -128,6 +130,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags", tags) if task_role is not None: pulumi.set(__self__, "task_role", task_role) + if track_latest is not None: + pulumi.set(__self__, "track_latest", track_latest) if volumes is not None: pulumi.set(__self__, "volumes", volumes) @@ -356,6 +360,18 @@ def task_role(self) -> Optional['_awsx.DefaultRoleWithPolicyArgs']: def task_role(self, value: Optional['_awsx.DefaultRoleWithPolicyArgs']): pulumi.set(self, "task_role", value) + @property + @pulumi.getter(name="trackLatest") + def track_latest(self) -> Optional[pulumi.Input[bool]]: + """ + Whether should track latest task definition or the one created with the resource. Default is `false`. + """ + return pulumi.get(self, "track_latest") + + @track_latest.setter + def track_latest(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "track_latest", value) + @property @pulumi.getter def volumes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]: @@ -389,6 +405,7 @@ def __init__(__self__, *, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional['_awsx.DefaultRoleWithPolicyArgs'] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] = None): """ Create a TaskDefinition resource with the given unique name, arguments, and options. @@ -420,6 +437,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param '_awsx.DefaultRoleWithPolicyArgs' task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ if container is not None: @@ -456,6 +474,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags", tags) if task_role is not None: pulumi.set(__self__, "task_role", task_role) + if track_latest is not None: + pulumi.set(__self__, "track_latest", track_latest) if volumes is not None: pulumi.set(__self__, "volumes", volumes) @@ -672,6 +692,18 @@ def task_role(self) -> Optional['_awsx.DefaultRoleWithPolicyArgs']: def task_role(self, value: Optional['_awsx.DefaultRoleWithPolicyArgs']): pulumi.set(self, "task_role", value) + @property + @pulumi.getter(name="trackLatest") + def track_latest(self) -> Optional[pulumi.Input[bool]]: + """ + Whether should track latest task definition or the one created with the resource. Default is `false`. + """ + return pulumi.get(self, "track_latest") + + @track_latest.setter + def track_latest(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "track_latest", value) + @property @pulumi.getter def volumes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]: diff --git a/sdk/python/pulumi_awsx/ecs/ec2_service.py b/sdk/python/pulumi_awsx/ecs/ec2_service.py index 2c7feee0c..4baa1ef35 100644 --- a/sdk/python/pulumi_awsx/ecs/ec2_service.py +++ b/sdk/python/pulumi_awsx/ecs/ec2_service.py @@ -75,7 +75,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] task_definition: 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. :param 'EC2ServiceTaskDefinitionArgs' task_definition_args: The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ if alarms is not None: pulumi.set(__self__, "alarms", alarms) @@ -450,7 +450,7 @@ def task_definition_args(self, value: Optional['EC2ServiceTaskDefinitionArgs']): @pulumi.getter def triggers(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ - Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ return pulumi.get(self, "triggers") @@ -526,7 +526,7 @@ def __init__(__self__, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] task_definition: 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. :param pulumi.InputType['EC2ServiceTaskDefinitionArgs'] task_definition_args: The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ ... @overload diff --git a/sdk/python/pulumi_awsx/ecs/ec2_task_definition.py b/sdk/python/pulumi_awsx/ecs/ec2_task_definition.py index 16046edad..5da15018f 100644 --- a/sdk/python/pulumi_awsx/ecs/ec2_task_definition.py +++ b/sdk/python/pulumi_awsx/ecs/ec2_task_definition.py @@ -36,6 +36,7 @@ def __init__(__self__, *, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional['_awsx.DefaultRoleWithPolicyArgs'] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] = None): """ The set of arguments for constructing a EC2TaskDefinition resource. @@ -66,6 +67,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param '_awsx.DefaultRoleWithPolicyArgs' task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ if container is not None: @@ -104,6 +106,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags", tags) if task_role is not None: pulumi.set(__self__, "task_role", task_role) + if track_latest is not None: + pulumi.set(__self__, "track_latest", track_latest) if volumes is not None: pulumi.set(__self__, "volumes", volumes) @@ -332,6 +336,18 @@ def task_role(self) -> Optional['_awsx.DefaultRoleWithPolicyArgs']: def task_role(self, value: Optional['_awsx.DefaultRoleWithPolicyArgs']): pulumi.set(self, "task_role", value) + @property + @pulumi.getter(name="trackLatest") + def track_latest(self) -> Optional[pulumi.Input[bool]]: + """ + Whether should track latest task definition or the one created with the resource. Default is `false`. + """ + return pulumi.get(self, "track_latest") + + @track_latest.setter + def track_latest(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "track_latest", value) + @property @pulumi.getter def volumes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]: @@ -368,6 +384,7 @@ def __init__(__self__, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional[pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs']] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]] = None, __props__=None): """ @@ -404,6 +421,7 @@ def __init__(__self__, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs'] task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ ... @@ -450,6 +468,7 @@ def _internal_init(__self__, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional[pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs']] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -480,6 +499,7 @@ def _internal_init(__self__, __props__.__dict__["skip_destroy"] = skip_destroy __props__.__dict__["tags"] = tags __props__.__dict__["task_role"] = task_role + __props__.__dict__["track_latest"] = track_latest __props__.__dict__["volumes"] = volumes __props__.__dict__["load_balancers"] = None __props__.__dict__["task_definition"] = None diff --git a/sdk/python/pulumi_awsx/ecs/fargate_service.py b/sdk/python/pulumi_awsx/ecs/fargate_service.py index c94d27f0f..f546ce878 100644 --- a/sdk/python/pulumi_awsx/ecs/fargate_service.py +++ b/sdk/python/pulumi_awsx/ecs/fargate_service.py @@ -75,7 +75,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] task_definition: 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. :param 'FargateServiceTaskDefinitionArgs' task_definition_args: The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ if alarms is not None: pulumi.set(__self__, "alarms", alarms) @@ -450,7 +450,7 @@ def task_definition_args(self, value: Optional['FargateServiceTaskDefinitionArgs @pulumi.getter def triggers(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ - Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ return pulumi.get(self, "triggers") @@ -526,7 +526,7 @@ def __init__(__self__, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] task_definition: 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. :param pulumi.InputType['FargateServiceTaskDefinitionArgs'] task_definition_args: The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()`. See example above. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] triggers: Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. """ ... @overload diff --git a/sdk/python/pulumi_awsx/ecs/fargate_task_definition.py b/sdk/python/pulumi_awsx/ecs/fargate_task_definition.py index b464944e8..79b232f16 100644 --- a/sdk/python/pulumi_awsx/ecs/fargate_task_definition.py +++ b/sdk/python/pulumi_awsx/ecs/fargate_task_definition.py @@ -35,6 +35,7 @@ def __init__(__self__, *, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional['_awsx.DefaultRoleWithPolicyArgs'] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] = None): """ The set of arguments for constructing a FargateTaskDefinition resource. @@ -64,6 +65,7 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param '_awsx.DefaultRoleWithPolicyArgs' task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ if container is not None: @@ -100,6 +102,8 @@ def __init__(__self__, *, pulumi.set(__self__, "tags", tags) if task_role is not None: pulumi.set(__self__, "task_role", task_role) + if track_latest is not None: + pulumi.set(__self__, "track_latest", track_latest) if volumes is not None: pulumi.set(__self__, "volumes", volumes) @@ -316,6 +320,18 @@ def task_role(self) -> Optional['_awsx.DefaultRoleWithPolicyArgs']: def task_role(self, value: Optional['_awsx.DefaultRoleWithPolicyArgs']): pulumi.set(self, "task_role", value) + @property + @pulumi.getter(name="trackLatest") + def track_latest(self) -> Optional[pulumi.Input[bool]]: + """ + Whether should track latest task definition or the one created with the resource. Default is `false`. + """ + return pulumi.get(self, "track_latest") + + @track_latest.setter + def track_latest(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "track_latest", value) + @property @pulumi.getter def volumes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]: @@ -351,6 +367,7 @@ def __init__(__self__, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional[pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs']] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]] = None, __props__=None): """ @@ -386,6 +403,7 @@ def __init__(__self__, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs'] task_role: IAM role that allows your Amazon ECS container task to make calls to other AWS services. Will be created automatically if not defined. + :param pulumi.Input[bool] track_latest: Whether should track latest task definition or the one created with the resource. Default is `false`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]] volumes: Configuration block for volumes that containers in your task may use. Detailed below. """ ... @@ -431,6 +449,7 @@ def _internal_init(__self__, skip_destroy: Optional[pulumi.Input[bool]] = None, tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, task_role: Optional[pulumi.InputType['_awsx.DefaultRoleWithPolicyArgs']] = None, + track_latest: Optional[pulumi.Input[bool]] = None, volumes: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.ecs.TaskDefinitionVolumeArgs']]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -460,6 +479,7 @@ def _internal_init(__self__, __props__.__dict__["skip_destroy"] = skip_destroy __props__.__dict__["tags"] = tags __props__.__dict__["task_role"] = task_role + __props__.__dict__["track_latest"] = track_latest __props__.__dict__["volumes"] = volumes __props__.__dict__["load_balancers"] = None __props__.__dict__["task_definition"] = None diff --git a/sdk/python/pulumi_awsx/lb/_inputs.py b/sdk/python/pulumi_awsx/lb/_inputs.py index 971876cc4..178c8bbf1 100644 --- a/sdk/python/pulumi_awsx/lb/_inputs.py +++ b/sdk/python/pulumi_awsx/lb/_inputs.py @@ -21,6 +21,7 @@ def __init__(__self__, *, alpn_policy: Optional[pulumi.Input[str]] = None, certificate_arn: Optional[pulumi.Input[str]] = None, default_actions: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.ListenerDefaultActionArgs']]]] = None, + mutual_authentication: Optional[pulumi.Input['pulumi_aws.lb.ListenerMutualAuthenticationArgs']] = None, port: Optional[pulumi.Input[int]] = None, protocol: Optional[pulumi.Input[str]] = None, ssl_policy: Optional[pulumi.Input[str]] = None, @@ -30,21 +31,19 @@ def __init__(__self__, *, > **Note:** `aws.alb.Listener` is known as `aws.lb.Listener`. The functionality is identical. - {{% examples %}} ## Example Usage - {{% example %}} + ### Forward Action + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - // ... - const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - // ... - const frontEndListener = new aws.lb.Listener("frontEndListener", { - loadBalancerArn: frontEndLoadBalancer.arn, + const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + const frontEndListener = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEnd.arn, port: 443, protocol: "HTTPS", sslPolicy: "ELBSecurityPolicy-2016-08", @@ -59,12 +58,10 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - # ... - front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - # ... - front_end_listener = aws.lb.Listener("frontEndListener", - load_balancer_arn=front_end_load_balancer.arn, + front_end = aws.lb.LoadBalancer("front_end") + front_end_target_group = aws.lb.TargetGroup("front_end") + front_end_listener = aws.lb.Listener("front_end", + load_balancer_arn=front_end.arn, port=443, protocol="HTTPS", ssl_policy="ELBSecurityPolicy-2016-08", @@ -82,15 +79,13 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new Aws.LB.LoadBalancer("front_end"); - // ... - var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); - // ... - var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + var frontEndListener = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = frontEndLoadBalancer.Arn, + LoadBalancerArn = frontEnd.Arn, Port = 443, Protocol = "HTTPS", SslPolicy = "ELBSecurityPolicy-2016-08", @@ -117,16 +112,16 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) if err != nil { return err } - frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) if err != nil { return err } - _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - LoadBalancerArn: frontEndLoadBalancer.Arn, + _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: frontEnd.Arn, Port: pulumi.Int(443), Protocol: pulumi.String("HTTPS"), SslPolicy: pulumi.String("ELBSecurityPolicy-2016-08"), @@ -169,12 +164,12 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new LoadBalancer("frontEnd"); var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - .loadBalancerArn(frontEndLoadBalancer.arn()) + .loadBalancerArn(frontEnd.arn()) .port("443") .protocol("HTTPS") .sslPolicy("ELBSecurityPolicy-2016-08") @@ -190,14 +185,17 @@ def __init__(__self__, *, ``` ```yaml resources: - frontEndLoadBalancer: + frontEnd: type: aws:lb:LoadBalancer + name: front_end frontEndTargetGroup: type: aws:lb:TargetGroup + name: front_end frontEndListener: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${frontEndLoadBalancer.arn} + loadBalancerArn: ${frontEnd.arn} port: '443' protocol: HTTPS sslPolicy: ELBSecurityPolicy-2016-08 @@ -206,22 +204,24 @@ def __init__(__self__, *, - type: forward targetGroupArn: ${frontEndTargetGroup.arn} ``` + To a NLB: + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEnd = new aws.lb.Listener("frontEnd", { - loadBalancerArn: aws_lb.front_end.arn, + const frontEnd = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEndAwsLb.arn, port: 443, protocol: "TLS", certificateArn: "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", alpnPolicy: "HTTP2Preferred", defaultActions: [{ type: "forward", - targetGroupArn: aws_lb_target_group.front_end.arn, + targetGroupArn: frontEndAwsLbTargetGroup.arn, }], }); ``` @@ -229,15 +229,15 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end = aws.lb.Listener("frontEnd", - load_balancer_arn=aws_lb["front_end"]["arn"], + front_end = aws.lb.Listener("front_end", + load_balancer_arn=front_end_aws_lb["arn"], port=443, protocol="TLS", certificate_arn="arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", alpn_policy="HTTP2Preferred", default_actions=[aws.lb.ListenerDefaultActionArgs( type="forward", - target_group_arn=aws_lb_target_group["front_end"]["arn"], + target_group_arn=front_end_aws_lb_target_group["arn"], )]) ``` ```csharp @@ -248,9 +248,9 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEnd = new Aws.LB.Listener("frontEnd", new() + var frontEnd = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = aws_lb.Front_end.Arn, + LoadBalancerArn = frontEndAwsLb.Arn, Port = 443, Protocol = "TLS", CertificateArn = "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4", @@ -260,7 +260,7 @@ def __init__(__self__, *, new Aws.LB.Inputs.ListenerDefaultActionArgs { Type = "forward", - TargetGroupArn = aws_lb_target_group.Front_end.Arn, + TargetGroupArn = frontEndAwsLbTargetGroup.Arn, }, }, }); @@ -277,8 +277,8 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - _, err := lb.NewListener(ctx, "frontEnd", &lb.ListenerArgs{ - LoadBalancerArn: pulumi.Any(aws_lb.Front_end.Arn), + _, err := lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: pulumi.Any(frontEndAwsLb.Arn), Port: pulumi.Int(443), Protocol: pulumi.String("TLS"), CertificateArn: pulumi.String("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4"), @@ -286,7 +286,7 @@ def __init__(__self__, *, DefaultActions: lb.ListenerDefaultActionArray{ &lb.ListenerDefaultActionArgs{ Type: pulumi.String("forward"), - TargetGroupArn: pulumi.Any(aws_lb_target_group.Front_end.Arn), + TargetGroupArn: pulumi.Any(frontEndAwsLbTargetGroup.Arn), }, }, }) @@ -320,14 +320,14 @@ def __init__(__self__, *, public static void stack(Context ctx) { var frontEnd = new Listener("frontEnd", ListenerArgs.builder() - .loadBalancerArn(aws_lb.front_end().arn()) + .loadBalancerArn(frontEndAwsLb.arn()) .port("443") .protocol("TLS") .certificateArn("arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4") .alpnPolicy("HTTP2Preferred") .defaultActions(ListenerDefaultActionArgs.builder() .type("forward") - .targetGroupArn(aws_lb_target_group.front_end().arn()) + .targetGroupArn(frontEndAwsLbTargetGroup.arn()) .build()) .build()); @@ -338,28 +338,29 @@ def __init__(__self__, *, resources: frontEnd: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${aws_lb.front_end.arn} + loadBalancerArn: ${frontEndAwsLb.arn} port: '443' protocol: TLS certificateArn: arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4 alpnPolicy: HTTP2Preferred defaultActions: - type: forward - targetGroupArn: ${aws_lb_target_group.front_end.arn} + targetGroupArn: ${frontEndAwsLbTargetGroup.arn} ``` - {{% /example %}} - {{% example %}} + + ### Redirect Action + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - // ... - const frontEndListener = new aws.lb.Listener("frontEndListener", { - loadBalancerArn: frontEndLoadBalancer.arn, + const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + const frontEndListener = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEnd.arn, port: 80, protocol: "HTTP", defaultActions: [{ @@ -376,10 +377,9 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - # ... - front_end_listener = aws.lb.Listener("frontEndListener", - load_balancer_arn=front_end_load_balancer.arn, + front_end = aws.lb.LoadBalancer("front_end") + front_end_listener = aws.lb.Listener("front_end", + load_balancer_arn=front_end.arn, port=80, protocol="HTTP", default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -399,12 +399,11 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new Aws.LB.LoadBalancer("front_end"); - // ... - var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + var frontEndListener = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = frontEndLoadBalancer.Arn, + LoadBalancerArn = frontEnd.Arn, Port = 80, Protocol = "HTTP", DefaultActions = new[] @@ -434,12 +433,12 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) if err != nil { return err } - _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - LoadBalancerArn: frontEndLoadBalancer.Arn, + _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: frontEnd.Arn, Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), DefaultActions: lb.ListenerDefaultActionArray{ @@ -484,10 +483,10 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new LoadBalancer("frontEnd"); var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - .loadBalancerArn(frontEndLoadBalancer.arn()) + .loadBalancerArn(frontEnd.arn()) .port("80") .protocol("HTTP") .defaultActions(ListenerDefaultActionArgs.builder() @@ -505,12 +504,14 @@ def __init__(__self__, *, ``` ```yaml resources: - frontEndLoadBalancer: + frontEnd: type: aws:lb:LoadBalancer + name: front_end frontEndListener: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${frontEndLoadBalancer.arn} + loadBalancerArn: ${frontEnd.arn} port: '80' protocol: HTTP defaultActions: @@ -520,18 +521,18 @@ def __init__(__self__, *, protocol: HTTPS statusCode: HTTP_301 ``` - {{% /example %}} - {{% example %}} + + ### Fixed-response Action + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - // ... - const frontEndListener = new aws.lb.Listener("frontEndListener", { - loadBalancerArn: frontEndLoadBalancer.arn, + const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + const frontEndListener = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEnd.arn, port: 80, protocol: "HTTP", defaultActions: [{ @@ -548,10 +549,9 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - # ... - front_end_listener = aws.lb.Listener("frontEndListener", - load_balancer_arn=front_end_load_balancer.arn, + front_end = aws.lb.LoadBalancer("front_end") + front_end_listener = aws.lb.Listener("front_end", + load_balancer_arn=front_end.arn, port=80, protocol="HTTP", default_actions=[aws.lb.ListenerDefaultActionArgs( @@ -571,12 +571,11 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new Aws.LB.LoadBalancer("front_end"); - // ... - var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + var frontEndListener = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = frontEndLoadBalancer.Arn, + LoadBalancerArn = frontEnd.Arn, Port = 80, Protocol = "HTTP", DefaultActions = new[] @@ -606,12 +605,12 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) if err != nil { return err } - _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - LoadBalancerArn: frontEndLoadBalancer.Arn, + _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: frontEnd.Arn, Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), DefaultActions: lb.ListenerDefaultActionArray{ @@ -656,10 +655,10 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new LoadBalancer("frontEnd"); var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - .loadBalancerArn(frontEndLoadBalancer.arn()) + .loadBalancerArn(frontEnd.arn()) .port("80") .protocol("HTTP") .defaultActions(ListenerDefaultActionArgs.builder() @@ -677,12 +676,14 @@ def __init__(__self__, *, ``` ```yaml resources: - frontEndLoadBalancer: + frontEnd: type: aws:lb:LoadBalancer + name: front_end frontEndListener: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${frontEndLoadBalancer.arn} + loadBalancerArn: ${frontEnd.arn} port: '80' protocol: HTTP defaultActions: @@ -692,26 +693,22 @@ def __init__(__self__, *, messageBody: Fixed response content statusCode: '200' ``` - {{% /example %}} - {{% example %}} + + ### Authenticate-cognito Action + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - // ... - const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - // ... + const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); const pool = new aws.cognito.UserPool("pool", {}); - // ... const client = new aws.cognito.UserPoolClient("client", {}); - // ... const domain = new aws.cognito.UserPoolDomain("domain", {}); - // ... - const frontEndListener = new aws.lb.Listener("frontEndListener", { - loadBalancerArn: frontEndLoadBalancer.arn, + const frontEndListener = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEnd.arn, port: 80, protocol: "HTTP", defaultActions: [ @@ -734,18 +731,13 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - # ... - front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - # ... + front_end = aws.lb.LoadBalancer("front_end") + front_end_target_group = aws.lb.TargetGroup("front_end") pool = aws.cognito.UserPool("pool") - # ... client = aws.cognito.UserPoolClient("client") - # ... domain = aws.cognito.UserPoolDomain("domain") - # ... - front_end_listener = aws.lb.Listener("frontEndListener", - load_balancer_arn=front_end_load_balancer.arn, + front_end_listener = aws.lb.Listener("front_end", + load_balancer_arn=front_end.arn, port=80, protocol="HTTP", default_actions=[ @@ -771,24 +763,19 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new Aws.LB.LoadBalancer("front_end"); - // ... - var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); - // ... var pool = new Aws.Cognito.UserPool("pool"); - // ... var client = new Aws.Cognito.UserPoolClient("client"); - // ... var domain = new Aws.Cognito.UserPoolDomain("domain"); - // ... - var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + var frontEndListener = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = frontEndLoadBalancer.Arn, + LoadBalancerArn = frontEnd.Arn, Port = 80, Protocol = "HTTP", DefaultActions = new[] @@ -824,11 +811,11 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) if err != nil { return err } - frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) if err != nil { return err } @@ -844,8 +831,8 @@ def __init__(__self__, *, if err != nil { return err } - _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - LoadBalancerArn: frontEndLoadBalancer.Arn, + _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: frontEnd.Arn, Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), DefaultActions: lb.ListenerDefaultActionArray{ @@ -898,7 +885,7 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new LoadBalancer("frontEnd"); var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); @@ -909,7 +896,7 @@ def __init__(__self__, *, var domain = new UserPoolDomain("domain"); var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - .loadBalancerArn(frontEndLoadBalancer.arn()) + .loadBalancerArn(frontEnd.arn()) .port("80") .protocol("HTTP") .defaultActions( @@ -932,10 +919,12 @@ def __init__(__self__, *, ``` ```yaml resources: - frontEndLoadBalancer: + frontEnd: type: aws:lb:LoadBalancer + name: front_end frontEndTargetGroup: type: aws:lb:TargetGroup + name: front_end pool: type: aws:cognito:UserPool client: @@ -944,8 +933,9 @@ def __init__(__self__, *, type: aws:cognito:UserPoolDomain frontEndListener: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${frontEndLoadBalancer.arn} + loadBalancerArn: ${frontEnd.arn} port: '80' protocol: HTTP defaultActions: @@ -957,20 +947,19 @@ def __init__(__self__, *, - type: forward targetGroupArn: ${frontEndTargetGroup.arn} ``` - {{% /example %}} - {{% example %}} + + ### Authenticate-OIDC Action + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const frontEndLoadBalancer = new aws.lb.LoadBalancer("frontEndLoadBalancer", {}); - // ... - const frontEndTargetGroup = new aws.lb.TargetGroup("frontEndTargetGroup", {}); - // ... - const frontEndListener = new aws.lb.Listener("frontEndListener", { - loadBalancerArn: frontEndLoadBalancer.arn, + const frontEnd = new aws.lb.LoadBalancer("front_end", {}); + const frontEndTargetGroup = new aws.lb.TargetGroup("front_end", {}); + const frontEndListener = new aws.lb.Listener("front_end", { + loadBalancerArn: frontEnd.arn, port: 80, protocol: "HTTP", defaultActions: [ @@ -996,12 +985,10 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - front_end_load_balancer = aws.lb.LoadBalancer("frontEndLoadBalancer") - # ... - front_end_target_group = aws.lb.TargetGroup("frontEndTargetGroup") - # ... - front_end_listener = aws.lb.Listener("frontEndListener", - load_balancer_arn=front_end_load_balancer.arn, + front_end = aws.lb.LoadBalancer("front_end") + front_end_target_group = aws.lb.TargetGroup("front_end") + front_end_listener = aws.lb.Listener("front_end", + load_balancer_arn=front_end.arn, port=80, protocol="HTTP", default_actions=[ @@ -1030,15 +1017,13 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new Aws.LB.LoadBalancer("front_end"); - // ... - var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup"); + var frontEndTargetGroup = new Aws.LB.TargetGroup("front_end"); - // ... - var frontEndListener = new Aws.LB.Listener("frontEndListener", new() + var frontEndListener = new Aws.LB.Listener("front_end", new() { - LoadBalancerArn = frontEndLoadBalancer.Arn, + LoadBalancerArn = frontEnd.Arn, Port = 80, Protocol = "HTTP", DefaultActions = new[] @@ -1076,16 +1061,16 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - frontEndLoadBalancer, err := lb.NewLoadBalancer(ctx, "frontEndLoadBalancer", nil) + frontEnd, err := lb.NewLoadBalancer(ctx, "front_end", nil) if err != nil { return err } - frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "frontEndTargetGroup", nil) + frontEndTargetGroup, err := lb.NewTargetGroup(ctx, "front_end", nil) if err != nil { return err } - _, err = lb.NewListener(ctx, "frontEndListener", &lb.ListenerArgs{ - LoadBalancerArn: frontEndLoadBalancer.Arn, + _, err = lb.NewListener(ctx, "front_end", &lb.ListenerArgs{ + LoadBalancerArn: frontEnd.Arn, Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), DefaultActions: lb.ListenerDefaultActionArray{ @@ -1138,12 +1123,12 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var frontEndLoadBalancer = new LoadBalancer("frontEndLoadBalancer"); + var frontEnd = new LoadBalancer("frontEnd"); var frontEndTargetGroup = new TargetGroup("frontEndTargetGroup"); var frontEndListener = new Listener("frontEndListener", ListenerArgs.builder() - .loadBalancerArn(frontEndLoadBalancer.arn()) + .loadBalancerArn(frontEnd.arn()) .port("80") .protocol("HTTP") .defaultActions( @@ -1169,14 +1154,17 @@ def __init__(__self__, *, ``` ```yaml resources: - frontEndLoadBalancer: + frontEnd: type: aws:lb:LoadBalancer + name: front_end frontEndTargetGroup: type: aws:lb:TargetGroup + name: front_end frontEndListener: type: aws:lb:Listener + name: front_end properties: - loadBalancerArn: ${frontEndLoadBalancer.arn} + loadBalancerArn: ${frontEnd.arn} port: '80' protocol: HTTP defaultActions: @@ -1191,31 +1179,34 @@ def __init__(__self__, *, - type: forward targetGroupArn: ${frontEndTargetGroup.arn} ``` - {{% /example %}} - {{% example %}} + + ### Gateway Load Balancer Listener + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const exampleLoadBalancer = new aws.lb.LoadBalancer("exampleLoadBalancer", { + const example = new aws.lb.LoadBalancer("example", { loadBalancerType: "gateway", + name: "example", subnetMappings: [{ - subnetId: aws_subnet.example.id, + subnetId: exampleAwsSubnet.id, }], }); - const exampleTargetGroup = new aws.lb.TargetGroup("exampleTargetGroup", { + const exampleTargetGroup = new aws.lb.TargetGroup("example", { + name: "example", port: 6081, protocol: "GENEVE", - vpcId: aws_vpc.example.id, + vpcId: exampleAwsVpc.id, healthCheck: { port: "80", protocol: "HTTP", }, }); - const exampleListener = new aws.lb.Listener("exampleListener", { - loadBalancerArn: exampleLoadBalancer.id, + const exampleListener = new aws.lb.Listener("example", { + loadBalancerArn: example.id, defaultActions: [{ targetGroupArn: exampleTargetGroup.id, type: "forward", @@ -1226,21 +1217,23 @@ def __init__(__self__, *, import pulumi import pulumi_aws as aws - example_load_balancer = aws.lb.LoadBalancer("exampleLoadBalancer", + example = aws.lb.LoadBalancer("example", load_balancer_type="gateway", + name="example", subnet_mappings=[aws.lb.LoadBalancerSubnetMappingArgs( - subnet_id=aws_subnet["example"]["id"], + subnet_id=example_aws_subnet["id"], )]) - example_target_group = aws.lb.TargetGroup("exampleTargetGroup", + example_target_group = aws.lb.TargetGroup("example", + name="example", port=6081, protocol="GENEVE", - vpc_id=aws_vpc["example"]["id"], + vpc_id=example_aws_vpc["id"], health_check=aws.lb.TargetGroupHealthCheckArgs( port="80", protocol="HTTP", )) - example_listener = aws.lb.Listener("exampleListener", - load_balancer_arn=example_load_balancer.id, + example_listener = aws.lb.Listener("example", + load_balancer_arn=example.id, default_actions=[aws.lb.ListenerDefaultActionArgs( target_group_arn=example_target_group.id, type="forward", @@ -1254,23 +1247,25 @@ def __init__(__self__, *, return await Deployment.RunAsync(() => { - var exampleLoadBalancer = new Aws.LB.LoadBalancer("exampleLoadBalancer", new() + var example = new Aws.LB.LoadBalancer("example", new() { LoadBalancerType = "gateway", + Name = "example", SubnetMappings = new[] { new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs { - SubnetId = aws_subnet.Example.Id, + SubnetId = exampleAwsSubnet.Id, }, }, }); - var exampleTargetGroup = new Aws.LB.TargetGroup("exampleTargetGroup", new() + var exampleTargetGroup = new Aws.LB.TargetGroup("example", new() { + Name = "example", Port = 6081, Protocol = "GENEVE", - VpcId = aws_vpc.Example.Id, + VpcId = exampleAwsVpc.Id, HealthCheck = new Aws.LB.Inputs.TargetGroupHealthCheckArgs { Port = "80", @@ -1278,9 +1273,9 @@ def __init__(__self__, *, }, }); - var exampleListener = new Aws.LB.Listener("exampleListener", new() + var exampleListener = new Aws.LB.Listener("example", new() { - LoadBalancerArn = exampleLoadBalancer.Id, + LoadBalancerArn = example.Id, DefaultActions = new[] { new Aws.LB.Inputs.ListenerDefaultActionArgs @@ -1303,21 +1298,23 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { - exampleLoadBalancer, err := lb.NewLoadBalancer(ctx, "exampleLoadBalancer", &lb.LoadBalancerArgs{ + example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ LoadBalancerType: pulumi.String("gateway"), + Name: pulumi.String("example"), SubnetMappings: lb.LoadBalancerSubnetMappingArray{ &lb.LoadBalancerSubnetMappingArgs{ - SubnetId: pulumi.Any(aws_subnet.Example.Id), + SubnetId: pulumi.Any(exampleAwsSubnet.Id), }, }, }) if err != nil { return err } - exampleTargetGroup, err := lb.NewTargetGroup(ctx, "exampleTargetGroup", &lb.TargetGroupArgs{ + exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", &lb.TargetGroupArgs{ + Name: pulumi.String("example"), Port: pulumi.Int(6081), Protocol: pulumi.String("GENEVE"), - VpcId: pulumi.Any(aws_vpc.Example.Id), + VpcId: pulumi.Any(exampleAwsVpc.Id), HealthCheck: &lb.TargetGroupHealthCheckArgs{ Port: pulumi.String("80"), Protocol: pulumi.String("HTTP"), @@ -1326,8 +1323,8 @@ def __init__(__self__, *, if err != nil { return err } - _, err = lb.NewListener(ctx, "exampleListener", &lb.ListenerArgs{ - LoadBalancerArn: exampleLoadBalancer.ID(), + _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + LoadBalancerArn: example.ID(), DefaultActions: lb.ListenerDefaultActionArray{ &lb.ListenerDefaultActionArgs{ TargetGroupArn: exampleTargetGroup.ID(), @@ -1370,17 +1367,19 @@ def __init__(__self__, *, } public static void stack(Context ctx) { - var exampleLoadBalancer = new LoadBalancer("exampleLoadBalancer", LoadBalancerArgs.builder() + var example = new LoadBalancer("example", LoadBalancerArgs.builder() .loadBalancerType("gateway") + .name("example") .subnetMappings(LoadBalancerSubnetMappingArgs.builder() - .subnetId(aws_subnet.example().id()) + .subnetId(exampleAwsSubnet.id()) .build()) .build()); var exampleTargetGroup = new TargetGroup("exampleTargetGroup", TargetGroupArgs.builder() + .name("example") .port(6081) .protocol("GENEVE") - .vpcId(aws_vpc.example().id()) + .vpcId(exampleAwsVpc.id()) .healthCheck(TargetGroupHealthCheckArgs.builder() .port(80) .protocol("HTTP") @@ -1388,7 +1387,7 @@ def __init__(__self__, *, .build()); var exampleListener = new Listener("exampleListener", ListenerArgs.builder() - .loadBalancerArn(exampleLoadBalancer.id()) + .loadBalancerArn(example.id()) .defaultActions(ListenerDefaultActionArgs.builder() .targetGroupArn(exampleTargetGroup.id()) .type("forward") @@ -1400,43 +1399,230 @@ def __init__(__self__, *, ``` ```yaml resources: - exampleLoadBalancer: + example: type: aws:lb:LoadBalancer properties: loadBalancerType: gateway + name: example subnetMappings: - - subnetId: ${aws_subnet.example.id} + - subnetId: ${exampleAwsSubnet.id} exampleTargetGroup: type: aws:lb:TargetGroup + name: example properties: + name: example port: 6081 protocol: GENEVE - vpcId: ${aws_vpc.example.id} + vpcId: ${exampleAwsVpc.id} healthCheck: port: 80 protocol: HTTP exampleListener: type: aws:lb:Listener + name: example + properties: + loadBalancerArn: ${example.id} + defaultActions: + - targetGroupArn: ${exampleTargetGroup.id} + type: forward + ``` + + + ### Mutual TLS Authentication + + + ```typescript + import * as pulumi from "@pulumi/pulumi"; + import * as aws from "@pulumi/aws"; + + const example = new aws.lb.LoadBalancer("example", {loadBalancerType: "application"}); + const exampleTargetGroup = new aws.lb.TargetGroup("example", {}); + const exampleListener = new aws.lb.Listener("example", { + loadBalancerArn: example.id, + defaultActions: [{ + targetGroupArn: exampleTargetGroup.id, + type: "forward", + }], + mutualAuthentication: { + mode: "verify", + trustStoreArn: "...", + }, + }); + ``` + ```python + import pulumi + import pulumi_aws as aws + + example = aws.lb.LoadBalancer("example", load_balancer_type="application") + example_target_group = aws.lb.TargetGroup("example") + example_listener = aws.lb.Listener("example", + load_balancer_arn=example.id, + default_actions=[aws.lb.ListenerDefaultActionArgs( + target_group_arn=example_target_group.id, + type="forward", + )], + mutual_authentication=aws.lb.ListenerMutualAuthenticationArgs( + mode="verify", + trust_store_arn="...", + )) + ``` + ```csharp + using System.Collections.Generic; + using System.Linq; + using Pulumi; + using Aws = Pulumi.Aws; + + return await Deployment.RunAsync(() => + { + var example = new Aws.LB.LoadBalancer("example", new() + { + LoadBalancerType = "application", + }); + + var exampleTargetGroup = new Aws.LB.TargetGroup("example"); + + var exampleListener = new Aws.LB.Listener("example", new() + { + LoadBalancerArn = example.Id, + DefaultActions = new[] + { + new Aws.LB.Inputs.ListenerDefaultActionArgs + { + TargetGroupArn = exampleTargetGroup.Id, + Type = "forward", + }, + }, + MutualAuthentication = new Aws.LB.Inputs.ListenerMutualAuthenticationArgs + { + Mode = "verify", + TrustStoreArn = "...", + }, + }); + + }); + ``` + ```go + package main + + import ( + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + ) + + func main() { + pulumi.Run(func(ctx *pulumi.Context) error { + example, err := lb.NewLoadBalancer(ctx, "example", &lb.LoadBalancerArgs{ + LoadBalancerType: pulumi.String("application"), + }) + if err != nil { + return err + } + exampleTargetGroup, err := lb.NewTargetGroup(ctx, "example", nil) + if err != nil { + return err + } + _, err = lb.NewListener(ctx, "example", &lb.ListenerArgs{ + LoadBalancerArn: example.ID(), + DefaultActions: lb.ListenerDefaultActionArray{ + &lb.ListenerDefaultActionArgs{ + TargetGroupArn: exampleTargetGroup.ID(), + Type: pulumi.String("forward"), + }, + }, + MutualAuthentication: &lb.ListenerMutualAuthenticationArgs{ + Mode: pulumi.String("verify"), + TrustStoreArn: pulumi.String("..."), + }, + }) + if err != nil { + return err + } + return nil + }) + } + ``` + ```java + package generated_program; + + import com.pulumi.Context; + import com.pulumi.Pulumi; + import com.pulumi.core.Output; + import com.pulumi.aws.lb.LoadBalancer; + import com.pulumi.aws.lb.LoadBalancerArgs; + import com.pulumi.aws.lb.TargetGroup; + import com.pulumi.aws.lb.Listener; + import com.pulumi.aws.lb.ListenerArgs; + import com.pulumi.aws.lb.inputs.ListenerDefaultActionArgs; + import com.pulumi.aws.lb.inputs.ListenerMutualAuthenticationArgs; + import java.util.List; + import java.util.ArrayList; + import java.util.Map; + import java.io.File; + import java.nio.file.Files; + import java.nio.file.Paths; + + public class App { + public static void main(String[] args) { + Pulumi.run(App::stack); + } + + public static void stack(Context ctx) { + var example = new LoadBalancer("example", LoadBalancerArgs.builder() + .loadBalancerType("application") + .build()); + + var exampleTargetGroup = new TargetGroup("exampleTargetGroup"); + + var exampleListener = new Listener("exampleListener", ListenerArgs.builder() + .loadBalancerArn(example.id()) + .defaultActions(ListenerDefaultActionArgs.builder() + .targetGroupArn(exampleTargetGroup.id()) + .type("forward") + .build()) + .mutualAuthentication(ListenerMutualAuthenticationArgs.builder() + .mode("verify") + .trustStoreArn("...") + .build()) + .build()); + + } + } + ``` + ```yaml + resources: + example: + type: aws:lb:LoadBalancer + properties: + loadBalancerType: application + exampleTargetGroup: + type: aws:lb:TargetGroup + name: example + exampleListener: + type: aws:lb:Listener + name: example properties: - loadBalancerArn: ${exampleLoadBalancer.id} + loadBalancerArn: ${example.id} defaultActions: - targetGroupArn: ${exampleTargetGroup.id} type: forward + mutualAuthentication: + mode: verify + trustStoreArn: '...' ``` - {{% /example %}} - {{% /examples %}} + ## Import Using `pulumi import`, import listeners using their ARN. For example: ```sh - $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 + $ pulumi import aws:lb/listener:Listener front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:listener/app/front-end-alb/8e4497da625e2d8a/9ab28ade35828f96 ``` - + :param pulumi.Input[str] alpn_policy: Name of the Application-Layer Protocol Negotiation (ALPN) policy. Can be set if `protocol` is `TLS`. Valid values are `HTTP1Only`, `HTTP2Only`, `HTTP2Optional`, `HTTP2Preferred`, and `None`. :param pulumi.Input[str] certificate_arn: ARN of the default SSL server certificate. Exactly one certificate is required if the protocol is HTTPS. For adding additional SSL certificates, see the `aws.lb.ListenerCertificate` resource. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.ListenerDefaultActionArgs']]] default_actions: Configuration block for default actions. Detailed below. + :param pulumi.Input['pulumi_aws.lb.ListenerMutualAuthenticationArgs'] mutual_authentication: The mutual authentication configuration information. Detailed below. :param pulumi.Input[int] port: Port on which the load balancer is listening. Not valid for Gateway Load Balancers. :param pulumi.Input[str] protocol: 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. :param pulumi.Input[str] ssl_policy: Name of the SSL Policy for the listener. Required if `protocol` is `HTTPS` or `TLS`. @@ -1450,6 +1636,8 @@ def __init__(__self__, *, pulumi.set(__self__, "certificate_arn", certificate_arn) if default_actions is not None: pulumi.set(__self__, "default_actions", default_actions) + if mutual_authentication is not None: + pulumi.set(__self__, "mutual_authentication", mutual_authentication) if port is not None: pulumi.set(__self__, "port", port) if protocol is not None: @@ -1495,6 +1683,18 @@ def default_actions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi def default_actions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.ListenerDefaultActionArgs']]]]): pulumi.set(self, "default_actions", value) + @property + @pulumi.getter(name="mutualAuthentication") + def mutual_authentication(self) -> Optional[pulumi.Input['pulumi_aws.lb.ListenerMutualAuthenticationArgs']]: + """ + The mutual authentication configuration information. Detailed below. + """ + return pulumi.get(self, "mutual_authentication") + + @mutual_authentication.setter + def mutual_authentication(self, value: Optional[pulumi.Input['pulumi_aws.lb.ListenerMutualAuthenticationArgs']]): + pulumi.set(self, "mutual_authentication", value) + @property @pulumi.getter def port(self) -> Optional[pulumi.Input[int]]: @@ -1555,6 +1755,7 @@ def __init__(__self__, *, ip_address_type: Optional[pulumi.Input[str]] = None, lambda_multi_value_headers_enabled: Optional[pulumi.Input[bool]] = None, load_balancing_algorithm_type: Optional[pulumi.Input[str]] = None, + load_balancing_anomaly_mitigation: Optional[pulumi.Input[str]] = None, load_balancing_cross_zone_enabled: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, name_prefix: Optional[pulumi.Input[str]] = None, @@ -1575,17 +1776,18 @@ def __init__(__self__, *, > **Note:** `aws.alb.TargetGroup` is known as `aws.lb.TargetGroup`. The functionality is identical. - {{% examples %}} ## Example Usage - {{% example %}} + ### Instance Target Group + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); const test = new aws.lb.TargetGroup("test", { + name: "tf-example-lb-tg", port: 80, protocol: "HTTP", vpcId: main.id, @@ -1597,6 +1799,7 @@ def __init__(__self__, *, main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") test = aws.lb.TargetGroup("test", + name="tf-example-lb-tg", port=80, protocol="HTTP", vpc_id=main.id) @@ -1616,6 +1819,7 @@ def __init__(__self__, *, var test = new Aws.LB.TargetGroup("test", new() { + Name = "tf-example-lb-tg", Port = 80, Protocol = "HTTP", VpcId = main.Id, @@ -1641,6 +1845,7 @@ def __init__(__self__, *, return err } _, err = lb.NewTargetGroup(ctx, "test", &lb.TargetGroupArgs{ + Name: pulumi.String("tf-example-lb-tg"), Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), VpcId: main.ID(), @@ -1680,6 +1885,7 @@ def __init__(__self__, *, .build()); var test = new TargetGroup("test", TargetGroupArgs.builder() + .name("tf-example-lb-tg") .port(80) .protocol("HTTP") .vpcId(main.id()) @@ -1693,6 +1899,7 @@ def __init__(__self__, *, test: type: aws:lb:TargetGroup properties: + name: tf-example-lb-tg port: 80 protocol: HTTP vpcId: ${main.id} @@ -1701,16 +1908,18 @@ def __init__(__self__, *, properties: cidrBlock: 10.0.0.0/16 ``` - {{% /example %}} - {{% example %}} + + ### IP Target Group + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const main = new aws.ec2.Vpc("main", {cidrBlock: "10.0.0.0/16"}); const ip_example = new aws.lb.TargetGroup("ip-example", { + name: "tf-example-lb-tg", port: 80, protocol: "HTTP", targetType: "ip", @@ -1723,6 +1932,7 @@ def __init__(__self__, *, main = aws.ec2.Vpc("main", cidr_block="10.0.0.0/16") ip_example = aws.lb.TargetGroup("ip-example", + name="tf-example-lb-tg", port=80, protocol="HTTP", target_type="ip", @@ -1743,6 +1953,7 @@ def __init__(__self__, *, var ip_example = new Aws.LB.TargetGroup("ip-example", new() { + Name = "tf-example-lb-tg", Port = 80, Protocol = "HTTP", TargetType = "ip", @@ -1769,6 +1980,7 @@ def __init__(__self__, *, return err } _, err = lb.NewTargetGroup(ctx, "ip-example", &lb.TargetGroupArgs{ + Name: pulumi.String("tf-example-lb-tg"), Port: pulumi.Int(80), Protocol: pulumi.String("HTTP"), TargetType: pulumi.String("ip"), @@ -1809,6 +2021,7 @@ def __init__(__self__, *, .build()); var ip_example = new TargetGroup("ip-example", TargetGroupArgs.builder() + .name("tf-example-lb-tg") .port(80) .protocol("HTTP") .targetType("ip") @@ -1823,6 +2036,7 @@ def __init__(__self__, *, ip-example: type: aws:lb:TargetGroup properties: + name: tf-example-lb-tg port: 80 protocol: HTTP targetType: ip @@ -1832,21 +2046,27 @@ def __init__(__self__, *, properties: cidrBlock: 10.0.0.0/16 ``` - {{% /example %}} - {{% example %}} + + ### Lambda Target Group + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; - const lambda_example = new aws.lb.TargetGroup("lambda-example", {targetType: "lambda"}); + const lambda_example = new aws.lb.TargetGroup("lambda-example", { + name: "tf-example-lb-tg", + targetType: "lambda", + }); ``` ```python import pulumi import pulumi_aws as aws - lambda_example = aws.lb.TargetGroup("lambda-example", target_type="lambda") + lambda_example = aws.lb.TargetGroup("lambda-example", + name="tf-example-lb-tg", + target_type="lambda") ``` ```csharp using System.Collections.Generic; @@ -1858,6 +2078,7 @@ def __init__(__self__, *, { var lambda_example = new Aws.LB.TargetGroup("lambda-example", new() { + Name = "tf-example-lb-tg", TargetType = "lambda", }); @@ -1874,6 +2095,7 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := lb.NewTargetGroup(ctx, "lambda-example", &lb.TargetGroupArgs{ + Name: pulumi.String("tf-example-lb-tg"), TargetType: pulumi.String("lambda"), }) if err != nil { @@ -1905,6 +2127,7 @@ def __init__(__self__, *, public static void stack(Context ctx) { var lambda_example = new TargetGroup("lambda-example", TargetGroupArgs.builder() + .name("tf-example-lb-tg") .targetType("lambda") .build()); @@ -1916,21 +2139,24 @@ def __init__(__self__, *, lambda-example: type: aws:lb:TargetGroup properties: + name: tf-example-lb-tg targetType: lambda ``` - {{% /example %}} - {{% example %}} + + ### ALB Target Group + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const alb_example = new aws.lb.TargetGroup("alb-example", { + name: "tf-example-lb-alb-tg", targetType: "alb", port: 80, protocol: "TCP", - vpcId: aws_vpc.main.id, + vpcId: main.id, }); ``` ```python @@ -1938,10 +2164,11 @@ def __init__(__self__, *, import pulumi_aws as aws alb_example = aws.lb.TargetGroup("alb-example", + name="tf-example-lb-alb-tg", target_type="alb", port=80, protocol="TCP", - vpc_id=aws_vpc["main"]["id"]) + vpc_id=main["id"]) ``` ```csharp using System.Collections.Generic; @@ -1953,10 +2180,11 @@ def __init__(__self__, *, { var alb_example = new Aws.LB.TargetGroup("alb-example", new() { + Name = "tf-example-lb-alb-tg", TargetType = "alb", Port = 80, Protocol = "TCP", - VpcId = aws_vpc.Main.Id, + VpcId = main.Id, }); }); @@ -1972,10 +2200,11 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := lb.NewTargetGroup(ctx, "alb-example", &lb.TargetGroupArgs{ + Name: pulumi.String("tf-example-lb-alb-tg"), TargetType: pulumi.String("alb"), Port: pulumi.Int(80), Protocol: pulumi.String("TCP"), - VpcId: pulumi.Any(aws_vpc.Main.Id), + VpcId: pulumi.Any(main.Id), }) if err != nil { return err @@ -2006,10 +2235,11 @@ def __init__(__self__, *, public static void stack(Context ctx) { var alb_example = new TargetGroup("alb-example", TargetGroupArgs.builder() + .name("tf-example-lb-alb-tg") .targetType("alb") .port(80) .protocol("TCP") - .vpcId(aws_vpc.main().id()) + .vpcId(main.id()) .build()); } @@ -2020,23 +2250,26 @@ def __init__(__self__, *, alb-example: type: aws:lb:TargetGroup properties: + name: tf-example-lb-alb-tg targetType: alb port: 80 protocol: TCP - vpcId: ${aws_vpc.main.id} + vpcId: ${main.id} ``` - {{% /example %}} - {{% example %}} + + ### Target group with unhealthy connection termination disabled + ```typescript import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; const tcp_example = new aws.lb.TargetGroup("tcp-example", { + name: "tf-example-lb-nlb-tg", port: 25, protocol: "TCP", - vpcId: aws_vpc.main.id, + vpcId: main.id, targetHealthStates: [{ enableUnhealthyConnectionTermination: false, }], @@ -2047,9 +2280,10 @@ def __init__(__self__, *, import pulumi_aws as aws tcp_example = aws.lb.TargetGroup("tcp-example", + name="tf-example-lb-nlb-tg", port=25, protocol="TCP", - vpc_id=aws_vpc["main"]["id"], + vpc_id=main["id"], target_health_states=[aws.lb.TargetGroupTargetHealthStateArgs( enable_unhealthy_connection_termination=False, )]) @@ -2064,9 +2298,10 @@ def __init__(__self__, *, { var tcp_example = new Aws.LB.TargetGroup("tcp-example", new() { + Name = "tf-example-lb-nlb-tg", Port = 25, Protocol = "TCP", - VpcId = aws_vpc.Main.Id, + VpcId = main.Id, TargetHealthStates = new[] { new Aws.LB.Inputs.TargetGroupTargetHealthStateArgs @@ -2089,9 +2324,10 @@ def __init__(__self__, *, func main() { pulumi.Run(func(ctx *pulumi.Context) error { _, err := lb.NewTargetGroup(ctx, "tcp-example", &lb.TargetGroupArgs{ + Name: pulumi.String("tf-example-lb-nlb-tg"), Port: pulumi.Int(25), Protocol: pulumi.String("TCP"), - VpcId: pulumi.Any(aws_vpc.Main.Id), + VpcId: pulumi.Any(main.Id), TargetHealthStates: lb.TargetGroupTargetHealthStateArray{ &lb.TargetGroupTargetHealthStateArgs{ EnableUnhealthyConnectionTermination: pulumi.Bool(false), @@ -2128,9 +2364,10 @@ def __init__(__self__, *, public static void stack(Context ctx) { var tcp_example = new TargetGroup("tcp-example", TargetGroupArgs.builder() + .name("tf-example-lb-nlb-tg") .port(25) .protocol("TCP") - .vpcId(aws_vpc.main().id()) + .vpcId(main.id()) .targetHealthStates(TargetGroupTargetHealthStateArgs.builder() .enableUnhealthyConnectionTermination(false) .build()) @@ -2144,35 +2381,39 @@ def __init__(__self__, *, tcp-example: type: aws:lb:TargetGroup properties: + name: tf-example-lb-nlb-tg port: 25 protocol: TCP - vpcId: ${aws_vpc.main.id} + vpcId: ${main.id} targetHealthStates: - enableUnhealthyConnectionTermination: false ``` - {{% /example %}} - {{% /examples %}} + ## Import Using `pulumi import`, import Target Groups using their ARN. For example: ```sh - $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 + $ pulumi import aws:lb/targetGroup:TargetGroup app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ``` - + :param pulumi.Input[bool] connection_termination: 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 `false`. :param pulumi.Input[int] deregistration_delay: 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. :param pulumi.Input['pulumi_aws.lb.TargetGroupHealthCheckArgs'] health_check: Health Check configuration block. Detailed below. :param pulumi.Input[str] ip_address_type: The type of IP addresses used by the target group, only supported when target type is set to `ip`. Possible values are `ipv4` or `ipv6`. :param pulumi.Input[bool] lambda_multi_value_headers_enabled: Whether the request and response headers exchanged between the load balancer and the Lambda function include arrays of values or strings. Only applies when `target_type` is `lambda`. Default is `false`. - :param pulumi.Input[str] load_balancing_algorithm_type: Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + :param pulumi.Input[str] load_balancing_algorithm_type: Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. + :param pulumi.Input[str] load_balancing_anomaly_mitigation: Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. :param pulumi.Input[str] load_balancing_cross_zone_enabled: Indicates whether cross zone load balancing is enabled. The value is `"true"`, `"false"` or `"use_load_balancer_configuration"`. The default is `"use_load_balancer_configuration"`. :param pulumi.Input[str] name: 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. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. Cannot be longer than 6 characters. :param pulumi.Input[int] port: Port on which targets receive traffic, unless overridden when registering a specific target. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. :param pulumi.Input[str] preserve_client_ip: 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. - :param pulumi.Input[str] protocol: Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + :param pulumi.Input[str] protocol: Protocol to use for routing traffic to the targets. + Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + Required when `target_type` is `instance`, `ip`, or `alb`. + Does not apply when `target_type` is `lambda`. :param pulumi.Input[str] protocol_version: Only applicable when `protocol` 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 :param pulumi.Input[bool] proxy_protocol_v2: 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 `false`. :param pulumi.Input[int] slow_start: 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. @@ -2180,7 +2421,9 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.TargetGroupTargetFailoverArgs']]] target_failovers: Target failover block. Only applicable for Gateway Load Balancer target groups. See target_failover for more information. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.TargetGroupTargetHealthStateArgs']]] target_health_states: Target health state block. Only applicable for Network Load Balancer target groups when `protocol` is `TCP` or `TLS`. See target_health_state for more information. - :param pulumi.Input[str] target_type: Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + :param pulumi.Input[str] target_type: Type of target that you must specify when registering targets with this target group. + See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + The default is `instance`. Note that you can't specify targets for a target group using both instance IDs and IP addresses. @@ -2203,6 +2446,8 @@ def __init__(__self__, *, pulumi.set(__self__, "lambda_multi_value_headers_enabled", lambda_multi_value_headers_enabled) if load_balancing_algorithm_type is not None: pulumi.set(__self__, "load_balancing_algorithm_type", load_balancing_algorithm_type) + if load_balancing_anomaly_mitigation is not None: + pulumi.set(__self__, "load_balancing_anomaly_mitigation", load_balancing_anomaly_mitigation) if load_balancing_cross_zone_enabled is not None: pulumi.set(__self__, "load_balancing_cross_zone_enabled", load_balancing_cross_zone_enabled) if name is not None: @@ -2298,7 +2543,7 @@ def lambda_multi_value_headers_enabled(self, value: Optional[pulumi.Input[bool]] @pulumi.getter(name="loadBalancingAlgorithmType") def load_balancing_algorithm_type(self) -> Optional[pulumi.Input[str]]: """ - Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin` or `least_outstanding_requests`. The default is `round_robin`. + Determines how the load balancer selects targets when routing requests. Only applicable for Application Load Balancer Target Groups. The value is `round_robin`, `least_outstanding_requests`, or `weighted_random`. The default is `round_robin`. """ return pulumi.get(self, "load_balancing_algorithm_type") @@ -2306,6 +2551,18 @@ def load_balancing_algorithm_type(self) -> Optional[pulumi.Input[str]]: def load_balancing_algorithm_type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "load_balancing_algorithm_type", value) + @property + @pulumi.getter(name="loadBalancingAnomalyMitigation") + def load_balancing_anomaly_mitigation(self) -> Optional[pulumi.Input[str]]: + """ + Determines whether to enable target anomaly mitigation. Target anomaly mitigation is only supported by the `weighted_random` 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"`. + """ + return pulumi.get(self, "load_balancing_anomaly_mitigation") + + @load_balancing_anomaly_mitigation.setter + def load_balancing_anomaly_mitigation(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "load_balancing_anomaly_mitigation", value) + @property @pulumi.getter(name="loadBalancingCrossZoneEnabled") def load_balancing_cross_zone_enabled(self) -> Optional[pulumi.Input[str]]: @@ -2370,7 +2627,10 @@ def preserve_client_ip(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def protocol(self) -> Optional[pulumi.Input[str]]: """ - Protocol to use for routing traffic to the targets. Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. Required when `target_type` is `instance`, `ip` or `alb`. Does not apply when `target_type` is `lambda`. + Protocol to use for routing traffic to the targets. + Should be one of `GENEVE`, `HTTP`, `HTTPS`, `TCP`, `TCP_UDP`, `TLS`, or `UDP`. + Required when `target_type` is `instance`, `ip`, or `alb`. + Does not apply when `target_type` is `lambda`. """ return pulumi.get(self, "protocol") @@ -2466,7 +2726,9 @@ def target_health_states(self, value: Optional[pulumi.Input[Sequence[pulumi.Inpu @pulumi.getter(name="targetType") def target_type(self) -> Optional[pulumi.Input[str]]: """ - Type of target that you must specify when registering targets with this target group. See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. The default is `instance`. + Type of target that you must specify when registering targets with this target group. + See [doc](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html) for supported values. + The default is `instance`. Note that you can't specify targets for a target group using both instance IDs and IP addresses. diff --git a/sdk/python/pulumi_awsx/lb/application_load_balancer.py b/sdk/python/pulumi_awsx/lb/application_load_balancer.py index 5196471a2..3bbbdeb1c 100644 --- a/sdk/python/pulumi_awsx/lb/application_load_balancer.py +++ b/sdk/python/pulumi_awsx/lb/application_load_balancer.py @@ -18,6 +18,8 @@ class ApplicationLoadBalancerArgs: def __init__(__self__, *, access_logs: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_security_group: Optional['_awsx.DefaultSecurityGroupArgs'] = None, default_target_group: Optional['TargetGroupArgs'] = None, @@ -30,6 +32,7 @@ def __init__(__self__, *, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -46,40 +49,43 @@ def __init__(__self__, *, xff_header_processing_mode: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a ApplicationLoadBalancer resource. - :param pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs'] access_logs: An Access Logs block. Access Logs documented below. - :param pulumi.Input[str] customer_owned_ipv4_pool: The ID of the customer owned ipv4 pool to use for this load balancer. + :param pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs'] access_logs: Access Logs block. See below. + :param pulumi.Input[int] client_keep_alive: Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + :param pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs'] connection_logs: Connection Logs block. See below. Only valid for Load Balancers of type `application`. + :param pulumi.Input[str] customer_owned_ipv4_pool: ID of the customer owned ipv4 pool to use for this load balancer. :param '_awsx.DefaultSecurityGroupArgs' default_security_group: Options for creating a default security group if [securityGroups] not specified. :param 'TargetGroupArgs' default_target_group: Options creating a default target group. :param pulumi.Input[int] default_target_group_port: Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. - :param pulumi.Input[str] desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. - :param pulumi.Input[str] dns_record_client_routing_policy: Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. - :param pulumi.Input[bool] drop_invalid_header_fields: Indicates 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 `application`. + :param pulumi.Input[str] desync_mitigation_mode: How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + :param pulumi.Input[str] dns_record_client_routing_policy: How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + :param pulumi.Input[bool] drop_invalid_header_fields: 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 `application`. :param pulumi.Input[bool] enable_deletion_protection: 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 `false`. - :param pulumi.Input[bool] enable_http2: Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. - :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: Indicates 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 `application`. Defaults to `false` - :param pulumi.Input[bool] enable_waf_fail_open: Indicates 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 `false`. - :param pulumi.Input[bool] enable_xff_client_port: Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. - :param pulumi.Input[int] idle_timeout: The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + :param pulumi.Input[bool] enable_http2: Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: 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 `application`. Defaults to `false` + :param pulumi.Input[bool] enable_waf_fail_open: 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 `false`. + :param pulumi.Input[bool] enable_xff_client_port: Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + :param pulumi.Input[str] enforce_security_group_inbound_rules_on_private_link_traffic: Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + :param pulumi.Input[int] idle_timeout: Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. :param pulumi.Input[bool] internal: If true, the LB will be internal. Defaults to `false`. - :param pulumi.Input[str] ip_address_type: The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + :param pulumi.Input[str] ip_address_type: Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. :param 'ListenerArgs' listener: A listener to create. Only one of [listener] and [listeners] can be specified. :param Sequence['ListenerArgs'] listeners: List of listeners to create. Only one of [listener] and [listeners] can be specified. - :param pulumi.Input[str] name: The 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`. + :param pulumi.Input[str] name: 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`. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. - :param pulumi.Input[bool] preserve_host_header: Indicates 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 `false`. - :param pulumi.Input[Sequence[pulumi.Input[str]]] security_groups: A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. - :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. - :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]] subnet_mappings: A subnet mapping block as documented below. + :param pulumi.Input[bool] preserve_host_header: 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 `false`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] security_groups: List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. + :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]] subnet_mappings: Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.Subnet']]] subnets: A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] xff_header_processing_mode: 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. """ if access_logs is not None: pulumi.set(__self__, "access_logs", access_logs) + if client_keep_alive is not None: + pulumi.set(__self__, "client_keep_alive", client_keep_alive) + if connection_logs is not None: + pulumi.set(__self__, "connection_logs", connection_logs) if customer_owned_ipv4_pool is not None: pulumi.set(__self__, "customer_owned_ipv4_pool", customer_owned_ipv4_pool) if default_security_group is not None: @@ -104,6 +110,8 @@ def __init__(__self__, *, pulumi.set(__self__, "enable_waf_fail_open", enable_waf_fail_open) if enable_xff_client_port is not None: pulumi.set(__self__, "enable_xff_client_port", enable_xff_client_port) + if enforce_security_group_inbound_rules_on_private_link_traffic is not None: + pulumi.set(__self__, "enforce_security_group_inbound_rules_on_private_link_traffic", enforce_security_group_inbound_rules_on_private_link_traffic) if idle_timeout is not None: pulumi.set(__self__, "idle_timeout", idle_timeout) if internal is not None: @@ -137,7 +145,7 @@ def __init__(__self__, *, @pulumi.getter(name="accessLogs") def access_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]: """ - An Access Logs block. Access Logs documented below. + Access Logs block. See below. """ return pulumi.get(self, "access_logs") @@ -145,11 +153,35 @@ def access_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccess def access_logs(self, value: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]): pulumi.set(self, "access_logs", value) + @property + @pulumi.getter(name="clientKeepAlive") + def client_keep_alive(self) -> Optional[pulumi.Input[int]]: + """ + Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + """ + return pulumi.get(self, "client_keep_alive") + + @client_keep_alive.setter + def client_keep_alive(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "client_keep_alive", value) + + @property + @pulumi.getter(name="connectionLogs") + def connection_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]: + """ + Connection Logs block. See below. Only valid for Load Balancers of type `application`. + """ + return pulumi.get(self, "connection_logs") + + @connection_logs.setter + def connection_logs(self, value: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]): + pulumi.set(self, "connection_logs", value) + @property @pulumi.getter(name="customerOwnedIpv4Pool") def customer_owned_ipv4_pool(self) -> Optional[pulumi.Input[str]]: """ - The ID of the customer owned ipv4 pool to use for this load balancer. + ID of the customer owned ipv4 pool to use for this load balancer. """ return pulumi.get(self, "customer_owned_ipv4_pool") @@ -197,7 +229,7 @@ def default_target_group_port(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="desyncMitigationMode") def desync_mitigation_mode(self) -> Optional[pulumi.Input[str]]: """ - Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. """ return pulumi.get(self, "desync_mitigation_mode") @@ -209,7 +241,7 @@ def desync_mitigation_mode(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="dnsRecordClientRoutingPolicy") def dns_record_client_routing_policy(self) -> Optional[pulumi.Input[str]]: """ - Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. """ return pulumi.get(self, "dns_record_client_routing_policy") @@ -221,7 +253,7 @@ def dns_record_client_routing_policy(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="dropInvalidHeaderFields") def drop_invalid_header_fields(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `application`. + 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 `application`. """ return pulumi.get(self, "drop_invalid_header_fields") @@ -245,7 +277,7 @@ def enable_deletion_protection(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="enableHttp2") def enable_http2(self) -> Optional[pulumi.Input[bool]]: """ - Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. """ return pulumi.get(self, "enable_http2") @@ -257,7 +289,7 @@ def enable_http2(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="enableTlsVersionAndCipherSuiteHeaders") def enable_tls_version_and_cipher_suite_headers(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `application`. Defaults to `false` + 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 `application`. Defaults to `false` """ return pulumi.get(self, "enable_tls_version_and_cipher_suite_headers") @@ -269,7 +301,7 @@ def enable_tls_version_and_cipher_suite_headers(self, value: Optional[pulumi.Inp @pulumi.getter(name="enableWafFailOpen") def enable_waf_fail_open(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `false`. + 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 `false`. """ return pulumi.get(self, "enable_waf_fail_open") @@ -281,7 +313,7 @@ def enable_waf_fail_open(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="enableXffClientPort") def enable_xff_client_port(self) -> Optional[pulumi.Input[bool]]: """ - Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. """ return pulumi.get(self, "enable_xff_client_port") @@ -289,11 +321,23 @@ def enable_xff_client_port(self) -> Optional[pulumi.Input[bool]]: def enable_xff_client_port(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "enable_xff_client_port", value) + @property + @pulumi.getter(name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic") + def enforce_security_group_inbound_rules_on_private_link_traffic(self) -> Optional[pulumi.Input[str]]: + """ + Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + """ + return pulumi.get(self, "enforce_security_group_inbound_rules_on_private_link_traffic") + + @enforce_security_group_inbound_rules_on_private_link_traffic.setter + def enforce_security_group_inbound_rules_on_private_link_traffic(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enforce_security_group_inbound_rules_on_private_link_traffic", value) + @property @pulumi.getter(name="idleTimeout") def idle_timeout(self) -> Optional[pulumi.Input[int]]: """ - The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. """ return pulumi.get(self, "idle_timeout") @@ -317,7 +361,7 @@ def internal(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="ipAddressType") def ip_address_type(self) -> Optional[pulumi.Input[str]]: """ - The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. """ return pulumi.get(self, "ip_address_type") @@ -353,9 +397,7 @@ def listeners(self, value: Optional[Sequence['ListenerArgs']]): @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - The 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`. + 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`. """ return pulumi.get(self, "name") @@ -379,7 +421,7 @@ def name_prefix(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="preserveHostHeader") def preserve_host_header(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `false`. + 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 `false`. """ return pulumi.get(self, "preserve_host_header") @@ -391,7 +433,7 @@ def preserve_host_header(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="securityGroups") def security_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. """ return pulumi.get(self, "security_groups") @@ -403,9 +445,7 @@ def security_groups(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str @pulumi.getter(name="subnetIds") def subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. + List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. """ return pulumi.get(self, "subnet_ids") @@ -417,7 +457,7 @@ def subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]) @pulumi.getter(name="subnetMappings") def subnet_mappings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]]: """ - A subnet mapping block as documented below. + Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. """ return pulumi.get(self, "subnet_mappings") @@ -441,7 +481,7 @@ def subnets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws @pulumi.getter def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ - A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ return pulumi.get(self, "tags") @@ -468,6 +508,8 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, access_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_security_group: Optional[pulumi.InputType['_awsx.DefaultSecurityGroupArgs']] = None, default_target_group: Optional[pulumi.InputType['TargetGroupArgs']] = None, @@ -480,6 +522,7 @@ def __init__(__self__, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -500,36 +543,35 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] access_logs: An Access Logs block. Access Logs documented below. - :param pulumi.Input[str] customer_owned_ipv4_pool: The ID of the customer owned ipv4 pool to use for this load balancer. + :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] access_logs: Access Logs block. See below. + :param pulumi.Input[int] client_keep_alive: Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']] connection_logs: Connection Logs block. See below. Only valid for Load Balancers of type `application`. + :param pulumi.Input[str] customer_owned_ipv4_pool: ID of the customer owned ipv4 pool to use for this load balancer. :param pulumi.InputType['_awsx.DefaultSecurityGroupArgs'] default_security_group: Options for creating a default security group if [securityGroups] not specified. :param pulumi.InputType['TargetGroupArgs'] default_target_group: Options creating a default target group. :param pulumi.Input[int] default_target_group_port: Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. - :param pulumi.Input[str] desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. - :param pulumi.Input[str] dns_record_client_routing_policy: Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. - :param pulumi.Input[bool] drop_invalid_header_fields: Indicates 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 `application`. + :param pulumi.Input[str] desync_mitigation_mode: How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + :param pulumi.Input[str] dns_record_client_routing_policy: How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + :param pulumi.Input[bool] drop_invalid_header_fields: 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 `application`. :param pulumi.Input[bool] enable_deletion_protection: 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 `false`. - :param pulumi.Input[bool] enable_http2: Indicates whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. - :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: Indicates 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 `application`. Defaults to `false` - :param pulumi.Input[bool] enable_waf_fail_open: Indicates 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 `false`. - :param pulumi.Input[bool] enable_xff_client_port: Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. - :param pulumi.Input[int] idle_timeout: The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + :param pulumi.Input[bool] enable_http2: Whether HTTP/2 is enabled in `application` load balancers. Defaults to `true`. + :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: 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 `application`. Defaults to `false` + :param pulumi.Input[bool] enable_waf_fail_open: 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 `false`. + :param pulumi.Input[bool] enable_xff_client_port: Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + :param pulumi.Input[str] enforce_security_group_inbound_rules_on_private_link_traffic: Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + :param pulumi.Input[int] idle_timeout: Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. :param pulumi.Input[bool] internal: If true, the LB will be internal. Defaults to `false`. - :param pulumi.Input[str] ip_address_type: The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + :param pulumi.Input[str] ip_address_type: Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. :param pulumi.InputType['ListenerArgs'] listener: A listener to create. Only one of [listener] and [listeners] can be specified. :param Sequence[pulumi.InputType['ListenerArgs']] listeners: List of listeners to create. Only one of [listener] and [listeners] can be specified. - :param pulumi.Input[str] name: The 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`. + :param pulumi.Input[str] name: 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`. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. - :param pulumi.Input[bool] preserve_host_header: Indicates 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 `false`. - :param pulumi.Input[Sequence[pulumi.Input[str]]] security_groups: A list of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. - :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]] subnet_mappings: A subnet mapping block as documented below. + :param pulumi.Input[bool] preserve_host_header: 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 `false`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] security_groups: List of security group IDs to assign to the LB. Only valid for Load Balancers of type `application` or `network`. For load balancers of type `network` 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. + :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]] subnet_mappings: Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.Subnet']]] subnets: A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] xff_header_processing_mode: 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. """ ... @@ -557,6 +599,8 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, access_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_security_group: Optional[pulumi.InputType['_awsx.DefaultSecurityGroupArgs']] = None, default_target_group: Optional[pulumi.InputType['TargetGroupArgs']] = None, @@ -569,6 +613,7 @@ def _internal_init(__self__, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -595,6 +640,8 @@ def _internal_init(__self__, __props__ = ApplicationLoadBalancerArgs.__new__(ApplicationLoadBalancerArgs) __props__.__dict__["access_logs"] = access_logs + __props__.__dict__["client_keep_alive"] = client_keep_alive + __props__.__dict__["connection_logs"] = connection_logs __props__.__dict__["customer_owned_ipv4_pool"] = customer_owned_ipv4_pool __props__.__dict__["default_security_group"] = default_security_group __props__.__dict__["default_target_group"] = default_target_group @@ -607,6 +654,7 @@ def _internal_init(__self__, __props__.__dict__["enable_tls_version_and_cipher_suite_headers"] = enable_tls_version_and_cipher_suite_headers __props__.__dict__["enable_waf_fail_open"] = enable_waf_fail_open __props__.__dict__["enable_xff_client_port"] = enable_xff_client_port + __props__.__dict__["enforce_security_group_inbound_rules_on_private_link_traffic"] = enforce_security_group_inbound_rules_on_private_link_traffic __props__.__dict__["idle_timeout"] = idle_timeout __props__.__dict__["internal"] = internal __props__.__dict__["ip_address_type"] = ip_address_type diff --git a/sdk/python/pulumi_awsx/lb/network_load_balancer.py b/sdk/python/pulumi_awsx/lb/network_load_balancer.py index e64cdfc7b..e79581eba 100644 --- a/sdk/python/pulumi_awsx/lb/network_load_balancer.py +++ b/sdk/python/pulumi_awsx/lb/network_load_balancer.py @@ -17,6 +17,8 @@ class NetworkLoadBalancerArgs: def __init__(__self__, *, access_logs: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_target_group: Optional['TargetGroupArgs'] = None, default_target_group_port: Optional[pulumi.Input[int]] = None, @@ -28,6 +30,7 @@ def __init__(__self__, *, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -43,38 +46,41 @@ def __init__(__self__, *, xff_header_processing_mode: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a NetworkLoadBalancer resource. - :param pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs'] access_logs: An Access Logs block. Access Logs documented below. - :param pulumi.Input[str] customer_owned_ipv4_pool: The ID of the customer owned ipv4 pool to use for this load balancer. + :param pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs'] access_logs: Access Logs block. See below. + :param pulumi.Input[int] client_keep_alive: Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + :param pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs'] connection_logs: Connection Logs block. See below. Only valid for Load Balancers of type `application`. + :param pulumi.Input[str] customer_owned_ipv4_pool: ID of the customer owned ipv4 pool to use for this load balancer. :param 'TargetGroupArgs' default_target_group: Options creating a default target group. :param pulumi.Input[int] default_target_group_port: Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. - :param pulumi.Input[str] desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. - :param pulumi.Input[str] dns_record_client_routing_policy: Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. - :param pulumi.Input[bool] drop_invalid_header_fields: Indicates 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 `application`. + :param pulumi.Input[str] desync_mitigation_mode: How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + :param pulumi.Input[str] dns_record_client_routing_policy: How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + :param pulumi.Input[bool] drop_invalid_header_fields: 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 `application`. :param pulumi.Input[bool] enable_cross_zone_load_balancing: If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`. :param pulumi.Input[bool] enable_deletion_protection: 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 `false`. - :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: Indicates 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 `application`. Defaults to `false` - :param pulumi.Input[bool] enable_waf_fail_open: Indicates 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 `false`. - :param pulumi.Input[bool] enable_xff_client_port: Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. - :param pulumi.Input[int] idle_timeout: The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: 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 `application`. Defaults to `false` + :param pulumi.Input[bool] enable_waf_fail_open: 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 `false`. + :param pulumi.Input[bool] enable_xff_client_port: Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + :param pulumi.Input[str] enforce_security_group_inbound_rules_on_private_link_traffic: Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + :param pulumi.Input[int] idle_timeout: Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. :param pulumi.Input[bool] internal: If true, the LB will be internal. Defaults to `false`. - :param pulumi.Input[str] ip_address_type: The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + :param pulumi.Input[str] ip_address_type: Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. :param 'ListenerArgs' listener: A listener to create. Only one of [listener] and [listeners] can be specified. :param Sequence['ListenerArgs'] listeners: List of listeners to create. Only one of [listener] and [listeners] can be specified. - :param pulumi.Input[str] name: The 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`. + :param pulumi.Input[str] name: 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`. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. - :param pulumi.Input[bool] preserve_host_header: Indicates 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 `false`. - :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. - :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]] subnet_mappings: A subnet mapping block as documented below. + :param pulumi.Input[bool] preserve_host_header: 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 `false`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. + :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]] subnet_mappings: Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.Subnet']]] subnets: A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] xff_header_processing_mode: 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. """ if access_logs is not None: pulumi.set(__self__, "access_logs", access_logs) + if client_keep_alive is not None: + pulumi.set(__self__, "client_keep_alive", client_keep_alive) + if connection_logs is not None: + pulumi.set(__self__, "connection_logs", connection_logs) if customer_owned_ipv4_pool is not None: pulumi.set(__self__, "customer_owned_ipv4_pool", customer_owned_ipv4_pool) if default_target_group is not None: @@ -97,6 +103,8 @@ def __init__(__self__, *, pulumi.set(__self__, "enable_waf_fail_open", enable_waf_fail_open) if enable_xff_client_port is not None: pulumi.set(__self__, "enable_xff_client_port", enable_xff_client_port) + if enforce_security_group_inbound_rules_on_private_link_traffic is not None: + pulumi.set(__self__, "enforce_security_group_inbound_rules_on_private_link_traffic", enforce_security_group_inbound_rules_on_private_link_traffic) if idle_timeout is not None: pulumi.set(__self__, "idle_timeout", idle_timeout) if internal is not None: @@ -128,7 +136,7 @@ def __init__(__self__, *, @pulumi.getter(name="accessLogs") def access_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]: """ - An Access Logs block. Access Logs documented below. + Access Logs block. See below. """ return pulumi.get(self, "access_logs") @@ -136,11 +144,35 @@ def access_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccess def access_logs(self, value: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]): pulumi.set(self, "access_logs", value) + @property + @pulumi.getter(name="clientKeepAlive") + def client_keep_alive(self) -> Optional[pulumi.Input[int]]: + """ + Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + """ + return pulumi.get(self, "client_keep_alive") + + @client_keep_alive.setter + def client_keep_alive(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "client_keep_alive", value) + + @property + @pulumi.getter(name="connectionLogs") + def connection_logs(self) -> Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]: + """ + Connection Logs block. See below. Only valid for Load Balancers of type `application`. + """ + return pulumi.get(self, "connection_logs") + + @connection_logs.setter + def connection_logs(self, value: Optional[pulumi.Input['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]): + pulumi.set(self, "connection_logs", value) + @property @pulumi.getter(name="customerOwnedIpv4Pool") def customer_owned_ipv4_pool(self) -> Optional[pulumi.Input[str]]: """ - The ID of the customer owned ipv4 pool to use for this load balancer. + ID of the customer owned ipv4 pool to use for this load balancer. """ return pulumi.get(self, "customer_owned_ipv4_pool") @@ -176,7 +208,7 @@ def default_target_group_port(self, value: Optional[pulumi.Input[int]]): @pulumi.getter(name="desyncMitigationMode") def desync_mitigation_mode(self) -> Optional[pulumi.Input[str]]: """ - Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. """ return pulumi.get(self, "desync_mitigation_mode") @@ -188,7 +220,7 @@ def desync_mitigation_mode(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="dnsRecordClientRoutingPolicy") def dns_record_client_routing_policy(self) -> Optional[pulumi.Input[str]]: """ - Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. """ return pulumi.get(self, "dns_record_client_routing_policy") @@ -200,7 +232,7 @@ def dns_record_client_routing_policy(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="dropInvalidHeaderFields") def drop_invalid_header_fields(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `application`. + 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 `application`. """ return pulumi.get(self, "drop_invalid_header_fields") @@ -236,7 +268,7 @@ def enable_deletion_protection(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="enableTlsVersionAndCipherSuiteHeaders") def enable_tls_version_and_cipher_suite_headers(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `application`. Defaults to `false` + 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 `application`. Defaults to `false` """ return pulumi.get(self, "enable_tls_version_and_cipher_suite_headers") @@ -248,7 +280,7 @@ def enable_tls_version_and_cipher_suite_headers(self, value: Optional[pulumi.Inp @pulumi.getter(name="enableWafFailOpen") def enable_waf_fail_open(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `false`. + 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 `false`. """ return pulumi.get(self, "enable_waf_fail_open") @@ -260,7 +292,7 @@ def enable_waf_fail_open(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="enableXffClientPort") def enable_xff_client_port(self) -> Optional[pulumi.Input[bool]]: """ - Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. """ return pulumi.get(self, "enable_xff_client_port") @@ -268,11 +300,23 @@ def enable_xff_client_port(self) -> Optional[pulumi.Input[bool]]: def enable_xff_client_port(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "enable_xff_client_port", value) + @property + @pulumi.getter(name="enforceSecurityGroupInboundRulesOnPrivateLinkTraffic") + def enforce_security_group_inbound_rules_on_private_link_traffic(self) -> Optional[pulumi.Input[str]]: + """ + Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + """ + return pulumi.get(self, "enforce_security_group_inbound_rules_on_private_link_traffic") + + @enforce_security_group_inbound_rules_on_private_link_traffic.setter + def enforce_security_group_inbound_rules_on_private_link_traffic(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enforce_security_group_inbound_rules_on_private_link_traffic", value) + @property @pulumi.getter(name="idleTimeout") def idle_timeout(self) -> Optional[pulumi.Input[int]]: """ - The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. """ return pulumi.get(self, "idle_timeout") @@ -296,7 +340,7 @@ def internal(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="ipAddressType") def ip_address_type(self) -> Optional[pulumi.Input[str]]: """ - The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. """ return pulumi.get(self, "ip_address_type") @@ -332,9 +376,7 @@ def listeners(self, value: Optional[Sequence['ListenerArgs']]): @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - The 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`. + 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`. """ return pulumi.get(self, "name") @@ -358,7 +400,7 @@ def name_prefix(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="preserveHostHeader") def preserve_host_header(self) -> Optional[pulumi.Input[bool]]: """ - Indicates 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 `false`. + 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 `false`. """ return pulumi.get(self, "preserve_host_header") @@ -370,9 +412,7 @@ def preserve_host_header(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="subnetIds") def subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. + List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. """ return pulumi.get(self, "subnet_ids") @@ -384,7 +424,7 @@ def subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]) @pulumi.getter(name="subnetMappings") def subnet_mappings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]]: """ - A subnet mapping block as documented below. + Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. """ return pulumi.get(self, "subnet_mappings") @@ -408,7 +448,7 @@ def subnets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws @pulumi.getter def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ - A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. """ return pulumi.get(self, "tags") @@ -435,6 +475,8 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, access_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_target_group: Optional[pulumi.InputType['TargetGroupArgs']] = None, default_target_group_port: Optional[pulumi.Input[int]] = None, @@ -446,6 +488,7 @@ def __init__(__self__, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -465,34 +508,33 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] access_logs: An Access Logs block. Access Logs documented below. - :param pulumi.Input[str] customer_owned_ipv4_pool: The ID of the customer owned ipv4 pool to use for this load balancer. + :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']] access_logs: Access Logs block. See below. + :param pulumi.Input[int] client_keep_alive: Client keep alive value in seconds. The valid range is 60-604800 seconds. The default is 3600 seconds. + :param pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']] connection_logs: Connection Logs block. See below. Only valid for Load Balancers of type `application`. + :param pulumi.Input[str] customer_owned_ipv4_pool: ID of the customer owned ipv4 pool to use for this load balancer. :param pulumi.InputType['TargetGroupArgs'] default_target_group: Options creating a default target group. :param pulumi.Input[int] default_target_group_port: Port to use to connect with the target. Valid values are ports 1-65535. Defaults to 80. - :param pulumi.Input[str] desync_mitigation_mode: Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. - :param pulumi.Input[str] dns_record_client_routing_policy: Indicates how traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. - :param pulumi.Input[bool] drop_invalid_header_fields: Indicates 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 `application`. + :param pulumi.Input[str] desync_mitigation_mode: How the load balancer handles requests that might pose a security risk to an application due to HTTP desync. Valid values are `monitor`, `defensive` (default), `strictest`. + :param pulumi.Input[str] dns_record_client_routing_policy: How traffic is distributed among the load balancer Availability Zones. Possible values are `any_availability_zone` (default), `availability_zone_affinity`, or `partial_availability_zone_affinity`. 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 `network` type load balancers. + :param pulumi.Input[bool] drop_invalid_header_fields: 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 `application`. :param pulumi.Input[bool] enable_cross_zone_load_balancing: If true, cross-zone load balancing of the load balancer will be enabled. For `network` and `gateway` type load balancers, this feature is disabled by default (`false`). For `application` load balancer this feature is always enabled (`true`) and cannot be disabled. Defaults to `false`. :param pulumi.Input[bool] enable_deletion_protection: 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 `false`. - :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: Indicates 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 `application`. Defaults to `false` - :param pulumi.Input[bool] enable_waf_fail_open: Indicates 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 `false`. - :param pulumi.Input[bool] enable_xff_client_port: Indicates whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. - :param pulumi.Input[int] idle_timeout: The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. + :param pulumi.Input[bool] enable_tls_version_and_cipher_suite_headers: 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 `application`. Defaults to `false` + :param pulumi.Input[bool] enable_waf_fail_open: 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 `false`. + :param pulumi.Input[bool] enable_xff_client_port: Whether the X-Forwarded-For header should preserve the source port that the client used to connect to the load balancer in `application` load balancers. Defaults to `false`. + :param pulumi.Input[str] enforce_security_group_inbound_rules_on_private_link_traffic: Whether inbound security group rules are enforced for traffic originating from a PrivateLink. Only valid for Load Balancers of type `network`. The possible values are `on` and `off`. + :param pulumi.Input[int] idle_timeout: Time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of type `application`. Default: 60. :param pulumi.Input[bool] internal: If true, the LB will be internal. Defaults to `false`. - :param pulumi.Input[str] ip_address_type: The type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. + :param pulumi.Input[str] ip_address_type: Type of IP addresses used by the subnets for your load balancer. The possible values are `ipv4` and `dualstack`. :param pulumi.InputType['ListenerArgs'] listener: A listener to create. Only one of [listener] and [listeners] can be specified. :param Sequence[pulumi.InputType['ListenerArgs']] listeners: List of listeners to create. Only one of [listener] and [listeners] can be specified. - :param pulumi.Input[str] name: The 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`. + :param pulumi.Input[str] name: 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`. :param pulumi.Input[str] name_prefix: Creates a unique name beginning with the specified prefix. Conflicts with `name`. - :param pulumi.Input[bool] preserve_host_header: Indicates 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 `false`. - :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: A list of subnet IDs to attach to the LB. Subnets - cannot be updated for Load Balancers of type `network`. Changing this value - for load balancers of type `network` will force a recreation of the resource. - :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]] subnet_mappings: A subnet mapping block as documented below. + :param pulumi.Input[bool] preserve_host_header: 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 `false`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] subnet_ids: List of subnet IDs to attach to the LB. For Load Balancers of type `network` 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 `network` will force a recreation of the resource. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerSubnetMappingArgs']]]] subnet_mappings: Subnet mapping block. See below. For Load Balancers of type `network` subnet mappings can only be added. :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.Subnet']]] subnets: A list of subnets to attach to the LB. Only one of [subnets], [subnetIds] or [subnetMappings] can be specified - :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. :param pulumi.Input[str] xff_header_processing_mode: 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 `append`, `preserve`, and `remove`. Only valid for Load Balancers of type `application`. The default is `append`. """ ... @@ -520,6 +562,8 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, access_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerAccessLogsArgs']]] = None, + client_keep_alive: Optional[pulumi.Input[int]] = None, + connection_logs: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.lb.LoadBalancerConnectionLogsArgs']]] = None, customer_owned_ipv4_pool: Optional[pulumi.Input[str]] = None, default_target_group: Optional[pulumi.InputType['TargetGroupArgs']] = None, default_target_group_port: Optional[pulumi.Input[int]] = None, @@ -531,6 +575,7 @@ def _internal_init(__self__, enable_tls_version_and_cipher_suite_headers: Optional[pulumi.Input[bool]] = None, enable_waf_fail_open: Optional[pulumi.Input[bool]] = None, enable_xff_client_port: Optional[pulumi.Input[bool]] = None, + enforce_security_group_inbound_rules_on_private_link_traffic: Optional[pulumi.Input[str]] = None, idle_timeout: Optional[pulumi.Input[int]] = None, internal: Optional[pulumi.Input[bool]] = None, ip_address_type: Optional[pulumi.Input[str]] = None, @@ -556,6 +601,8 @@ def _internal_init(__self__, __props__ = NetworkLoadBalancerArgs.__new__(NetworkLoadBalancerArgs) __props__.__dict__["access_logs"] = access_logs + __props__.__dict__["client_keep_alive"] = client_keep_alive + __props__.__dict__["connection_logs"] = connection_logs __props__.__dict__["customer_owned_ipv4_pool"] = customer_owned_ipv4_pool __props__.__dict__["default_target_group"] = default_target_group __props__.__dict__["default_target_group_port"] = default_target_group_port @@ -567,6 +614,7 @@ def _internal_init(__self__, __props__.__dict__["enable_tls_version_and_cipher_suite_headers"] = enable_tls_version_and_cipher_suite_headers __props__.__dict__["enable_waf_fail_open"] = enable_waf_fail_open __props__.__dict__["enable_xff_client_port"] = enable_xff_client_port + __props__.__dict__["enforce_security_group_inbound_rules_on_private_link_traffic"] = enforce_security_group_inbound_rules_on_private_link_traffic __props__.__dict__["idle_timeout"] = idle_timeout __props__.__dict__["internal"] = internal __props__.__dict__["ip_address_type"] = ip_address_type