diff --git a/resourceSchema/schema_aws.json b/resourceSchema/schema_aws.json index ad4b920..1a23f03 100644 --- a/resourceSchema/schema_aws.json +++ b/resourceSchema/schema_aws.json @@ -2639,7 +2639,7 @@ "properties": { "types": { "type": "string", - "description": "List of endpoint types. This resource currently only supports managing a single value. Valid values: `EDGE` or `REGIONAL`. If unspecified, defaults to `EDGE`. Must be declared as `REGIONAL` in non-Commercial partitions. Refer to the [documentation](https://docs.aws.amazon.com/apigateway/latest/developerguide/create-regional-api.html) for more information on the difference between edge-optimized and regional APIs.\n" + "description": "A list of endpoint types of an API or its custom domain name. For an edge-optimized API and its custom domain name, the endpoint type is `EDGE`. For a regional API and its custom domain name, the endpoint type is `REGIONAL`. For a private API, the endpoint type is `PRIVATE`.\n" } }, "type": "object", @@ -23141,6 +23141,47 @@ "text" ] }, + "aws:bedrock/InferenceProfileModel:InferenceProfileModel": { + "properties": { + "modelArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the model.\n" + } + }, + "type": "object", + "required": [ + "modelArn" + ] + }, + "aws:bedrock/InferenceProfileModelSource:InferenceProfileModelSource": { + "properties": { + "copyFrom": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the model.\n" + } + }, + "type": "object", + "required": [ + "copyFrom" + ] + }, + "aws:bedrock/InferenceProfileTimeouts:InferenceProfileTimeouts": { + "properties": { + "create": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + }, + "delete": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n" + }, + "update": { + "type": "string", + "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n" + } + }, + "type": "object" + }, "aws:bedrock/ProvisionedModelThroughputTimeouts:ProvisionedModelThroughputTimeouts": { "properties": { "create": { @@ -50073,11 +50114,11 @@ "properties": { "associateCarrierIpAddress": { "type": "string", - "description": "Associate a Carrier IP address with `eth0` for a new network interface.\nUse this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface.\nBoolean value, can be left unset.\n" + "description": "Associate a Carrier IP address with `eth0` for a new network interface. Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. Boolean value, can be left unset.\n" }, "associatePublicIpAddress": { "type": "string", - "description": "Associate a public ip address with the network interface.\nBoolean value, can be left unset.\n" + "description": "Associate a public ip address with the network interface. Boolean value, can be left unset.\n" }, "deleteOnTermination": { "type": "string", @@ -61804,7 +61845,7 @@ }, "value": { "type": "string", - "description": "Value to assign to the setting. Valid values: `enabled`, `disabled`.\n" + "description": "Value to assign to the setting. Valid values: `enhanced`, `enabled`, `disabled`.\n" } }, "type": "object", @@ -63309,8 +63350,7 @@ }, "nodeRoleArn": { "type": "string", - "description": "The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled..\n", - "willReplaceOnChanges": true + "description": "The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled..\n" } }, "type": "object" @@ -71347,6 +71387,14 @@ "type": "boolean", "description": "Indicates whether the table optimizer is enabled.\n" }, + "orphanFileDeletionConfiguration": { + "$ref": "#/types/aws:glue/CatalogTableOptimizerConfigurationOrphanFileDeletionConfiguration:CatalogTableOptimizerConfigurationOrphanFileDeletionConfiguration", + "description": "The configuration block for an orphan file deletion optimizer. See Orphan File Deletion Configuration for additional details.\n" + }, + "retentionConfiguration": { + "$ref": "#/types/aws:glue/CatalogTableOptimizerConfigurationRetentionConfiguration:CatalogTableOptimizerConfigurationRetentionConfiguration", + "description": "The configuration block for a snapshot retention optimizer. See Retention Configuration for additional details.\n" + }, "roleArn": { "type": "string", "description": "The ARN of the IAM role to use for the table optimizer.\n" @@ -71358,6 +71406,54 @@ "roleArn" ] }, + "aws:glue/CatalogTableOptimizerConfigurationOrphanFileDeletionConfiguration:CatalogTableOptimizerConfigurationOrphanFileDeletionConfiguration": { + "properties": { + "icebergConfiguration": { + "$ref": "#/types/aws:glue/CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfiguration:CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfiguration", + "description": "The configuration for an Iceberg orphan file deletion optimizer.\n" + } + }, + "type": "object" + }, + "aws:glue/CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfiguration:CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfiguration": { + "properties": { + "location": { + "type": "string", + "description": "Specifies a directory in which to look for files. You may choose a sub-directory rather than the top-level table location. Defaults to the table's location.\n" + }, + "orphanFileRetentionPeriodInDays": { + "type": "number", + "description": "The number of days that orphan files should be retained before file deletion. Defaults to `3`.\n" + } + }, + "type": "object" + }, + "aws:glue/CatalogTableOptimizerConfigurationRetentionConfiguration:CatalogTableOptimizerConfigurationRetentionConfiguration": { + "properties": { + "icebergConfiguration": { + "$ref": "#/types/aws:glue/CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfiguration:CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfiguration", + "description": "The configuration for an Iceberg snapshot retention optimizer.\n" + } + }, + "type": "object" + }, + "aws:glue/CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfiguration:CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfiguration": { + "properties": { + "cleanExpiredFiles": { + "type": "boolean", + "description": "If set to `false`, snapshots are only deleted from table metadata, and the underlying data and metadata files are not deleted. Defaults to `false`.\n" + }, + "numberOfSnapshotsToRetain": { + "type": "number", + "description": "The number of Iceberg snapshots to retain within the retention period. Defaults to `1` or the corresponding Iceberg table configuration field if it exists.\n" + }, + "snapshotRetentionPeriodInDays": { + "type": "number", + "description": "The number of days to retain the Iceberg snapshots. Defaults to `5`, or the corresponding Iceberg table configuration field if it exists.\n" + } + }, + "type": "object" + }, "aws:glue/CatalogTablePartitionIndex:CatalogTablePartitionIndex": { "properties": { "indexName": { @@ -121331,6 +121427,9 @@ "$ref": "#/types/aws:msk/ReplicatorReplicationInfoListTopicReplicationStartingPosition:ReplicatorReplicationInfoListTopicReplicationStartingPosition", "description": "Configuration for specifying the position in the topics to start replicating from.\n" }, + "topicNameConfiguration": { + "$ref": "#/types/aws:msk/ReplicatorReplicationInfoListTopicReplicationTopicNameConfiguration:ReplicatorReplicationInfoListTopicReplicationTopicNameConfiguration" + }, "topicsToExcludes": { "type": "array", "items": { @@ -121354,6 +121453,7 @@ "nodejs": { "requiredOutputs": [ "startingPosition", + "topicNameConfiguration", "topicsToReplicates" ] } @@ -121369,6 +121469,15 @@ }, "type": "object" }, + "aws:msk/ReplicatorReplicationInfoListTopicReplicationTopicNameConfiguration:ReplicatorReplicationInfoListTopicReplicationTopicNameConfiguration": { + "properties": { + "type": { + "type": "string", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, "aws:msk/ServerlessClusterClientAuthentication:ServerlessClusterClientAuthentication": { "properties": { "sasl": { @@ -122568,6 +122677,10 @@ }, "aws:networkfirewall/FirewallPolicyFirewallPolicyStatefulEngineOptions:FirewallPolicyFirewallPolicyStatefulEngineOptions": { "properties": { + "flowTimeouts": { + "$ref": "#/types/aws:networkfirewall/FirewallPolicyFirewallPolicyStatefulEngineOptionsFlowTimeouts:FirewallPolicyFirewallPolicyStatefulEngineOptionsFlowTimeouts", + "description": "Amount of time that can pass without any traffic sent through the firewall before the firewall determines that the connection is idle.\n" + }, "ruleOrder": { "type": "string", "description": "Indicates how to manage the order of stateful rule evaluation for the policy. Default value: `DEFAULT_ACTION_ORDER`. Valid values: `DEFAULT_ACTION_ORDER`, `STRICT_ORDER`.\n" @@ -122579,6 +122692,15 @@ }, "type": "object" }, + "aws:networkfirewall/FirewallPolicyFirewallPolicyStatefulEngineOptionsFlowTimeouts:FirewallPolicyFirewallPolicyStatefulEngineOptionsFlowTimeouts": { + "properties": { + "tcpIdleTimeoutSeconds": { + "type": "integer", + "description": "Number of seconds that can pass without any TCP traffic sent through the firewall before the firewall determines that the connection is idle. After the idle timeout passes, data packets are dropped, however, the next TCP SYN packet is considered a new flow and is processed by the firewall. Clients or targets can use TCP keepalive packets to reset the idle timeout. Default value: `350`.\n" + } + }, + "type": "object" + }, "aws:networkfirewall/FirewallPolicyFirewallPolicyStatefulRuleGroupReference:FirewallPolicyFirewallPolicyStatefulRuleGroupReference": { "properties": { "override": { @@ -122728,7 +122850,7 @@ "additionalProperties": { "type": "string" }, - "description": "A map describing the logging destination for the chosen `log_destination_type`.\n* For an Amazon S3 bucket, specify the key `bucketName` with the name of the bucket and optionally specify the key `prefix` with a path.\n* For a CloudWatch log group, specify the key `logGroup` with the name of the CloudWatch log group.\n* For a Kinesis Data Firehose delivery stream, specify the key `deliveryStream` with the name of the delivery stream.\n" + "description": "A map describing the logging destination for the chosen `log_destination_type`.\n* For an Amazon S3 bucket, specify the key `bucketName` with the name of the bucket and optionally specify the key `prefix` with a path (Do not add a leading / in the `prefix` as the configuration will have two // when applied).\n* For a CloudWatch log group, specify the key `logGroup` with the name of the CloudWatch log group.\n* For a Kinesis Data Firehose delivery stream, specify the key `deliveryStream` with the name of the delivery stream.\n" }, "logDestinationType": { "type": "string", @@ -134103,13 +134225,26 @@ "minCapacity": { "type": "number", "description": "Minimum capacity for an Aurora DB cluster in `provisioned` DB engine mode. The minimum capacity must be lesser than or equal to the maximum capacity. Valid capacity values are in a range of `0` up to `256` in steps of `0.5`.\n" + }, + "secondsUntilAutoPause": { + "type": "integer", + "description": "Time, in seconds, before an Aurora DB cluster in `provisioned` DB engine mode is paused. Valid values are `300` through `86400`.\n" } }, "type": "object", "required": [ "maxCapacity", "minCapacity" - ] + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "maxCapacity", + "minCapacity", + "secondsUntilAutoPause" + ] + } + } }, "aws:rds/EngineMode:EngineMode": { "type": "string", @@ -134166,11 +134301,11 @@ "properties": { "dbClusterArn": { "type": "string", - "description": "Amazon Resource Name (ARN) of member DB Cluster\n" + "description": "Amazon Resource Name (ARN) of member DB Cluster.\n" }, "isWriter": { "type": "boolean", - "description": "Whether the member is the primary DB Cluster\n" + "description": "Whether the member is the primary DB Cluster.\n" } }, "type": "object", @@ -151080,6 +151215,10 @@ }, "aws:sesv2/ConfigurationSetDeliveryOptions:ConfigurationSetDeliveryOptions": { "properties": { + "maxDeliverySeconds": { + "type": "integer", + "description": "The maximum amount of time, in seconds, that Amazon SES API v2 will attempt delivery of email. If specified, the value must greater than or equal to 300 seconds (5 minutes) and less than or equal to 50400 seconds (840 minutes).\n" + }, "sendingPoolName": { "type": "string", "description": "The name of the dedicated IP pool to associate with the configuration set.\n" @@ -151272,6 +151411,10 @@ "customRedirectDomain": { "type": "string", "description": "The domain to use for tracking open and click events.\n" + }, + "httpsPolicy": { + "type": "string", + "description": "The https policy to use for tracking open and click events. Valid values are `REQUIRE`, `REQUIRE_OPEN_ONLY` or `OPTIONAL`.\n" } }, "type": "object", @@ -151391,6 +151534,10 @@ }, "aws:sesv2/getConfigurationSetDeliveryOption:getConfigurationSetDeliveryOption": { "properties": { + "maxDeliverySeconds": { + "type": "integer", + "description": "The maximum amount of time, in seconds, that Amazon SES API v2 will attempt delivery of email. If specified, the value must greater than or equal to 300 seconds (5 minutes) and less than or equal to 50400 seconds (840 minutes).\n" + }, "sendingPoolName": { "type": "string", "description": "The name of the dedicated IP pool to associate with the configuration set.\n" @@ -151402,6 +151549,7 @@ }, "type": "object", "required": [ + "maxDeliverySeconds", "sendingPoolName", "tlsPolicy" ], @@ -151475,11 +151623,16 @@ "customRedirectDomain": { "type": "string", "description": "The domain to use for tracking open and click events.\n" + }, + "httpsPolicy": { + "type": "string", + "description": "The https policy to use for tracking open and click events. Valid values are `REQUIRE`, `REQUIRE_OPEN_ONLY` or `OPTIONAL`.\n" } }, "type": "object", "required": [ - "customRedirectDomain" + "customRedirectDomain", + "httpsPolicy" ], "language": { "nodejs": { @@ -173039,7 +173192,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tagsAll": { "type": "object", @@ -173106,7 +173259,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tcpIdleTimeoutSeconds": { "type": "integer", @@ -173165,7 +173318,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tagsAll": { "type": "object", @@ -176051,7 +176204,7 @@ } }, "aws:apigateway/basePathMapping:BasePathMapping": { - "description": "Connects a custom domain name registered via `aws.apigateway.DomainName`\nwith a deployed API so that its methods can be called via the\ncustom domain name.\n\n## Import\n\nFor a non-root `base_path`:\n\nUsing `pulumi import`, import `aws_api_gateway_base_path_mapping` using the domain name and base path. For example:\n\nFor an empty `base_path` or, in other words, a root path (`/`):\n\n```sh\n$ pulumi import aws:apigateway/basePathMapping:BasePathMapping example example.com/\n```\nFor a non-root `base_path`:\n\n```sh\n$ pulumi import aws:apigateway/basePathMapping:BasePathMapping example example.com/base-path\n```\n", + "description": "Connects a custom domain name registered via `aws.apigateway.DomainName`\nwith a deployed API so that its methods can be called via the\ncustom domain name.\n\n## Import\n\nFor a non-root `base_path`:\n\nFor a non-root `base_path` and a private custom domain name:\n\nUsing `pulumi import`, import `aws_api_gateway_base_path_mapping` using the domain name and base path or domain name, base path and domain name ID (for private custom domain names). For example:\n\nFor an empty `base_path` or, in other words, a root path (`/`):\n\n```sh\n$ pulumi import aws:apigateway/basePathMapping:BasePathMapping example example.com/\n```\nFor a non-root `base_path`:\n\n```sh\n$ pulumi import aws:apigateway/basePathMapping:BasePathMapping example example.com/base-path\n```\nFor a non-root `base_path` and a private custom domain name:\n\n```sh\n$ pulumi import aws:apigateway/basePathMapping:BasePathMapping example api.internal.example.com/base-path/abcde12345\n```\n", "properties": { "basePath": { "type": "string", @@ -176061,6 +176214,10 @@ "type": "string", "description": "Already-registered domain name to connect the API to.\n" }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "restApi": { "type": "string", "description": "ID of the API to connect.\n" @@ -176084,6 +176241,10 @@ "description": "Already-registered domain name to connect the API to.\n", "willReplaceOnChanges": true }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "restApi": { "type": "string", "oneOf": [ @@ -176118,6 +176279,10 @@ "description": "Already-registered domain name to connect the API to.\n", "willReplaceOnChanges": true }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "restApi": { "type": "string", "oneOf": [ @@ -176561,7 +176726,7 @@ } }, "aws:apigateway/domainName:DomainName": { - "description": "Registers a custom domain name for use with AWS API Gateway. Additional information about this functionality\ncan be found in the [API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).\n\nThis resource just establishes ownership of and the TLS settings for\na particular domain name. An API can be attached to a particular path\nunder the registered domain name using\nthe `aws.apigateway.BasePathMapping` resource.\n\nAPI Gateway domains can be defined as either 'edge-optimized' or 'regional'. In an edge-optimized configuration,\nAPI Gateway internally creates and manages a CloudFront distribution to route requests on the given hostname. In\naddition to this resource it's necessary to create a DNS record corresponding to the given domain name which is an alias\n(either Route53 alias or traditional CNAME) to the Cloudfront domain name exported in the `cloudfront_domain_name`\nattribute.\n\nIn a regional configuration, API Gateway does not create a CloudFront distribution to route requests to the API, though\na distribution can be created if needed. In either case, it is necessary to create a DNS record corresponding to the\ngiven domain name which is an alias (either Route53 alias or traditional CNAME) to the regional domain name exported in\nthe `regional_domain_name` attribute.\n\n\u003e **Note:** API Gateway requires the use of AWS Certificate Manager (ACM) certificates instead of Identity and Access Management (IAM) certificates in regions that support ACM. Regions that support ACM can be found in the [Regions and Endpoints Documentation](https://docs.aws.amazon.com/general/latest/gr/rande.html#acm_region). To import an existing private key and certificate into ACM or request an ACM certificate, see the `aws.acm.Certificate` resource.\n\n\u003e **Note:** The `aws.apigateway.DomainName` resource expects dependency on the `aws.acm.CertificateValidation` as\nonly verified certificates can be used. This can be made either explicitly by adding the\n`depends_on = [aws_acm_certificate_validation.cert]` attribute. Or implicitly by referring certificate ARN\nfrom the validation resource where it will be available after the resource creation:\n`regional_certificate_arn = aws_acm_certificate_validation.cert.certificate_arn`.\n\n## Example Usage\n\n### Edge Optimized (ACM Certificate)\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.apigateway.DomainName(\"example\", {\n certificateArn: exampleAwsAcmCertificateValidation.certificateArn,\n domainName: \"api.example.com\",\n});\n// Example DNS record using Route53.\n// Route53 is not specifically required; any DNS host can be used.\nconst exampleRecord = new aws.route53.Record(\"example\", {\n name: example.domainName,\n type: aws.route53.RecordType.A,\n zoneId: exampleAwsRoute53Zone.id,\n aliases: [{\n evaluateTargetHealth: true,\n name: example.cloudfrontDomainName,\n zoneId: example.cloudfrontZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.apigateway.DomainName(\"example\",\n certificate_arn=example_aws_acm_certificate_validation[\"certificateArn\"],\n domain_name=\"api.example.com\")\n# Example DNS record using Route53.\n# Route53 is not specifically required; any DNS host can be used.\nexample_record = aws.route53.Record(\"example\",\n name=example.domain_name,\n type=aws.route53.RecordType.A,\n zone_id=example_aws_route53_zone[\"id\"],\n aliases=[{\n \"evaluate_target_health\": True,\n \"name\": example.cloudfront_domain_name,\n \"zone_id\": example.cloudfront_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ApiGateway.DomainName(\"example\", new()\n {\n CertificateArn = exampleAwsAcmCertificateValidation.CertificateArn,\n Domain = \"api.example.com\",\n });\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Aws.Route53.Record(\"example\", new()\n {\n Name = example.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = exampleAwsRoute53Zone.Id,\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = true,\n Name = example.CloudfrontDomainName,\n ZoneId = example.CloudfrontZoneId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := apigateway.NewDomainName(ctx, \"example\", \u0026apigateway.DomainNameArgs{\n\t\t\tCertificateArn: pulumi.Any(exampleAwsAcmCertificateValidation.CertificateArn),\n\t\t\tDomainName: pulumi.String(\"api.example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example DNS record using Route53.\n\t\t// Route53 is not specifically required; any DNS host can be used.\n\t\t_, err = route53.NewRecord(ctx, \"example\", \u0026route53.RecordArgs{\n\t\t\tName: example.DomainName,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(true),\n\t\t\t\t\tName: example.CloudfrontDomainName,\n\t\t\t\t\tZoneId: example.CloudfrontZoneId,\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.apigateway.DomainName;\nimport com.pulumi.aws.apigateway.DomainNameArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 DomainName(\"example\", DomainNameArgs.builder()\n .certificateArn(exampleAwsAcmCertificateValidation.certificateArn())\n .domainName(\"api.example.com\")\n .build());\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Record(\"exampleRecord\", RecordArgs.builder()\n .name(example.domainName())\n .type(\"A\")\n .zoneId(exampleAwsRoute53Zone.id())\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(true)\n .name(example.cloudfrontDomainName())\n .zoneId(example.cloudfrontZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:apigateway:DomainName\n properties:\n certificateArn: ${exampleAwsAcmCertificateValidation.certificateArn}\n domainName: api.example.com\n # Example DNS record using Route53.\n # Route53 is not specifically required; any DNS host can be used.\n exampleRecord:\n type: aws:route53:Record\n name: example\n properties:\n name: ${example.domainName}\n type: A\n zoneId: ${exampleAwsRoute53Zone.id}\n aliases:\n - evaluateTargetHealth: true\n name: ${example.cloudfrontDomainName}\n zoneId: ${example.cloudfrontZoneId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Regional (ACM Certificate)\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.apigateway.DomainName(\"example\", {\n domainName: \"api.example.com\",\n regionalCertificateArn: exampleAwsAcmCertificateValidation.certificateArn,\n endpointConfiguration: {\n types: \"REGIONAL\",\n },\n});\n// Example DNS record using Route53.\n// Route53 is not specifically required; any DNS host can be used.\nconst exampleRecord = new aws.route53.Record(\"example\", {\n name: example.domainName,\n type: aws.route53.RecordType.A,\n zoneId: exampleAwsRoute53Zone.id,\n aliases: [{\n evaluateTargetHealth: true,\n name: example.regionalDomainName,\n zoneId: example.regionalZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.apigateway.DomainName(\"example\",\n domain_name=\"api.example.com\",\n regional_certificate_arn=example_aws_acm_certificate_validation[\"certificateArn\"],\n endpoint_configuration={\n \"types\": \"REGIONAL\",\n })\n# Example DNS record using Route53.\n# Route53 is not specifically required; any DNS host can be used.\nexample_record = aws.route53.Record(\"example\",\n name=example.domain_name,\n type=aws.route53.RecordType.A,\n zone_id=example_aws_route53_zone[\"id\"],\n aliases=[{\n \"evaluate_target_health\": True,\n \"name\": example.regional_domain_name,\n \"zone_id\": example.regional_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ApiGateway.DomainName(\"example\", new()\n {\n Domain = \"api.example.com\",\n RegionalCertificateArn = exampleAwsAcmCertificateValidation.CertificateArn,\n EndpointConfiguration = new Aws.ApiGateway.Inputs.DomainNameEndpointConfigurationArgs\n {\n Types = \"REGIONAL\",\n },\n });\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Aws.Route53.Record(\"example\", new()\n {\n Name = example.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = exampleAwsRoute53Zone.Id,\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = true,\n Name = example.RegionalDomainName,\n ZoneId = example.RegionalZoneId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := apigateway.NewDomainName(ctx, \"example\", \u0026apigateway.DomainNameArgs{\n\t\t\tDomainName: pulumi.String(\"api.example.com\"),\n\t\t\tRegionalCertificateArn: pulumi.Any(exampleAwsAcmCertificateValidation.CertificateArn),\n\t\t\tEndpointConfiguration: \u0026apigateway.DomainNameEndpointConfigurationArgs{\n\t\t\t\tTypes: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example DNS record using Route53.\n\t\t// Route53 is not specifically required; any DNS host can be used.\n\t\t_, err = route53.NewRecord(ctx, \"example\", \u0026route53.RecordArgs{\n\t\t\tName: example.DomainName,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(true),\n\t\t\t\t\tName: example.RegionalDomainName,\n\t\t\t\t\tZoneId: example.RegionalZoneId,\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.apigateway.DomainName;\nimport com.pulumi.aws.apigateway.DomainNameArgs;\nimport com.pulumi.aws.apigateway.inputs.DomainNameEndpointConfigurationArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 DomainName(\"example\", DomainNameArgs.builder()\n .domainName(\"api.example.com\")\n .regionalCertificateArn(exampleAwsAcmCertificateValidation.certificateArn())\n .endpointConfiguration(DomainNameEndpointConfigurationArgs.builder()\n .types(\"REGIONAL\")\n .build())\n .build());\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Record(\"exampleRecord\", RecordArgs.builder()\n .name(example.domainName())\n .type(\"A\")\n .zoneId(exampleAwsRoute53Zone.id())\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(true)\n .name(example.regionalDomainName())\n .zoneId(example.regionalZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:apigateway:DomainName\n properties:\n domainName: api.example.com\n regionalCertificateArn: ${exampleAwsAcmCertificateValidation.certificateArn}\n endpointConfiguration:\n types: REGIONAL\n # Example DNS record using Route53.\n # Route53 is not specifically required; any DNS host can be used.\n exampleRecord:\n type: aws:route53:Record\n name: example\n properties:\n name: ${example.domainName}\n type: A\n zoneId: ${exampleAwsRoute53Zone.id}\n aliases:\n - evaluateTargetHealth: true\n name: ${example.regionalDomainName}\n zoneId: ${example.regionalZoneId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import API Gateway domain names using their `name`. For example:\n\n```sh\n$ pulumi import aws:apigateway/domainName:DomainName example dev.example.com\n```\n", + "description": "Registers a custom domain name for use with AWS API Gateway. Additional information about this functionality\ncan be found in the [API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).\n\nThis resource just establishes ownership of and the TLS settings for\na particular domain name. An API can be attached to a particular path\nunder the registered domain name using\nthe `aws.apigateway.BasePathMapping` resource.\n\nAPI Gateway domains can be defined as either 'edge-optimized' or 'regional'. In an edge-optimized configuration,\nAPI Gateway internally creates and manages a CloudFront distribution to route requests on the given hostname. In\naddition to this resource it's necessary to create a DNS record corresponding to the given domain name which is an alias\n(either Route53 alias or traditional CNAME) to the Cloudfront domain name exported in the `cloudfront_domain_name`\nattribute.\n\nIn a regional configuration, API Gateway does not create a CloudFront distribution to route requests to the API, though\na distribution can be created if needed. In either case, it is necessary to create a DNS record corresponding to the\ngiven domain name which is an alias (either Route53 alias or traditional CNAME) to the regional domain name exported in\nthe `regional_domain_name` attribute.\n\n\u003e **Note:** API Gateway requires the use of AWS Certificate Manager (ACM) certificates instead of Identity and Access Management (IAM) certificates in regions that support ACM. Regions that support ACM can be found in the [Regions and Endpoints Documentation](https://docs.aws.amazon.com/general/latest/gr/rande.html#acm_region). To import an existing private key and certificate into ACM or request an ACM certificate, see the `aws.acm.Certificate` resource.\n\n\u003e **Note:** The `aws.apigateway.DomainName` resource expects dependency on the `aws.acm.CertificateValidation` as\nonly verified certificates can be used. This can be made either explicitly by adding the\n`depends_on = [aws_acm_certificate_validation.cert]` attribute. Or implicitly by referring certificate ARN\nfrom the validation resource where it will be available after the resource creation:\n`regional_certificate_arn = aws_acm_certificate_validation.cert.certificate_arn`.\n\n## Example Usage\n\n### Edge Optimized (ACM Certificate)\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.apigateway.DomainName(\"example\", {\n certificateArn: exampleAwsAcmCertificateValidation.certificateArn,\n domainName: \"api.example.com\",\n});\n// Example DNS record using Route53.\n// Route53 is not specifically required; any DNS host can be used.\nconst exampleRecord = new aws.route53.Record(\"example\", {\n name: example.domainName,\n type: aws.route53.RecordType.A,\n zoneId: exampleAwsRoute53Zone.id,\n aliases: [{\n evaluateTargetHealth: true,\n name: example.cloudfrontDomainName,\n zoneId: example.cloudfrontZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.apigateway.DomainName(\"example\",\n certificate_arn=example_aws_acm_certificate_validation[\"certificateArn\"],\n domain_name=\"api.example.com\")\n# Example DNS record using Route53.\n# Route53 is not specifically required; any DNS host can be used.\nexample_record = aws.route53.Record(\"example\",\n name=example.domain_name,\n type=aws.route53.RecordType.A,\n zone_id=example_aws_route53_zone[\"id\"],\n aliases=[{\n \"evaluate_target_health\": True,\n \"name\": example.cloudfront_domain_name,\n \"zone_id\": example.cloudfront_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ApiGateway.DomainName(\"example\", new()\n {\n CertificateArn = exampleAwsAcmCertificateValidation.CertificateArn,\n Domain = \"api.example.com\",\n });\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Aws.Route53.Record(\"example\", new()\n {\n Name = example.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = exampleAwsRoute53Zone.Id,\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = true,\n Name = example.CloudfrontDomainName,\n ZoneId = example.CloudfrontZoneId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := apigateway.NewDomainName(ctx, \"example\", \u0026apigateway.DomainNameArgs{\n\t\t\tCertificateArn: pulumi.Any(exampleAwsAcmCertificateValidation.CertificateArn),\n\t\t\tDomainName: pulumi.String(\"api.example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example DNS record using Route53.\n\t\t// Route53 is not specifically required; any DNS host can be used.\n\t\t_, err = route53.NewRecord(ctx, \"example\", \u0026route53.RecordArgs{\n\t\t\tName: example.DomainName,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(true),\n\t\t\t\t\tName: example.CloudfrontDomainName,\n\t\t\t\t\tZoneId: example.CloudfrontZoneId,\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.apigateway.DomainName;\nimport com.pulumi.aws.apigateway.DomainNameArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 DomainName(\"example\", DomainNameArgs.builder()\n .certificateArn(exampleAwsAcmCertificateValidation.certificateArn())\n .domainName(\"api.example.com\")\n .build());\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Record(\"exampleRecord\", RecordArgs.builder()\n .name(example.domainName())\n .type(\"A\")\n .zoneId(exampleAwsRoute53Zone.id())\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(true)\n .name(example.cloudfrontDomainName())\n .zoneId(example.cloudfrontZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:apigateway:DomainName\n properties:\n certificateArn: ${exampleAwsAcmCertificateValidation.certificateArn}\n domainName: api.example.com\n # Example DNS record using Route53.\n # Route53 is not specifically required; any DNS host can be used.\n exampleRecord:\n type: aws:route53:Record\n name: example\n properties:\n name: ${example.domainName}\n type: A\n zoneId: ${exampleAwsRoute53Zone.id}\n aliases:\n - evaluateTargetHealth: true\n name: ${example.cloudfrontDomainName}\n zoneId: ${example.cloudfrontZoneId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Regional (ACM Certificate)\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.apigateway.DomainName(\"example\", {\n domainName: \"api.example.com\",\n regionalCertificateArn: exampleAwsAcmCertificateValidation.certificateArn,\n endpointConfiguration: {\n types: \"REGIONAL\",\n },\n});\n// Example DNS record using Route53.\n// Route53 is not specifically required; any DNS host can be used.\nconst exampleRecord = new aws.route53.Record(\"example\", {\n name: example.domainName,\n type: aws.route53.RecordType.A,\n zoneId: exampleAwsRoute53Zone.id,\n aliases: [{\n evaluateTargetHealth: true,\n name: example.regionalDomainName,\n zoneId: example.regionalZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.apigateway.DomainName(\"example\",\n domain_name=\"api.example.com\",\n regional_certificate_arn=example_aws_acm_certificate_validation[\"certificateArn\"],\n endpoint_configuration={\n \"types\": \"REGIONAL\",\n })\n# Example DNS record using Route53.\n# Route53 is not specifically required; any DNS host can be used.\nexample_record = aws.route53.Record(\"example\",\n name=example.domain_name,\n type=aws.route53.RecordType.A,\n zone_id=example_aws_route53_zone[\"id\"],\n aliases=[{\n \"evaluate_target_health\": True,\n \"name\": example.regional_domain_name,\n \"zone_id\": example.regional_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ApiGateway.DomainName(\"example\", new()\n {\n Domain = \"api.example.com\",\n RegionalCertificateArn = exampleAwsAcmCertificateValidation.CertificateArn,\n EndpointConfiguration = new Aws.ApiGateway.Inputs.DomainNameEndpointConfigurationArgs\n {\n Types = \"REGIONAL\",\n },\n });\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Aws.Route53.Record(\"example\", new()\n {\n Name = example.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = exampleAwsRoute53Zone.Id,\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = true,\n Name = example.RegionalDomainName,\n ZoneId = example.RegionalZoneId,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := apigateway.NewDomainName(ctx, \"example\", \u0026apigateway.DomainNameArgs{\n\t\t\tDomainName: pulumi.String(\"api.example.com\"),\n\t\t\tRegionalCertificateArn: pulumi.Any(exampleAwsAcmCertificateValidation.CertificateArn),\n\t\t\tEndpointConfiguration: \u0026apigateway.DomainNameEndpointConfigurationArgs{\n\t\t\t\tTypes: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example DNS record using Route53.\n\t\t// Route53 is not specifically required; any DNS host can be used.\n\t\t_, err = route53.NewRecord(ctx, \"example\", \u0026route53.RecordArgs{\n\t\t\tName: example.DomainName,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.Any(exampleAwsRoute53Zone.Id),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(true),\n\t\t\t\t\tName: example.RegionalDomainName,\n\t\t\t\t\tZoneId: example.RegionalZoneId,\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.apigateway.DomainName;\nimport com.pulumi.aws.apigateway.DomainNameArgs;\nimport com.pulumi.aws.apigateway.inputs.DomainNameEndpointConfigurationArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 DomainName(\"example\", DomainNameArgs.builder()\n .domainName(\"api.example.com\")\n .regionalCertificateArn(exampleAwsAcmCertificateValidation.certificateArn())\n .endpointConfiguration(DomainNameEndpointConfigurationArgs.builder()\n .types(\"REGIONAL\")\n .build())\n .build());\n\n // Example DNS record using Route53.\n // Route53 is not specifically required; any DNS host can be used.\n var exampleRecord = new Record(\"exampleRecord\", RecordArgs.builder()\n .name(example.domainName())\n .type(\"A\")\n .zoneId(exampleAwsRoute53Zone.id())\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(true)\n .name(example.regionalDomainName())\n .zoneId(example.regionalZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:apigateway:DomainName\n properties:\n domainName: api.example.com\n regionalCertificateArn: ${exampleAwsAcmCertificateValidation.certificateArn}\n endpointConfiguration:\n types: REGIONAL\n # Example DNS record using Route53.\n # Route53 is not specifically required; any DNS host can be used.\n exampleRecord:\n type: aws:route53:Record\n name: example\n properties:\n name: ${example.domainName}\n type: A\n zoneId: ${exampleAwsRoute53Zone.id}\n aliases:\n - evaluateTargetHealth: true\n name: ${example.regionalDomainName}\n zoneId: ${example.regionalZoneId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFor a private custom domain name:\n\nUsing `pulumi import`, import API Gateway domain names using their `name` or `name` and `domain_name_id` (for private custom domain names). For example:\n\n```sh\n$ pulumi import aws:apigateway/domainName:DomainName example dev.example.com\n```\nFor a private custom domain name:\n\n```sh\n$ pulumi import aws:apigateway/domainName:DomainName example dev.api.internal.example.com/abcde12345\n```\n", "properties": { "arn": { "type": "string", @@ -176609,6 +176774,10 @@ } } }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "endpointConfiguration": { "$ref": "#/types/aws:apigateway/DomainNameEndpointConfiguration:DomainNameEndpointConfiguration", "description": "Configuration block defining API endpoint information including type. See below.\n" @@ -176621,6 +176790,10 @@ "type": "string", "description": "ARN of the AWS-issued certificate used to validate custom domain ownership (when `certificate_arn` is issued via an ACM Private CA or `mutual_tls_authentication` is configured with an ACM-imported certificate.)\n" }, + "policy": { + "type": "string", + "description": "A stringified JSON policy document that applies to the execute-api service for this DomainName regardless of the caller and Method configuration. Supported only for private custom domain names.\n" + }, "regionalCertificateArn": { "type": "string", "description": "ARN for an AWS-managed certificate. AWS Certificate Manager is the only supported source. Used when a regional domain name is desired. Conflicts with `certificate_arn`, `certificate_name`, `certificate_body`, `certificate_chain`, and `certificate_private_key`.\n\nWhen uploading a certificate, the following arguments are supported:\n" @@ -176663,6 +176836,7 @@ "cloudfrontDomainName", "cloudfrontZoneId", "domainName", + "domainNameId", "endpointConfiguration", "ownershipVerificationCertificateArn", "regionalDomainName", @@ -176717,6 +176891,10 @@ "type": "string", "description": "ARN of the AWS-issued certificate used to validate custom domain ownership (when `certificate_arn` is issued via an ACM Private CA or `mutual_tls_authentication` is configured with an ACM-imported certificate.)\n" }, + "policy": { + "type": "string", + "description": "A stringified JSON policy document that applies to the execute-api service for this DomainName regardless of the caller and Method configuration. Supported only for private custom domain names.\n" + }, "regionalCertificateArn": { "type": "string", "description": "ARN for an AWS-managed certificate. AWS Certificate Manager is the only supported source. Used when a regional domain name is desired. Conflicts with `certificate_arn`, `certificate_name`, `certificate_body`, `certificate_chain`, and `certificate_private_key`.\n\nWhen uploading a certificate, the following arguments are supported:\n" @@ -176793,6 +176971,10 @@ }, "willReplaceOnChanges": true }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "endpointConfiguration": { "$ref": "#/types/aws:apigateway/DomainNameEndpointConfiguration:DomainNameEndpointConfiguration", "description": "Configuration block defining API endpoint information including type. See below.\n" @@ -176805,6 +176987,10 @@ "type": "string", "description": "ARN of the AWS-issued certificate used to validate custom domain ownership (when `certificate_arn` is issued via an ACM Private CA or `mutual_tls_authentication` is configured with an ACM-imported certificate.)\n" }, + "policy": { + "type": "string", + "description": "A stringified JSON policy document that applies to the execute-api service for this DomainName regardless of the caller and Method configuration. Supported only for private custom domain names.\n" + }, "regionalCertificateArn": { "type": "string", "description": "ARN for an AWS-managed certificate. AWS Certificate Manager is the only supported source. Used when a regional domain name is desired. Conflicts with `certificate_arn`, `certificate_name`, `certificate_body`, `certificate_chain`, and `certificate_private_key`.\n\nWhen uploading a certificate, the following arguments are supported:\n" @@ -194979,6 +195165,163 @@ "type": "object" } }, + "aws:bedrock/inferenceProfile:InferenceProfile": { + "description": "Resource for managing an AWS Bedrock Inference Profile.\n\n## Example Usage\n\n### Basic Usage\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.bedrock.InferenceProfile(\"example\", {\n name: \"Claude Sonnet for Project 123\",\n description: \"Profile with tag for cost allocation tracking\",\n modelSource: {\n copyFrom: \"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n },\n tags: {\n ProjectID: \"123\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ncurrent = aws.get_caller_identity()\nexample = aws.bedrock.InferenceProfile(\"example\",\n name=\"Claude Sonnet for Project 123\",\n description=\"Profile with tag for cost allocation tracking\",\n model_source={\n \"copy_from\": \"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n },\n tags={\n \"ProjectID\": \"123\",\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 current = Aws.GetCallerIdentity.Invoke();\n\n var example = new Aws.Bedrock.InferenceProfile(\"example\", new()\n {\n Name = \"Claude Sonnet for Project 123\",\n Description = \"Profile with tag for cost allocation tracking\",\n ModelSource = new Aws.Bedrock.Inputs.InferenceProfileModelSourceArgs\n {\n CopyFrom = \"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\",\n },\n Tags = \n {\n { \"ProjectID\", \"123\" },\n },\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/bedrock\"\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 := aws.GetCallerIdentity(ctx, \u0026aws.GetCallerIdentityArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bedrock.NewInferenceProfile(ctx, \"example\", \u0026bedrock.InferenceProfileArgs{\n\t\t\tName: pulumi.String(\"Claude Sonnet for Project 123\"),\n\t\t\tDescription: pulumi.String(\"Profile with tag for cost allocation tracking\"),\n\t\t\tModelSource: \u0026bedrock.InferenceProfileModelSourceArgs{\n\t\t\t\tCopyFrom: pulumi.String(\"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"ProjectID\": pulumi.String(\"123\"),\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.AwsFunctions;\nimport com.pulumi.aws.inputs.GetCallerIdentityArgs;\nimport com.pulumi.aws.bedrock.InferenceProfile;\nimport com.pulumi.aws.bedrock.InferenceProfileArgs;\nimport com.pulumi.aws.bedrock.inputs.InferenceProfileModelSourceArgs;\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 InferenceProfile(\"example\", InferenceProfileArgs.builder()\n .name(\"Claude Sonnet for Project 123\")\n .description(\"Profile with tag for cost allocation tracking\")\n .modelSource(InferenceProfileModelSourceArgs.builder()\n .copyFrom(\"arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\")\n .build())\n .tags(Map.of(\"ProjectID\", \"123\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:bedrock:InferenceProfile\n properties:\n name: Claude Sonnet for Project 123\n description: Profile with tag for cost allocation tracking\n modelSource:\n copyFrom: arn:aws:bedrock:us-west-2::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\n tags:\n ProjectID: '123'\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 Bedrock Inference Profile using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:bedrock/inferenceProfile:InferenceProfile example inference_profile-id-12345678\n```\n", + "properties": { + "arn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the inference profile.\n" + }, + "createdAt": { + "type": "string", + "description": "The time at which the inference profile was created.\n" + }, + "description": { + "type": "string", + "description": "The description of the inference profile.\n" + }, + "modelSource": { + "$ref": "#/types/aws:bedrock/InferenceProfileModelSource:InferenceProfileModelSource", + "description": "The source of the model this inference profile will track metrics and cost for. See `model_source`.\n\nThe following arguments are optional:\n" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/types/aws:bedrock/InferenceProfileModel:InferenceProfileModel" + }, + "description": "A list of information about each model in the inference profile. See `models`.\n" + }, + "name": { + "type": "string", + "description": "The name of the inference profile.\n" + }, + "status": { + "type": "string", + "description": "The status of the inference profile. `ACTIVE` means that the inference profile is available to use.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Key-value mapping of resource tags for the inference profile.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:bedrock/InferenceProfileTimeouts:InferenceProfileTimeouts" + }, + "type": { + "type": "string", + "description": "The type of the inference profile. `SYSTEM_DEFINED` means that the inference profile is defined by Amazon Bedrock. `APPLICATION` means that the inference profile is defined by the user.\n" + }, + "updatedAt": { + "type": "string", + "description": "The time at which the inference profile was last updated.\n" + } + }, + "required": [ + "arn", + "createdAt", + "models", + "name", + "status", + "tagsAll", + "type", + "updatedAt" + ], + "inputProperties": { + "description": { + "type": "string", + "description": "The description of the inference profile.\n" + }, + "modelSource": { + "$ref": "#/types/aws:bedrock/InferenceProfileModelSource:InferenceProfileModelSource", + "description": "The source of the model this inference profile will track metrics and cost for. See `model_source`.\n\nThe following arguments are optional:\n" + }, + "name": { + "type": "string", + "description": "The name of the inference profile.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Key-value mapping of resource tags for the inference profile.\n" + }, + "timeouts": { + "$ref": "#/types/aws:bedrock/InferenceProfileTimeouts:InferenceProfileTimeouts" + } + }, + "stateInputs": { + "description": "Input properties used for looking up and filtering InferenceProfile resources.\n", + "properties": { + "arn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of the inference profile.\n" + }, + "createdAt": { + "type": "string", + "description": "The time at which the inference profile was created.\n" + }, + "description": { + "type": "string", + "description": "The description of the inference profile.\n" + }, + "modelSource": { + "$ref": "#/types/aws:bedrock/InferenceProfileModelSource:InferenceProfileModelSource", + "description": "The source of the model this inference profile will track metrics and cost for. See `model_source`.\n\nThe following arguments are optional:\n" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/types/aws:bedrock/InferenceProfileModel:InferenceProfileModel" + }, + "description": "A list of information about each model in the inference profile. See `models`.\n" + }, + "name": { + "type": "string", + "description": "The name of the inference profile.\n" + }, + "status": { + "type": "string", + "description": "The status of the inference profile. `ACTIVE` means that the inference profile is available to use.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Key-value mapping of resource tags for the inference profile.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "deprecationMessage": "Please use `tags` instead." + }, + "timeouts": { + "$ref": "#/types/aws:bedrock/InferenceProfileTimeouts:InferenceProfileTimeouts" + }, + "type": { + "type": "string", + "description": "The type of the inference profile. `SYSTEM_DEFINED` means that the inference profile is defined by Amazon Bedrock. `APPLICATION` means that the inference profile is defined by the user.\n" + }, + "updatedAt": { + "type": "string", + "description": "The time at which the inference profile was last updated.\n" + } + }, + "type": "object" + } + }, "aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput": { "description": "Manages [Provisioned Throughput](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) for an Amazon Bedrock model.\n\n## Example Usage\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.bedrock.ProvisionedModelThroughput(\"example\", {\n provisionedModelName: \"example-model\",\n modelArn: \"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\",\n commitmentDuration: \"SixMonths\",\n modelUnits: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.bedrock.ProvisionedModelThroughput(\"example\",\n provisioned_model_name=\"example-model\",\n model_arn=\"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\",\n commitment_duration=\"SixMonths\",\n model_units=1)\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.Bedrock.ProvisionedModelThroughput(\"example\", new()\n {\n ProvisionedModelName = \"example-model\",\n ModelArn = \"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\",\n CommitmentDuration = \"SixMonths\",\n ModelUnits = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/bedrock\"\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 := bedrock.NewProvisionedModelThroughput(ctx, \"example\", \u0026bedrock.ProvisionedModelThroughputArgs{\n\t\t\tProvisionedModelName: pulumi.String(\"example-model\"),\n\t\t\tModelArn: pulumi.String(\"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\"),\n\t\t\tCommitmentDuration: pulumi.String(\"SixMonths\"),\n\t\t\tModelUnits: pulumi.Int(1),\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.bedrock.ProvisionedModelThroughput;\nimport com.pulumi.aws.bedrock.ProvisionedModelThroughputArgs;\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 ProvisionedModelThroughput(\"example\", ProvisionedModelThroughputArgs.builder()\n .provisionedModelName(\"example-model\")\n .modelArn(\"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\")\n .commitmentDuration(\"SixMonths\")\n .modelUnits(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:bedrock:ProvisionedModelThroughput\n properties:\n provisionedModelName: example-model\n modelArn: arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2\n commitmentDuration: SixMonths\n modelUnits: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Provisioned Throughput using the `provisioned_model_arn`. For example:\n\n```sh\n$ pulumi import aws:bedrock/provisionedModelThroughput:ProvisionedModelThroughput example arn:aws:bedrock:us-west-2:123456789012:provisioned-model/1y5n57gh5y2e\n```\n", "properties": { @@ -204771,6 +205114,160 @@ "type": "object" } }, + "aws:cloudwatch/logAnomalyDetector:LogAnomalyDetector": { + "description": "Resource for managing an AWS CloudWatch Logs Log Anomaly Detector.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test: aws.cloudwatch.LogGroup[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n test.push(new aws.cloudwatch.LogGroup(`test-${range.value}`, {name: `testing-${range.value}`}));\n}\nconst testLogAnomalyDetector = new aws.cloudwatch.LogAnomalyDetector(\"test\", {\n detectorName: \"testing\",\n logGroupArnLists: [test[0].arn],\n anomalyVisibilityTime: 7,\n evaluationFrequency: \"TEN_MIN\",\n enabled: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n test.append(aws.cloudwatch.LogGroup(f\"test-{range['value']}\", name=f\"testing-{range['value']}\"))\ntest_log_anomaly_detector = aws.cloudwatch.LogAnomalyDetector(\"test\",\n detector_name=\"testing\",\n log_group_arn_lists=[test[0].arn],\n anomaly_visibility_time=7,\n evaluation_frequency=\"TEN_MIN\",\n enabled=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new List\u003cAws.CloudWatch.LogGroup\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n test.Add(new Aws.CloudWatch.LogGroup($\"test-{range.Value}\", new()\n {\n Name = $\"testing-{range.Value}\",\n }));\n }\n var testLogAnomalyDetector = new Aws.CloudWatch.LogAnomalyDetector(\"test\", new()\n {\n DetectorName = \"testing\",\n LogGroupArnLists = new[]\n {\n test[0].Arn,\n },\n AnomalyVisibilityTime = 7,\n EvaluationFrequency = \"TEN_MIN\",\n Enabled = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvar test []*cloudwatch.LogGroup\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := cloudwatch.NewLogGroup(ctx, fmt.Sprintf(\"test-%v\", key0), \u0026cloudwatch.LogGroupArgs{\n\t\t\t\tName: pulumi.Sprintf(\"testing-%v\", val0),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ttest = append(test, __res)\n\t\t}\n\t\t_, err = cloudwatch.NewLogAnomalyDetector(ctx, \"test\", \u0026cloudwatch.LogAnomalyDetectorArgs{\n\t\t\tDetectorName: pulumi.String(\"testing\"),\n\t\t\tLogGroupArnLists: pulumi.StringArray{\n\t\t\t\ttest[0].Arn,\n\t\t\t},\n\t\t\tAnomalyVisibilityTime: pulumi.Int(7),\n\t\t\tEvaluationFrequency: pulumi.String(\"TEN_MIN\"),\n\t\t\tEnabled: pulumi.Bool(false),\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.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.cloudwatch.LogAnomalyDetector;\nimport com.pulumi.aws.cloudwatch.LogAnomalyDetectorArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 for (var i = 0; i \u003c 2; i++) {\n new LogGroup(\"test-\" + i, LogGroupArgs.builder()\n .name(String.format(\"testing-%s\", range.value()))\n .build());\n\n \n}\n var testLogAnomalyDetector = new LogAnomalyDetector(\"testLogAnomalyDetector\", LogAnomalyDetectorArgs.builder()\n .detectorName(\"testing\")\n .logGroupArnLists(test[0].arn())\n .anomalyVisibilityTime(7)\n .evaluationFrequency(\"TEN_MIN\")\n .enabled(\"false\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:cloudwatch:LogGroup\n properties:\n name: testing-${range.value}\n options: {}\n testLogAnomalyDetector:\n type: aws:cloudwatch:LogAnomalyDetector\n name: test\n properties:\n detectorName: testing\n logGroupArnLists:\n - ${test[0].arn}\n anomalyVisibilityTime: 7\n evaluationFrequency: TEN_MIN\n enabled: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import CloudWatch Log Anomaly Detector using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:cloudwatch/logAnomalyDetector:LogAnomalyDetector example log_anomaly_detector-arn-12345678\n```\n", + "properties": { + "anomalyVisibilityTime": { + "type": "integer", + "description": "Number of days to have visibility on an anomaly. After this time period has elapsed for an anomaly, it will be automatically baselined and the anomaly detector will treat new occurrences of a similar anomaly as normal. Therefore, if you do not correct the cause of an anomaly during the time period specified in `anomaly_visibility_time`, it will be considered normal going forward and will not be detected as an anomaly. Valid Range: Minimum value of 7. Maximum value of 90.\n" + }, + "arn": { + "type": "string", + "description": "ARN of the log anomaly detector that you just created.\n" + }, + "detectorName": { + "type": "string", + "description": "Name for this anomaly detector.\n" + }, + "enabled": { + "type": "boolean" + }, + "evaluationFrequency": { + "type": "string", + "description": "Specifies how often the anomaly detector is to run and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then 15 minutes might be a good setting for `evaluation_frequency`. Valid Values: `ONE_MIN | FIVE_MIN | TEN_MIN | FIFTEEN_MIN | THIRTY_MIN | ONE_HOUR`.\n" + }, + "filterPattern": { + "type": "string", + "description": "You can use this parameter to limit the anomaly detection model to examine only log events that match the pattern you specify here. For more information, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).\n" + }, + "kmsKeyId": { + "type": "string", + "description": "Optionally assigns a AWS KMS key to secure this anomaly detector and its findings. If a key is assigned, the anomalies found and the model used by this detector are encrypted at rest with the key. If a key is assigned to an anomaly detector, a user must have permissions for both this key and for the anomaly detector to retrieve information about the anomalies that it finds.\n" + }, + "logGroupArnLists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array containing the ARN of the log group that this anomaly detector will watch. You can specify only one log group ARN.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "deprecationMessage": "Please use `tags` instead." + } + }, + "required": [ + "anomalyVisibilityTime", + "arn", + "enabled", + "logGroupArnLists", + "tagsAll" + ], + "inputProperties": { + "anomalyVisibilityTime": { + "type": "integer", + "description": "Number of days to have visibility on an anomaly. After this time period has elapsed for an anomaly, it will be automatically baselined and the anomaly detector will treat new occurrences of a similar anomaly as normal. Therefore, if you do not correct the cause of an anomaly during the time period specified in `anomaly_visibility_time`, it will be considered normal going forward and will not be detected as an anomaly. Valid Range: Minimum value of 7. Maximum value of 90.\n" + }, + "detectorName": { + "type": "string", + "description": "Name for this anomaly detector.\n" + }, + "enabled": { + "type": "boolean" + }, + "evaluationFrequency": { + "type": "string", + "description": "Specifies how often the anomaly detector is to run and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then 15 minutes might be a good setting for `evaluation_frequency`. Valid Values: `ONE_MIN | FIVE_MIN | TEN_MIN | FIFTEEN_MIN | THIRTY_MIN | ONE_HOUR`.\n" + }, + "filterPattern": { + "type": "string", + "description": "You can use this parameter to limit the anomaly detection model to examine only log events that match the pattern you specify here. For more information, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).\n" + }, + "kmsKeyId": { + "type": "string", + "description": "Optionally assigns a AWS KMS key to secure this anomaly detector and its findings. If a key is assigned, the anomalies found and the model used by this detector are encrypted at rest with the key. If a key is assigned to an anomaly detector, a user must have permissions for both this key and for the anomaly detector to retrieve information about the anomalies that it finds.\n" + }, + "logGroupArnLists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array containing the ARN of the log group that this anomaly detector will watch. You can specify only one log group ARN.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "requiredInputs": [ + "enabled", + "logGroupArnLists" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering LogAnomalyDetector resources.\n", + "properties": { + "anomalyVisibilityTime": { + "type": "integer", + "description": "Number of days to have visibility on an anomaly. After this time period has elapsed for an anomaly, it will be automatically baselined and the anomaly detector will treat new occurrences of a similar anomaly as normal. Therefore, if you do not correct the cause of an anomaly during the time period specified in `anomaly_visibility_time`, it will be considered normal going forward and will not be detected as an anomaly. Valid Range: Minimum value of 7. Maximum value of 90.\n" + }, + "arn": { + "type": "string", + "description": "ARN of the log anomaly detector that you just created.\n" + }, + "detectorName": { + "type": "string", + "description": "Name for this anomaly detector.\n" + }, + "enabled": { + "type": "boolean" + }, + "evaluationFrequency": { + "type": "string", + "description": "Specifies how often the anomaly detector is to run and look for anomalies. Set this value according to the frequency that the log group receives new logs. For example, if the log group receives new log events every 10 minutes, then 15 minutes might be a good setting for `evaluation_frequency`. Valid Values: `ONE_MIN | FIVE_MIN | TEN_MIN | FIFTEEN_MIN | THIRTY_MIN | ONE_HOUR`.\n" + }, + "filterPattern": { + "type": "string", + "description": "You can use this parameter to limit the anomaly detection model to examine only log events that match the pattern you specify here. For more information, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).\n" + }, + "kmsKeyId": { + "type": "string", + "description": "Optionally assigns a AWS KMS key to secure this anomaly detector and its findings. If a key is assigned, the anomalies found and the model used by this detector are encrypted at rest with the key. If a key is assigned to an anomaly detector, a user must have permissions for both this key and for the anomaly detector to retrieve information about the anomalies that it finds.\n" + }, + "logGroupArnLists": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array containing the ARN of the log group that this anomaly detector will watch. You can specify only one log group ARN.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "deprecationMessage": "Please use `tags` instead." + } + }, + "type": "object" + } + }, "aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy": { "description": "Provides a CloudWatch Log Data Protection Policy resource.\n\nRead more about protecting sensitive user data in the [User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html).\n\n## Example Usage\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.cloudwatch.LogGroup(\"example\", {name: \"example\"});\nconst exampleBucketV2 = new aws.s3.BucketV2(\"example\", {bucket: \"example\"});\nconst exampleLogDataProtectionPolicy = new aws.cloudwatch.LogDataProtectionPolicy(\"example\", {\n logGroupName: example.name,\n policyDocument: pulumi.jsonStringify({\n Name: \"Example\",\n Version: \"2021-06-01\",\n Statement: [\n {\n Sid: \"Audit\",\n DataIdentifier: [\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\"],\n Operation: {\n Audit: {\n FindingsDestination: {\n S3: {\n Bucket: exampleBucketV2.bucket,\n },\n },\n },\n },\n },\n {\n Sid: \"Redact\",\n DataIdentifier: [\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\"],\n Operation: {\n Deidentify: {\n MaskConfig: {},\n },\n },\n },\n ],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.cloudwatch.LogGroup(\"example\", name=\"example\")\nexample_bucket_v2 = aws.s3.BucketV2(\"example\", bucket=\"example\")\nexample_log_data_protection_policy = aws.cloudwatch.LogDataProtectionPolicy(\"example\",\n log_group_name=example.name,\n policy_document=pulumi.Output.json_dumps({\n \"Name\": \"Example\",\n \"Version\": \"2021-06-01\",\n \"Statement\": [\n {\n \"Sid\": \"Audit\",\n \"DataIdentifier\": [\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\"],\n \"Operation\": {\n \"Audit\": {\n \"FindingsDestination\": {\n \"S3\": {\n \"Bucket\": example_bucket_v2.bucket,\n },\n },\n },\n },\n },\n {\n \"Sid\": \"Redact\",\n \"DataIdentifier\": [\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\"],\n \"Operation\": {\n \"Deidentify\": {\n \"MaskConfig\": {},\n },\n },\n },\n ],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.CloudWatch.LogGroup(\"example\", new()\n {\n Name = \"example\",\n });\n\n var exampleBucketV2 = new Aws.S3.BucketV2(\"example\", new()\n {\n Bucket = \"example\",\n });\n\n var exampleLogDataProtectionPolicy = new Aws.CloudWatch.LogDataProtectionPolicy(\"example\", new()\n {\n LogGroupName = example.Name,\n PolicyDocument = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Name\"] = \"Example\",\n [\"Version\"] = \"2021-06-01\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Sid\"] = \"Audit\",\n [\"DataIdentifier\"] = new[]\n {\n \"arn:aws:dataprotection::aws:data-identifier/EmailAddress\",\n },\n [\"Operation\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Audit\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"FindingsDestination\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"S3\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Bucket\"] = exampleBucketV2.Bucket,\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Sid\"] = \"Redact\",\n [\"DataIdentifier\"] = new[]\n {\n \"arn:aws:dataprotection::aws:data-identifier/EmailAddress\",\n },\n [\"Operation\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"Deidentify\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"MaskConfig\"] = new Dictionary\u003cstring, object?\u003e\n {\n },\n },\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3\"\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 := cloudwatch.NewLogGroup(ctx, \"example\", \u0026cloudwatch.LogGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBucketV2, err := s3.NewBucketV2(ctx, \"example\", \u0026s3.BucketV2Args{\n\t\t\tBucket: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudwatch.NewLogDataProtectionPolicy(ctx, \"example\", \u0026cloudwatch.LogDataProtectionPolicyArgs{\n\t\t\tLogGroupName: example.Name,\n\t\t\tPolicyDocument: exampleBucketV2.Bucket.ApplyT(func(bucket string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Name\": \"Example\",\n\t\t\t\t\t\"Version\": \"2021-06-01\",\n\t\t\t\t\t\"Statement\": []interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\": \"Audit\",\n\t\t\t\t\t\t\t\"DataIdentifier\": []string{\n\t\t\t\t\t\t\t\t\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Operation\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"Audit\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"FindingsDestination\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\"S3\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"Bucket\": bucket,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\": \"Redact\",\n\t\t\t\t\t\t\t\"DataIdentifier\": []string{\n\t\t\t\t\t\t\t\t\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Operation\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"Deidentify\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"MaskConfig\": map[string]interface{}{},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn pulumi.String(json0), nil\n\t\t\t}).(pulumi.StringOutput),\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.cloudwatch.LogGroup;\nimport com.pulumi.aws.cloudwatch.LogGroupArgs;\nimport com.pulumi.aws.s3.BucketV2;\nimport com.pulumi.aws.s3.BucketV2Args;\nimport com.pulumi.aws.cloudwatch.LogDataProtectionPolicy;\nimport com.pulumi.aws.cloudwatch.LogDataProtectionPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 LogGroup(\"example\", LogGroupArgs.builder()\n .name(\"example\")\n .build());\n\n var exampleBucketV2 = new BucketV2(\"exampleBucketV2\", BucketV2Args.builder()\n .bucket(\"example\")\n .build());\n\n var exampleLogDataProtectionPolicy = new LogDataProtectionPolicy(\"exampleLogDataProtectionPolicy\", LogDataProtectionPolicyArgs.builder()\n .logGroupName(example.name())\n .policyDocument(exampleBucketV2.bucket().applyValue(bucket -\u003e serializeJson(\n jsonObject(\n jsonProperty(\"Name\", \"Example\"),\n jsonProperty(\"Version\", \"2021-06-01\"),\n jsonProperty(\"Statement\", jsonArray(\n jsonObject(\n jsonProperty(\"Sid\", \"Audit\"),\n jsonProperty(\"DataIdentifier\", jsonArray(\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\")),\n jsonProperty(\"Operation\", jsonObject(\n jsonProperty(\"Audit\", jsonObject(\n jsonProperty(\"FindingsDestination\", jsonObject(\n jsonProperty(\"S3\", jsonObject(\n jsonProperty(\"Bucket\", bucket)\n ))\n ))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"Sid\", \"Redact\"),\n jsonProperty(\"DataIdentifier\", jsonArray(\"arn:aws:dataprotection::aws:data-identifier/EmailAddress\")),\n jsonProperty(\"Operation\", jsonObject(\n jsonProperty(\"Deidentify\", jsonObject(\n jsonProperty(\"MaskConfig\", jsonObject(\n\n ))\n ))\n ))\n )\n ))\n ))))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:cloudwatch:LogGroup\n properties:\n name: example\n exampleBucketV2:\n type: aws:s3:BucketV2\n name: example\n properties:\n bucket: example\n exampleLogDataProtectionPolicy:\n type: aws:cloudwatch:LogDataProtectionPolicy\n name: example\n properties:\n logGroupName: ${example.name}\n policyDocument:\n fn::toJSON:\n Name: Example\n Version: 2021-06-01\n Statement:\n - Sid: Audit\n DataIdentifier:\n - arn:aws:dataprotection::aws:data-identifier/EmailAddress\n Operation:\n Audit:\n FindingsDestination:\n S3:\n Bucket: ${exampleBucketV2.bucket}\n - Sid: Redact\n DataIdentifier:\n - arn:aws:dataprotection::aws:data-identifier/EmailAddress\n Operation:\n Deidentify:\n MaskConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import this resource using the `log_group_name`. For example:\n\n```sh\n$ pulumi import aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy example my-log-group\n```\n", "properties": { @@ -212614,7 +213111,7 @@ } }, "aws:cognito/userPoolDomain:UserPoolDomain": { - "description": "Provides a Cognito User Pool Domain resource.\n\n## Example Usage\n\n### Amazon Cognito domain\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.cognito.UserPool(\"example\", {name: \"example-pool\"});\nconst main = new aws.cognito.UserPoolDomain(\"main\", {\n domain: \"example-domain\",\n userPoolId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cognito.UserPool(\"example\", name=\"example-pool\")\nmain = aws.cognito.UserPoolDomain(\"main\",\n domain=\"example-domain\",\n user_pool_id=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 example = new Aws.Cognito.UserPool(\"example\", new()\n {\n Name = \"example-pool\",\n });\n\n var main = new Aws.Cognito.UserPoolDomain(\"main\", new()\n {\n Domain = \"example-domain\",\n UserPoolId = example.Id,\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cognito.NewUserPool(ctx, \"example\", \u0026cognito.UserPoolArgs{\n\t\t\tName: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cognito.NewUserPoolDomain(ctx, \"main\", \u0026cognito.UserPoolDomainArgs{\n\t\t\tDomain: pulumi.String(\"example-domain\"),\n\t\t\tUserPoolId: 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.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolArgs;\nimport com.pulumi.aws.cognito.UserPoolDomain;\nimport com.pulumi.aws.cognito.UserPoolDomainArgs;\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 UserPool(\"example\", UserPoolArgs.builder()\n .name(\"example-pool\")\n .build());\n\n var main = new UserPoolDomain(\"main\", UserPoolDomainArgs.builder()\n .domain(\"example-domain\")\n .userPoolId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:cognito:UserPoolDomain\n properties:\n domain: example-domain\n userPoolId: ${example.id}\n example:\n type: aws:cognito:UserPool\n properties:\n name: example-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Cognito domain\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleUserPool = new aws.cognito.UserPool(\"example\", {name: \"example-pool\"});\nconst main = new aws.cognito.UserPoolDomain(\"main\", {\n domain: \"example-domain\",\n certificateArn: cert.arn,\n userPoolId: exampleUserPool.id,\n});\nconst example = aws.route53.getZone({\n name: \"example.com\",\n});\nconst auth_cognito_A = new aws.route53.Record(\"auth-cognito-A\", {\n name: main.domain,\n type: aws.route53.RecordType.A,\n zoneId: example.then(example =\u003e example.zoneId),\n aliases: [{\n evaluateTargetHealth: false,\n name: main.cloudfrontDistribution,\n zoneId: main.cloudfrontDistributionZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_user_pool = aws.cognito.UserPool(\"example\", name=\"example-pool\")\nmain = aws.cognito.UserPoolDomain(\"main\",\n domain=\"example-domain\",\n certificate_arn=cert[\"arn\"],\n user_pool_id=example_user_pool.id)\nexample = aws.route53.get_zone(name=\"example.com\")\nauth_cognito__a = aws.route53.Record(\"auth-cognito-A\",\n name=main.domain,\n type=aws.route53.RecordType.A,\n zone_id=example.zone_id,\n aliases=[{\n \"evaluate_target_health\": False,\n \"name\": main.cloudfront_distribution,\n \"zone_id\": main.cloudfront_distribution_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleUserPool = new Aws.Cognito.UserPool(\"example\", new()\n {\n Name = \"example-pool\",\n });\n\n var main = new Aws.Cognito.UserPoolDomain(\"main\", new()\n {\n Domain = \"example-domain\",\n CertificateArn = cert.Arn,\n UserPoolId = exampleUserPool.Id,\n });\n\n var example = Aws.Route53.GetZone.Invoke(new()\n {\n Name = \"example.com\",\n });\n\n var auth_cognito_A = new Aws.Route53.Record(\"auth-cognito-A\", new()\n {\n Name = main.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = example.Apply(getZoneResult =\u003e getZoneResult.ZoneId),\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = false,\n Name = main.CloudfrontDistribution,\n ZoneId = main.CloudfrontDistributionZoneId,\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/route53\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUserPool, err := cognito.NewUserPool(ctx, \"example\", \u0026cognito.UserPoolArgs{\n\t\t\tName: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := cognito.NewUserPoolDomain(ctx, \"main\", \u0026cognito.UserPoolDomainArgs{\n\t\t\tDomain: pulumi.String(\"example-domain\"),\n\t\t\tCertificateArn: pulumi.Any(cert.Arn),\n\t\t\tUserPoolId: exampleUserPool.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := route53.LookupZone(ctx, \u0026route53.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = route53.NewRecord(ctx, \"auth-cognito-A\", \u0026route53.RecordArgs{\n\t\t\tName: main.Domain,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.String(example.ZoneId),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(false),\n\t\t\t\t\tName: main.CloudfrontDistribution,\n\t\t\t\t\tZoneId: main.CloudfrontDistributionZoneId,\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.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolArgs;\nimport com.pulumi.aws.cognito.UserPoolDomain;\nimport com.pulumi.aws.cognito.UserPoolDomainArgs;\nimport com.pulumi.aws.route53.Route53Functions;\nimport com.pulumi.aws.route53.inputs.GetZoneArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 exampleUserPool = new UserPool(\"exampleUserPool\", UserPoolArgs.builder()\n .name(\"example-pool\")\n .build());\n\n var main = new UserPoolDomain(\"main\", UserPoolDomainArgs.builder()\n .domain(\"example-domain\")\n .certificateArn(cert.arn())\n .userPoolId(exampleUserPool.id())\n .build());\n\n final var example = Route53Functions.getZone(GetZoneArgs.builder()\n .name(\"example.com\")\n .build());\n\n var auth_cognito_A = new Record(\"auth-cognito-A\", RecordArgs.builder()\n .name(main.domain())\n .type(\"A\")\n .zoneId(example.applyValue(getZoneResult -\u003e getZoneResult.zoneId()))\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(false)\n .name(main.cloudfrontDistribution())\n .zoneId(main.cloudfrontDistributionZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:cognito:UserPoolDomain\n properties:\n domain: example-domain\n certificateArn: ${cert.arn}\n userPoolId: ${exampleUserPool.id}\n exampleUserPool:\n type: aws:cognito:UserPool\n name: example\n properties:\n name: example-pool\n auth-cognito-A:\n type: aws:route53:Record\n properties:\n name: ${main.domain}\n type: A\n zoneId: ${example.zoneId}\n aliases:\n - evaluateTargetHealth: false\n name: ${main.cloudfrontDistribution}\n zoneId: ${main.cloudfrontDistributionZoneId}\nvariables:\n example:\n fn::invoke:\n function: aws:route53:getZone\n arguments:\n name: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Cognito User Pool Domains using the `domain`. For example:\n\n```sh\n$ pulumi import aws:cognito/userPoolDomain:UserPoolDomain main auth.example.org\n```\n", + "description": "Provides a Cognito User Pool Domain resource.\n\n## Example Usage\n\n### Amazon Cognito domain\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.cognito.UserPool(\"example\", {name: \"example-pool\"});\nconst main = new aws.cognito.UserPoolDomain(\"main\", {\n domain: \"example-domain\",\n userPoolId: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.cognito.UserPool(\"example\", name=\"example-pool\")\nmain = aws.cognito.UserPoolDomain(\"main\",\n domain=\"example-domain\",\n user_pool_id=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 example = new Aws.Cognito.UserPool(\"example\", new()\n {\n Name = \"example-pool\",\n });\n\n var main = new Aws.Cognito.UserPoolDomain(\"main\", new()\n {\n Domain = \"example-domain\",\n UserPoolId = example.Id,\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := cognito.NewUserPool(ctx, \"example\", \u0026cognito.UserPoolArgs{\n\t\t\tName: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cognito.NewUserPoolDomain(ctx, \"main\", \u0026cognito.UserPoolDomainArgs{\n\t\t\tDomain: pulumi.String(\"example-domain\"),\n\t\t\tUserPoolId: 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.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolArgs;\nimport com.pulumi.aws.cognito.UserPoolDomain;\nimport com.pulumi.aws.cognito.UserPoolDomainArgs;\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 UserPool(\"example\", UserPoolArgs.builder()\n .name(\"example-pool\")\n .build());\n\n var main = new UserPoolDomain(\"main\", UserPoolDomainArgs.builder()\n .domain(\"example-domain\")\n .userPoolId(example.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:cognito:UserPoolDomain\n properties:\n domain: example-domain\n userPoolId: ${example.id}\n example:\n type: aws:cognito:UserPool\n properties:\n name: example-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Cognito domain\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleUserPool = new aws.cognito.UserPool(\"example\", {name: \"example-pool\"});\nconst main = new aws.cognito.UserPoolDomain(\"main\", {\n domain: \"auth.example.com\",\n certificateArn: cert.arn,\n userPoolId: exampleUserPool.id,\n});\nconst example = aws.route53.getZone({\n name: \"example.com\",\n});\nconst auth_cognito_A = new aws.route53.Record(\"auth-cognito-A\", {\n name: main.domain,\n type: aws.route53.RecordType.A,\n zoneId: example.then(example =\u003e example.zoneId),\n aliases: [{\n evaluateTargetHealth: false,\n name: main.cloudfrontDistribution,\n zoneId: main.cloudfrontDistributionZoneId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample_user_pool = aws.cognito.UserPool(\"example\", name=\"example-pool\")\nmain = aws.cognito.UserPoolDomain(\"main\",\n domain=\"auth.example.com\",\n certificate_arn=cert[\"arn\"],\n user_pool_id=example_user_pool.id)\nexample = aws.route53.get_zone(name=\"example.com\")\nauth_cognito__a = aws.route53.Record(\"auth-cognito-A\",\n name=main.domain,\n type=aws.route53.RecordType.A,\n zone_id=example.zone_id,\n aliases=[{\n \"evaluate_target_health\": False,\n \"name\": main.cloudfront_distribution,\n \"zone_id\": main.cloudfront_distribution_zone_id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleUserPool = new Aws.Cognito.UserPool(\"example\", new()\n {\n Name = \"example-pool\",\n });\n\n var main = new Aws.Cognito.UserPoolDomain(\"main\", new()\n {\n Domain = \"auth.example.com\",\n CertificateArn = cert.Arn,\n UserPoolId = exampleUserPool.Id,\n });\n\n var example = Aws.Route53.GetZone.Invoke(new()\n {\n Name = \"example.com\",\n });\n\n var auth_cognito_A = new Aws.Route53.Record(\"auth-cognito-A\", new()\n {\n Name = main.Domain,\n Type = Aws.Route53.RecordType.A,\n ZoneId = example.Apply(getZoneResult =\u003e getZoneResult.ZoneId),\n Aliases = new[]\n {\n new Aws.Route53.Inputs.RecordAliasArgs\n {\n EvaluateTargetHealth = false,\n Name = main.CloudfrontDistribution,\n ZoneId = main.CloudfrontDistributionZoneId,\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/route53\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUserPool, err := cognito.NewUserPool(ctx, \"example\", \u0026cognito.UserPoolArgs{\n\t\t\tName: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := cognito.NewUserPoolDomain(ctx, \"main\", \u0026cognito.UserPoolDomainArgs{\n\t\t\tDomain: pulumi.String(\"auth.example.com\"),\n\t\t\tCertificateArn: pulumi.Any(cert.Arn),\n\t\t\tUserPoolId: exampleUserPool.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := route53.LookupZone(ctx, \u0026route53.LookupZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = route53.NewRecord(ctx, \"auth-cognito-A\", \u0026route53.RecordArgs{\n\t\t\tName: main.Domain,\n\t\t\tType: pulumi.String(route53.RecordTypeA),\n\t\t\tZoneId: pulumi.String(example.ZoneId),\n\t\t\tAliases: route53.RecordAliasArray{\n\t\t\t\t\u0026route53.RecordAliasArgs{\n\t\t\t\t\tEvaluateTargetHealth: pulumi.Bool(false),\n\t\t\t\t\tName: main.CloudfrontDistribution,\n\t\t\t\t\tZoneId: main.CloudfrontDistributionZoneId,\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.cognito.UserPool;\nimport com.pulumi.aws.cognito.UserPoolArgs;\nimport com.pulumi.aws.cognito.UserPoolDomain;\nimport com.pulumi.aws.cognito.UserPoolDomainArgs;\nimport com.pulumi.aws.route53.Route53Functions;\nimport com.pulumi.aws.route53.inputs.GetZoneArgs;\nimport com.pulumi.aws.route53.Record;\nimport com.pulumi.aws.route53.RecordArgs;\nimport com.pulumi.aws.route53.inputs.RecordAliasArgs;\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 exampleUserPool = new UserPool(\"exampleUserPool\", UserPoolArgs.builder()\n .name(\"example-pool\")\n .build());\n\n var main = new UserPoolDomain(\"main\", UserPoolDomainArgs.builder()\n .domain(\"auth.example.com\")\n .certificateArn(cert.arn())\n .userPoolId(exampleUserPool.id())\n .build());\n\n final var example = Route53Functions.getZone(GetZoneArgs.builder()\n .name(\"example.com\")\n .build());\n\n var auth_cognito_A = new Record(\"auth-cognito-A\", RecordArgs.builder()\n .name(main.domain())\n .type(\"A\")\n .zoneId(example.applyValue(getZoneResult -\u003e getZoneResult.zoneId()))\n .aliases(RecordAliasArgs.builder()\n .evaluateTargetHealth(false)\n .name(main.cloudfrontDistribution())\n .zoneId(main.cloudfrontDistributionZoneId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: aws:cognito:UserPoolDomain\n properties:\n domain: auth.example.com\n certificateArn: ${cert.arn}\n userPoolId: ${exampleUserPool.id}\n exampleUserPool:\n type: aws:cognito:UserPool\n name: example\n properties:\n name: example-pool\n auth-cognito-A:\n type: aws:route53:Record\n properties:\n name: ${main.domain}\n type: A\n zoneId: ${example.zoneId}\n aliases:\n - evaluateTargetHealth: false\n name: ${main.cloudfrontDistribution}\n zoneId: ${main.cloudfrontDistributionZoneId}\nvariables:\n example:\n fn::invoke:\n function: aws:route53:getZone\n arguments:\n name: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Cognito User Pool Domains using the `domain`. For example:\n\n```sh\n$ pulumi import aws:cognito/userPoolDomain:UserPoolDomain main auth.example.org\n```\n", "properties": { "awsAccountId": { "type": "string", @@ -232692,6 +233189,10 @@ "type": "string", "description": "Amazon Resource Name (ARN) of the EBS Snapshot.\n" }, + "completionDurationMinutes": { + "type": "integer", + "description": "Specifies a completion duration to initiate a time-based snapshot copy. Time-based snapshot copy operations complete within the specified duration. Value must be between 15 and 2880 minutes, in 15 minute increments only.\n" + }, "dataEncryptionKeyId": { "type": "string", "description": "The data encryption key identifier for the snapshot.\n" @@ -232776,6 +233277,11 @@ "volumeSize" ], "inputProperties": { + "completionDurationMinutes": { + "type": "integer", + "description": "Specifies a completion duration to initiate a time-based snapshot copy. Time-based snapshot copy operations complete within the specified duration. Value must be between 15 and 2880 minutes, in 15 minute increments only.\n", + "willReplaceOnChanges": true + }, "description": { "type": "string", "description": "A description of what the snapshot is.\n", @@ -232832,6 +233338,11 @@ "type": "string", "description": "Amazon Resource Name (ARN) of the EBS Snapshot.\n" }, + "completionDurationMinutes": { + "type": "integer", + "description": "Specifies a completion duration to initiate a time-based snapshot copy. Time-based snapshot copy operations complete within the specified duration. Value must be between 15 and 2880 minutes, in 15 minute increments only.\n", + "willReplaceOnChanges": true + }, "dataEncryptionKeyId": { "type": "string", "description": "The data encryption key identifier for the snapshot.\n" @@ -237750,6 +238261,10 @@ "type": "boolean", "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n" }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n" + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/InstanceEnclaveOptions:InstanceEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n" @@ -237974,6 +238489,7 @@ "disableApiTermination", "ebsBlockDevices", "ebsOptimized", + "enablePrimaryIpv6", "enclaveOptions", "ephemeralBlockDevices", "hostId", @@ -238072,6 +238588,10 @@ "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n", "willReplaceOnChanges": true }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n" + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/InstanceEnclaveOptions:InstanceEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n" @@ -238341,6 +238861,10 @@ "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n", "willReplaceOnChanges": true }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n" + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/InstanceEnclaveOptions:InstanceEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n" @@ -241250,6 +241774,10 @@ "type": "string", "description": "Description for the network interface.\n" }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Enables assigning a primary IPv6 Global Unicast Address (GUA) to the network interface (ENI) in dual-stack or IPv6-only subnets. This ensures the instance attached to the ENI retains a consistent IPv6 address. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains assigned until the instance is terminated or the ENI is detached. Enabling and subsequent disabling forces recreation of the ENI.\n" + }, "interfaceType": { "type": "string", "description": "Type of network interface to create. Set to `efa` for Elastic Fabric Adapter. Changing `interface_type` will cause the resource to be destroyed and re-created.\n" @@ -241271,7 +241799,7 @@ }, "ipv6AddressListEnabled": { "type": "boolean", - "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default false.\n" + "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default is `false`.\n" }, "ipv6AddressLists": { "type": "array", @@ -241318,7 +241846,7 @@ }, "privateIpListEnabled": { "type": "boolean", - "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default false.\n" + "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default is `false`.\n" }, "privateIpLists": { "type": "array", @@ -241372,6 +241900,7 @@ "required": [ "arn", "attachments", + "enablePrimaryIpv6", "interfaceType", "ipv4PrefixCount", "ipv4Prefixes", @@ -241404,6 +241933,10 @@ "type": "string", "description": "Description for the network interface.\n" }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Enables assigning a primary IPv6 Global Unicast Address (GUA) to the network interface (ENI) in dual-stack or IPv6-only subnets. This ensures the instance attached to the ENI retains a consistent IPv6 address. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains assigned until the instance is terminated or the ENI is detached. Enabling and subsequent disabling forces recreation of the ENI.\n" + }, "interfaceType": { "type": "string", "description": "Type of network interface to create. Set to `efa` for Elastic Fabric Adapter. Changing `interface_type` will cause the resource to be destroyed and re-created.\n", @@ -241426,7 +241959,7 @@ }, "ipv6AddressListEnabled": { "type": "boolean", - "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default false.\n" + "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default is `false`.\n" }, "ipv6AddressLists": { "type": "array", @@ -241458,7 +241991,7 @@ }, "privateIpListEnabled": { "type": "boolean", - "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default false.\n" + "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default is `false`.\n" }, "privateIpLists": { "type": "array", @@ -241523,6 +242056,10 @@ "type": "string", "description": "Description for the network interface.\n" }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Enables assigning a primary IPv6 Global Unicast Address (GUA) to the network interface (ENI) in dual-stack or IPv6-only subnets. This ensures the instance attached to the ENI retains a consistent IPv6 address. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains assigned until the instance is terminated or the ENI is detached. Enabling and subsequent disabling forces recreation of the ENI.\n" + }, "interfaceType": { "type": "string", "description": "Type of network interface to create. Set to `efa` for Elastic Fabric Adapter. Changing `interface_type` will cause the resource to be destroyed and re-created.\n", @@ -241545,7 +242082,7 @@ }, "ipv6AddressListEnabled": { "type": "boolean", - "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default false.\n" + "description": "Whether `ipv6_address_list` is allowed and controls the IPs to assign to the ENI and `ipv6_addresses` and `ipv6_address_count` become read-only. Default is `false`.\n" }, "ipv6AddressLists": { "type": "array", @@ -241592,7 +242129,7 @@ }, "privateIpListEnabled": { "type": "boolean", - "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default false.\n" + "description": "Whether `private_ip_list` is allowed and controls the IPs to assign to the ENI and `private_ips` and `private_ips_count` become read-only. Default is `false`.\n" }, "privateIpLists": { "type": "array", @@ -243576,6 +244113,10 @@ "type": "boolean", "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n" }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n" + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/SpotInstanceRequestEnclaveOptions:SpotInstanceRequestEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n" @@ -243818,6 +244359,7 @@ "disableApiTermination", "ebsBlockDevices", "ebsOptimized", + "enablePrimaryIpv6", "enclaveOptions", "ephemeralBlockDevices", "hostId", @@ -243930,6 +244472,11 @@ "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n", "willReplaceOnChanges": true }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n", + "willReplaceOnChanges": true + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/SpotInstanceRequestEnclaveOptions:SpotInstanceRequestEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n", @@ -244227,6 +244774,11 @@ "description": "If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the [EBS Optimized section](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) of the AWS User Guide for more information.\n", "willReplaceOnChanges": true }, + "enablePrimaryIpv6": { + "type": "boolean", + "description": "Whether to assign a primary IPv6 Global Unicast Address (GUA) to the instance when launched in a dual-stack or IPv6-only subnet. A primary IPv6 address ensures a consistent IPv6 address for the instance and is automatically assigned by AWS to the ENI. Once enabled, the first IPv6 GUA becomes the primary IPv6 address and cannot be disabled. The primary IPv6 address remains until the instance is terminated or the ENI is detached. Disabling `enable_primary_ipv6` after it has been enabled forces recreation of the instance.\n", + "willReplaceOnChanges": true + }, "enclaveOptions": { "$ref": "#/types/aws:ec2/SpotInstanceRequestEnclaveOptions:SpotInstanceRequestEnclaveOptions", "description": "Enable Nitro Enclaves on launched instances. See Enclave Options below for more details.\n", @@ -253281,6 +253833,50 @@ "type": "object" } }, + "aws:ecr/accountSetting:AccountSetting": { + "description": "Provides a resource to manage AWS ECR Basic Scan Type\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst foo = new aws.ecr.AccountSetting(\"foo\", {\n name: \"BASIC_SCAN_TYPE_VERSION\",\n value: \"CLAIR\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nfoo = aws.ecr.AccountSetting(\"foo\",\n name=\"BASIC_SCAN_TYPE_VERSION\",\n value=\"CLAIR\")\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 foo = new Aws.Ecr.AccountSetting(\"foo\", new()\n {\n Name = \"BASIC_SCAN_TYPE_VERSION\",\n Value = \"CLAIR\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ecr.NewAccountSetting(ctx, \"foo\", \u0026ecr.AccountSettingArgs{\n\t\t\tName: pulumi.String(\"BASIC_SCAN_TYPE_VERSION\"),\n\t\t\tValue: pulumi.String(\"CLAIR\"),\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.ecr.AccountSetting;\nimport com.pulumi.aws.ecr.AccountSettingArgs;\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 foo = new AccountSetting(\"foo\", AccountSettingArgs.builder()\n .name(\"BASIC_SCAN_TYPE_VERSION\")\n .value(\"CLAIR\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: aws:ecr:AccountSetting\n properties:\n name: BASIC_SCAN_TYPE_VERSION\n value: CLAIR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EMR Security Configurations using the `name`. For example:\n\n```sh\n$ pulumi import aws:ecr/accountSetting:AccountSetting foo BASIC_SCAN_TYPE_VERSION\n```\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the ECR Scan Type. This should be `BASIC_SCAN_TYPE_VERSION`.\n" + }, + "value": { + "type": "string", + "description": "The value of the ECR Scan Type. This can be `AWS_NATIVE` or `CLAIR`.\n" + } + }, + "required": [ + "name", + "value" + ], + "inputProperties": { + "name": { + "type": "string", + "description": "The name of the ECR Scan Type. This should be `BASIC_SCAN_TYPE_VERSION`.\n" + }, + "value": { + "type": "string", + "description": "The value of the ECR Scan Type. This can be `AWS_NATIVE` or `CLAIR`.\n" + } + }, + "requiredInputs": [ + "value" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering AccountSetting resources.\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the ECR Scan Type. This should be `BASIC_SCAN_TYPE_VERSION`.\n" + }, + "value": { + "type": "string", + "description": "The value of the ECR Scan Type. This can be `AWS_NATIVE` or `CLAIR`.\n" + } + }, + "type": "object" + } + }, "aws:ecr/lifecyclePolicy:LifecyclePolicy": { "description": "Manages an ECR repository lifecycle policy.\n\n\u003e **NOTE:** Only one `aws.ecr.LifecyclePolicy` resource can be used with the same ECR repository. To apply multiple rules, they must be combined in the `policy` JSON.\n\n\u003e **NOTE:** The AWS ECR API seems to reorder rules based on `rulePriority`. If you define multiple rules that are not sorted in ascending `rulePriority` order in the this provider code, the resource will be flagged for recreation every deployment.\n\n## Example Usage\n\n### Policy on untagged image\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.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \"\"rules\"\": [\n {\n \"\"rulePriority\"\": 1,\n \"\"description\"\": \"\"Expire images older than 14 days\"\",\n \"\"selection\"\": {\n \"\"tagStatus\"\": \"\"untagged\"\",\n \"\"countType\"\": \"\"sinceImagePushed\"\",\n \"\"countUnit\"\": \"\"days\"\",\n \"\"countNumber\"\": 14\n },\n \"\"action\"\": {\n \"\"type\"\": \"\"expire\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`),\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.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\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 Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Expire images older than 14 days\",\n \"selection\": {\n \"tagStatus\": \"untagged\",\n \"countType\": \"sinceImagePushed\",\n \"countUnit\": \"days\",\n \"countNumber\": 14\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy on tagged image\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.ecr.Repository(\"example\", {name: \"example-repo\"});\nconst exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy(\"example\", {\n repository: example.name,\n policy: `{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.ecr.Repository(\"example\", name=\"example-repo\")\nexample_lifecycle_policy = aws.ecr.LifecyclePolicy(\"example\",\n repository=example.name,\n policy=\"\"\"{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Ecr.Repository(\"example\", new()\n {\n Name = \"example-repo\",\n });\n\n var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy(\"example\", new()\n {\n Repository = example.Name,\n Policy = @\"{\n \"\"rules\"\": [\n {\n \"\"rulePriority\"\": 1,\n \"\"description\"\": \"\"Keep last 30 images\"\",\n \"\"selection\"\": {\n \"\"tagStatus\"\": \"\"tagged\"\",\n \"\"tagPrefixList\"\": [\"\"v\"\"],\n \"\"countType\"\": \"\"imageCountMoreThan\"\",\n \"\"countNumber\"\": 30\n },\n \"\"action\"\": {\n \"\"type\"\": \"\"expire\"\"\n }\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecr\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ecr.NewRepository(ctx, \"example\", \u0026ecr.RepositoryArgs{\n\t\t\tName: pulumi.String(\"example-repo\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ecr.NewLifecyclePolicy(ctx, \"example\", \u0026ecr.LifecyclePolicyArgs{\n\t\t\tRepository: example.Name,\n\t\t\tPolicy: pulumi.Any(`{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n`),\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.ecr.Repository;\nimport com.pulumi.aws.ecr.RepositoryArgs;\nimport com.pulumi.aws.ecr.LifecyclePolicy;\nimport com.pulumi.aws.ecr.LifecyclePolicyArgs;\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 Repository(\"example\", RepositoryArgs.builder()\n .name(\"example-repo\")\n .build());\n\n var exampleLifecyclePolicy = new LifecyclePolicy(\"exampleLifecyclePolicy\", LifecyclePolicyArgs.builder()\n .repository(example.name())\n .policy(\"\"\"\n{\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:ecr:Repository\n properties:\n name: example-repo\n exampleLifecyclePolicy:\n type: aws:ecr:LifecyclePolicy\n name: example\n properties:\n repository: ${example.name}\n policy: |\n {\n \"rules\": [\n {\n \"rulePriority\": 1,\n \"description\": \"Keep last 30 images\",\n \"selection\": {\n \"tagStatus\": \"tagged\",\n \"tagPrefixList\": [\"v\"],\n \"countType\": \"imageCountMoreThan\",\n \"countNumber\": 30\n },\n \"action\": {\n \"type\": \"expire\"\n }\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import ECR Lifecycle Policy using the name of the repository. For example:\n\n```sh\n$ pulumi import aws:ecr/lifecyclePolicy:LifecyclePolicy example tf-example\n```\n", "properties": { @@ -256645,7 +257241,7 @@ } }, "aws:eks/accessPolicyAssociation:AccessPolicyAssociation": { - "description": "Access Entry Policy Association for an EKS Cluster.\n\n## Example Usage\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.eks.AccessPolicyAssociation(\"example\", {\n clusterName: exampleAwsEksCluster.name,\n policyArn: \"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n principalArn: exampleAwsIamUser.arn,\n accessScope: {\n type: \"namespace\",\n namespaces: [\"example-namespace\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.eks.AccessPolicyAssociation(\"example\",\n cluster_name=example_aws_eks_cluster[\"name\"],\n policy_arn=\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n principal_arn=example_aws_iam_user[\"arn\"],\n access_scope={\n \"type\": \"namespace\",\n \"namespaces\": [\"example-namespace\"],\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.Eks.AccessPolicyAssociation(\"example\", new()\n {\n ClusterName = exampleAwsEksCluster.Name,\n PolicyArn = \"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n PrincipalArn = exampleAwsIamUser.Arn,\n AccessScope = new Aws.Eks.Inputs.AccessPolicyAssociationAccessScopeArgs\n {\n Type = \"namespace\",\n Namespaces = new[]\n {\n \"example-namespace\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks\"\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 := eks.NewAccessPolicyAssociation(ctx, \"example\", \u0026eks.AccessPolicyAssociationArgs{\n\t\t\tClusterName: pulumi.Any(exampleAwsEksCluster.Name),\n\t\t\tPolicyArn: pulumi.String(\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\"),\n\t\t\tPrincipalArn: pulumi.Any(exampleAwsIamUser.Arn),\n\t\t\tAccessScope: \u0026eks.AccessPolicyAssociationAccessScopeArgs{\n\t\t\t\tType: pulumi.String(\"namespace\"),\n\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"example-namespace\"),\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.eks.AccessPolicyAssociation;\nimport com.pulumi.aws.eks.AccessPolicyAssociationArgs;\nimport com.pulumi.aws.eks.inputs.AccessPolicyAssociationAccessScopeArgs;\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 AccessPolicyAssociation(\"example\", AccessPolicyAssociationArgs.builder()\n .clusterName(exampleAwsEksCluster.name())\n .policyArn(\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\")\n .principalArn(exampleAwsIamUser.arn())\n .accessScope(AccessPolicyAssociationAccessScopeArgs.builder()\n .type(\"namespace\")\n .namespaces(\"example-namespace\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:eks:AccessPolicyAssociation\n properties:\n clusterName: ${exampleAwsEksCluster.name}\n policyArn: arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\n principalArn: ${exampleAwsIamUser.arn}\n accessScope:\n type: namespace\n namespaces:\n - example-namespace\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EKS access entry using the `cluster_name` `principal_arn` and `policy_arn` separated by a colon (`#`). For example:\n\n```sh\n$ pulumi import aws:eks/accessPolicyAssociation:AccessPolicyAssociation my_eks_access_entry my_cluster_name#my_principal_arn#my_policy_arn\n```\n", + "description": "Access Entry Policy Association for an EKS Cluster.\n\n## Example Usage\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.eks.AccessPolicyAssociation(\"example\", {\n clusterName: exampleAwsEksCluster.name,\n policyArn: \"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n principalArn: exampleAwsIamUser.arn,\n accessScope: {\n type: \"namespace\",\n namespaces: [\"example-namespace\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.eks.AccessPolicyAssociation(\"example\",\n cluster_name=example_aws_eks_cluster[\"name\"],\n policy_arn=\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n principal_arn=example_aws_iam_user[\"arn\"],\n access_scope={\n \"type\": \"namespace\",\n \"namespaces\": [\"example-namespace\"],\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.Eks.AccessPolicyAssociation(\"example\", new()\n {\n ClusterName = exampleAwsEksCluster.Name,\n PolicyArn = \"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\",\n PrincipalArn = exampleAwsIamUser.Arn,\n AccessScope = new Aws.Eks.Inputs.AccessPolicyAssociationAccessScopeArgs\n {\n Type = \"namespace\",\n Namespaces = new[]\n {\n \"example-namespace\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks\"\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 := eks.NewAccessPolicyAssociation(ctx, \"example\", \u0026eks.AccessPolicyAssociationArgs{\n\t\t\tClusterName: pulumi.Any(exampleAwsEksCluster.Name),\n\t\t\tPolicyArn: pulumi.String(\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\"),\n\t\t\tPrincipalArn: pulumi.Any(exampleAwsIamUser.Arn),\n\t\t\tAccessScope: \u0026eks.AccessPolicyAssociationAccessScopeArgs{\n\t\t\t\tType: pulumi.String(\"namespace\"),\n\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"example-namespace\"),\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.eks.AccessPolicyAssociation;\nimport com.pulumi.aws.eks.AccessPolicyAssociationArgs;\nimport com.pulumi.aws.eks.inputs.AccessPolicyAssociationAccessScopeArgs;\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 AccessPolicyAssociation(\"example\", AccessPolicyAssociationArgs.builder()\n .clusterName(exampleAwsEksCluster.name())\n .policyArn(\"arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\")\n .principalArn(exampleAwsIamUser.arn())\n .accessScope(AccessPolicyAssociationAccessScopeArgs.builder()\n .type(\"namespace\")\n .namespaces(\"example-namespace\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:eks:AccessPolicyAssociation\n properties:\n clusterName: ${exampleAwsEksCluster.name}\n policyArn: arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy\n principalArn: ${exampleAwsIamUser.arn}\n accessScope:\n type: namespace\n namespaces:\n - example-namespace\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import EKS access entry using the `cluster_name` `principal_arn` and `policy_arn` separated by an octothorp (`#`). For example:\n\n```sh\n$ pulumi import aws:eks/accessPolicyAssociation:AccessPolicyAssociation my_eks_access_entry my_cluster_name#my_principal_arn#my_policy_arn\n```\n", "properties": { "accessScope": { "$ref": "#/types/aws:eks/AccessPolicyAssociationAccessScope:AccessPolicyAssociationAccessScope", @@ -270646,7 +271242,7 @@ }, "throughputCapacity": { "type": "integer", - "description": "Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of `8` and maximum of `2048`.\n\nThe following arguments are optional:\n" + "description": "Throughput (megabytes per second) of the file system. For valid values, refer to the [AWS documentation](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html).\n\nThe following arguments are optional:\n" }, "vpcId": { "type": "string", @@ -270779,7 +271375,7 @@ }, "throughputCapacity": { "type": "integer", - "description": "Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of `8` and maximum of `2048`.\n\nThe following arguments are optional:\n" + "description": "Throughput (megabytes per second) of the file system. For valid values, refer to the [AWS documentation](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html).\n\nThe following arguments are optional:\n" }, "weeklyMaintenanceStartTime": { "type": "string", @@ -270930,7 +271526,7 @@ }, "throughputCapacity": { "type": "integer", - "description": "Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of `8` and maximum of `2048`.\n\nThe following arguments are optional:\n" + "description": "Throughput (megabytes per second) of the file system. For valid values, refer to the [AWS documentation](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html).\n\nThe following arguments are optional:\n" }, "vpcId": { "type": "string", @@ -273823,7 +274419,7 @@ } }, "aws:glue/catalogTableOptimizer:CatalogTableOptimizer": { - "description": "Resource for managing an AWS Glue Catalog Table Optimizer.\n\n## Example Usage\n\n### Basic Usage\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.glue.CatalogTableOptimizer(\"example\", {\n catalogId: \"123456789012\",\n databaseName: \"example_database\",\n tableName: \"example_table\",\n configuration: {\n roleArn: \"arn:aws:iam::123456789012:role/example-role\",\n enabled: true,\n },\n type: \"compaction\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.CatalogTableOptimizer(\"example\",\n catalog_id=\"123456789012\",\n database_name=\"example_database\",\n table_name=\"example_table\",\n configuration={\n \"role_arn\": \"arn:aws:iam::123456789012:role/example-role\",\n \"enabled\": True,\n },\n type=\"compaction\")\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.Glue.CatalogTableOptimizer(\"example\", new()\n {\n CatalogId = \"123456789012\",\n DatabaseName = \"example_database\",\n TableName = \"example_table\",\n Configuration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationArgs\n {\n RoleArn = \"arn:aws:iam::123456789012:role/example-role\",\n Enabled = true,\n },\n Type = \"compaction\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\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 := glue.NewCatalogTableOptimizer(ctx, \"example\", \u0026glue.CatalogTableOptimizerArgs{\n\t\t\tCatalogId: pulumi.String(\"123456789012\"),\n\t\t\tDatabaseName: pulumi.String(\"example_database\"),\n\t\t\tTableName: pulumi.String(\"example_table\"),\n\t\t\tConfiguration: \u0026glue.CatalogTableOptimizerConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example-role\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tType: pulumi.String(\"compaction\"),\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.glue.CatalogTableOptimizer;\nimport com.pulumi.aws.glue.CatalogTableOptimizerArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationArgs;\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 CatalogTableOptimizer(\"example\", CatalogTableOptimizerArgs.builder()\n .catalogId(\"123456789012\")\n .databaseName(\"example_database\")\n .tableName(\"example_table\")\n .configuration(CatalogTableOptimizerConfigurationArgs.builder()\n .roleArn(\"arn:aws:iam::123456789012:role/example-role\")\n .enabled(true)\n .build())\n .type(\"compaction\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:CatalogTableOptimizer\n properties:\n catalogId: '123456789012'\n databaseName: example_database\n tableName: example_table\n configuration:\n roleArn: arn:aws:iam::123456789012:role/example-role\n enabled: true\n type: compaction\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Catalog Table Optimizer using the `catalog_id,database_name,table_name,type`. For example:\n\n```sh\n$ pulumi import aws:glue/catalogTableOptimizer:CatalogTableOptimizer example 123456789012,example_database,example_table,compaction\n```\n", + "description": "Resource for managing an AWS Glue Catalog Table Optimizer.\n\n## Example Usage\n\n### Compaction Optimizer\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.glue.CatalogTableOptimizer(\"example\", {\n catalogId: \"123456789012\",\n databaseName: \"example_database\",\n tableName: \"example_table\",\n configuration: {\n roleArn: \"arn:aws:iam::123456789012:role/example-role\",\n enabled: true,\n },\n type: \"compaction\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.CatalogTableOptimizer(\"example\",\n catalog_id=\"123456789012\",\n database_name=\"example_database\",\n table_name=\"example_table\",\n configuration={\n \"role_arn\": \"arn:aws:iam::123456789012:role/example-role\",\n \"enabled\": True,\n },\n type=\"compaction\")\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.Glue.CatalogTableOptimizer(\"example\", new()\n {\n CatalogId = \"123456789012\",\n DatabaseName = \"example_database\",\n TableName = \"example_table\",\n Configuration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationArgs\n {\n RoleArn = \"arn:aws:iam::123456789012:role/example-role\",\n Enabled = true,\n },\n Type = \"compaction\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\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 := glue.NewCatalogTableOptimizer(ctx, \"example\", \u0026glue.CatalogTableOptimizerArgs{\n\t\t\tCatalogId: pulumi.String(\"123456789012\"),\n\t\t\tDatabaseName: pulumi.String(\"example_database\"),\n\t\t\tTableName: pulumi.String(\"example_table\"),\n\t\t\tConfiguration: \u0026glue.CatalogTableOptimizerConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example-role\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tType: pulumi.String(\"compaction\"),\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.glue.CatalogTableOptimizer;\nimport com.pulumi.aws.glue.CatalogTableOptimizerArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationArgs;\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 CatalogTableOptimizer(\"example\", CatalogTableOptimizerArgs.builder()\n .catalogId(\"123456789012\")\n .databaseName(\"example_database\")\n .tableName(\"example_table\")\n .configuration(CatalogTableOptimizerConfigurationArgs.builder()\n .roleArn(\"arn:aws:iam::123456789012:role/example-role\")\n .enabled(true)\n .build())\n .type(\"compaction\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:CatalogTableOptimizer\n properties:\n catalogId: '123456789012'\n databaseName: example_database\n tableName: example_table\n configuration:\n roleArn: arn:aws:iam::123456789012:role/example-role\n enabled: true\n type: compaction\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snapshot Retention Optimizer\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.glue.CatalogTableOptimizer(\"example\", {\n catalogId: \"123456789012\",\n databaseName: \"example_database\",\n tableName: \"example_table\",\n configuration: {\n roleArn: \"arn:aws:iam::123456789012:role/example-role\",\n enabled: true,\n retentionConfiguration: {\n icebergConfiguration: {\n snapshotRetentionPeriodInDays: 7,\n numberOfSnapshotsToRetain: 3,\n cleanExpiredFiles: true,\n },\n },\n },\n type: \"retention\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.CatalogTableOptimizer(\"example\",\n catalog_id=\"123456789012\",\n database_name=\"example_database\",\n table_name=\"example_table\",\n configuration={\n \"role_arn\": \"arn:aws:iam::123456789012:role/example-role\",\n \"enabled\": True,\n \"retention_configuration\": {\n \"iceberg_configuration\": {\n \"snapshot_retention_period_in_days\": 7,\n \"number_of_snapshots_to_retain\": 3,\n \"clean_expired_files\": True,\n },\n },\n },\n type=\"retention\")\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.Glue.CatalogTableOptimizer(\"example\", new()\n {\n CatalogId = \"123456789012\",\n DatabaseName = \"example_database\",\n TableName = \"example_table\",\n Configuration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationArgs\n {\n RoleArn = \"arn:aws:iam::123456789012:role/example-role\",\n Enabled = true,\n RetentionConfiguration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationRetentionConfigurationArgs\n {\n IcebergConfiguration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfigurationArgs\n {\n SnapshotRetentionPeriodInDays = 7,\n NumberOfSnapshotsToRetain = 3,\n CleanExpiredFiles = true,\n },\n },\n },\n Type = \"retention\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\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 := glue.NewCatalogTableOptimizer(ctx, \"example\", \u0026glue.CatalogTableOptimizerArgs{\n\t\t\tCatalogId: pulumi.String(\"123456789012\"),\n\t\t\tDatabaseName: pulumi.String(\"example_database\"),\n\t\t\tTableName: pulumi.String(\"example_table\"),\n\t\t\tConfiguration: \u0026glue.CatalogTableOptimizerConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example-role\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRetentionConfiguration: \u0026glue.CatalogTableOptimizerConfigurationRetentionConfigurationArgs{\n\t\t\t\t\tIcebergConfiguration: \u0026glue.CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfigurationArgs{\n\t\t\t\t\t\tSnapshotRetentionPeriodInDays: pulumi.Float64(7),\n\t\t\t\t\t\tNumberOfSnapshotsToRetain: pulumi.Float64(3),\n\t\t\t\t\t\tCleanExpiredFiles: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"retention\"),\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.glue.CatalogTableOptimizer;\nimport com.pulumi.aws.glue.CatalogTableOptimizerArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationRetentionConfigurationArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfigurationArgs;\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 CatalogTableOptimizer(\"example\", CatalogTableOptimizerArgs.builder()\n .catalogId(\"123456789012\")\n .databaseName(\"example_database\")\n .tableName(\"example_table\")\n .configuration(CatalogTableOptimizerConfigurationArgs.builder()\n .roleArn(\"arn:aws:iam::123456789012:role/example-role\")\n .enabled(true)\n .retentionConfiguration(CatalogTableOptimizerConfigurationRetentionConfigurationArgs.builder()\n .icebergConfiguration(CatalogTableOptimizerConfigurationRetentionConfigurationIcebergConfigurationArgs.builder()\n .snapshotRetentionPeriodInDays(7)\n .numberOfSnapshotsToRetain(3)\n .cleanExpiredFiles(true)\n .build())\n .build())\n .build())\n .type(\"retention\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:CatalogTableOptimizer\n properties:\n catalogId: '123456789012'\n databaseName: example_database\n tableName: example_table\n configuration:\n roleArn: arn:aws:iam::123456789012:role/example-role\n enabled: true\n retentionConfiguration:\n icebergConfiguration:\n snapshotRetentionPeriodInDays: 7\n numberOfSnapshotsToRetain: 3\n cleanExpiredFiles: true\n type: retention\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Orphan File Deletion Optimizer\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.glue.CatalogTableOptimizer(\"example\", {\n catalogId: \"123456789012\",\n databaseName: \"example_database\",\n tableName: \"example_table\",\n configuration: {\n roleArn: \"arn:aws:iam::123456789012:role/example-role\",\n enabled: true,\n orphanFileDeletionConfiguration: {\n icebergConfiguration: {\n orphanFileRetentionPeriodInDays: 7,\n location: \"s3://example-bucket/example_table/\",\n },\n },\n },\n type: \"orphan_file_deletion\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.glue.CatalogTableOptimizer(\"example\",\n catalog_id=\"123456789012\",\n database_name=\"example_database\",\n table_name=\"example_table\",\n configuration={\n \"role_arn\": \"arn:aws:iam::123456789012:role/example-role\",\n \"enabled\": True,\n \"orphan_file_deletion_configuration\": {\n \"iceberg_configuration\": {\n \"orphan_file_retention_period_in_days\": 7,\n \"location\": \"s3://example-bucket/example_table/\",\n },\n },\n },\n type=\"orphan_file_deletion\")\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.Glue.CatalogTableOptimizer(\"example\", new()\n {\n CatalogId = \"123456789012\",\n DatabaseName = \"example_database\",\n TableName = \"example_table\",\n Configuration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationArgs\n {\n RoleArn = \"arn:aws:iam::123456789012:role/example-role\",\n Enabled = true,\n OrphanFileDeletionConfiguration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationArgs\n {\n IcebergConfiguration = new Aws.Glue.Inputs.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfigurationArgs\n {\n OrphanFileRetentionPeriodInDays = 7,\n Location = \"s3://example-bucket/example_table/\",\n },\n },\n },\n Type = \"orphan_file_deletion\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue\"\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 := glue.NewCatalogTableOptimizer(ctx, \"example\", \u0026glue.CatalogTableOptimizerArgs{\n\t\t\tCatalogId: pulumi.String(\"123456789012\"),\n\t\t\tDatabaseName: pulumi.String(\"example_database\"),\n\t\t\tTableName: pulumi.String(\"example_table\"),\n\t\t\tConfiguration: \u0026glue.CatalogTableOptimizerConfigurationArgs{\n\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::123456789012:role/example-role\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tOrphanFileDeletionConfiguration: \u0026glue.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationArgs{\n\t\t\t\t\tIcebergConfiguration: \u0026glue.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfigurationArgs{\n\t\t\t\t\t\tOrphanFileRetentionPeriodInDays: pulumi.Float64(7),\n\t\t\t\t\t\tLocation: pulumi.String(\"s3://example-bucket/example_table/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"orphan_file_deletion\"),\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.glue.CatalogTableOptimizer;\nimport com.pulumi.aws.glue.CatalogTableOptimizerArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationArgs;\nimport com.pulumi.aws.glue.inputs.CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfigurationArgs;\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 CatalogTableOptimizer(\"example\", CatalogTableOptimizerArgs.builder()\n .catalogId(\"123456789012\")\n .databaseName(\"example_database\")\n .tableName(\"example_table\")\n .configuration(CatalogTableOptimizerConfigurationArgs.builder()\n .roleArn(\"arn:aws:iam::123456789012:role/example-role\")\n .enabled(true)\n .orphanFileDeletionConfiguration(CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationArgs.builder()\n .icebergConfiguration(CatalogTableOptimizerConfigurationOrphanFileDeletionConfigurationIcebergConfigurationArgs.builder()\n .orphanFileRetentionPeriodInDays(7)\n .location(\"s3://example-bucket/example_table/\")\n .build())\n .build())\n .build())\n .type(\"orphan_file_deletion\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:glue:CatalogTableOptimizer\n properties:\n catalogId: '123456789012'\n databaseName: example_database\n tableName: example_table\n configuration:\n roleArn: arn:aws:iam::123456789012:role/example-role\n enabled: true\n orphanFileDeletionConfiguration:\n icebergConfiguration:\n orphanFileRetentionPeriodInDays: 7\n location: s3://example-bucket/example_table/\n type: orphan_file_deletion\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Glue Catalog Table Optimizer using the `catalog_id,database_name,table_name,type`. For example:\n\n```sh\n$ pulumi import aws:glue/catalogTableOptimizer:CatalogTableOptimizer example 123456789012,example_database,example_table,compaction\n```\n", "properties": { "catalogId": { "type": "string", @@ -273831,7 +274427,7 @@ }, "configuration": { "$ref": "#/types/aws:glue/CatalogTableOptimizerConfiguration:CatalogTableOptimizerConfiguration", - "description": "A configuration block that defines the table optimizer settings. The block contains:\n" + "description": "A configuration block that defines the table optimizer settings. See Configuration for additional details.\n" }, "databaseName": { "type": "string", @@ -273843,7 +274439,7 @@ }, "type": { "type": "string", - "description": "The type of table optimizer. Currently, the only valid value is compaction.\n" + "description": "The type of table optimizer. Valid values are `compaction`, `retention`, and `orphan_file_deletion`.\n" } }, "required": [ @@ -273859,7 +274455,7 @@ }, "configuration": { "$ref": "#/types/aws:glue/CatalogTableOptimizerConfiguration:CatalogTableOptimizerConfiguration", - "description": "A configuration block that defines the table optimizer settings. The block contains:\n" + "description": "A configuration block that defines the table optimizer settings. See Configuration for additional details.\n" }, "databaseName": { "type": "string", @@ -273871,7 +274467,7 @@ }, "type": { "type": "string", - "description": "The type of table optimizer. Currently, the only valid value is compaction.\n" + "description": "The type of table optimizer. Valid values are `compaction`, `retention`, and `orphan_file_deletion`.\n" } }, "requiredInputs": [ @@ -273889,7 +274485,7 @@ }, "configuration": { "$ref": "#/types/aws:glue/CatalogTableOptimizerConfiguration:CatalogTableOptimizerConfiguration", - "description": "A configuration block that defines the table optimizer settings. The block contains:\n" + "description": "A configuration block that defines the table optimizer settings. See Configuration for additional details.\n" }, "databaseName": { "type": "string", @@ -273901,7 +274497,7 @@ }, "type": { "type": "string", - "description": "The type of table optimizer. Currently, the only valid value is compaction.\n" + "description": "The type of table optimizer. Valid values are `compaction`, `retention`, and `orphan_file_deletion`.\n" } }, "type": "object" @@ -279790,18 +280386,18 @@ } }, "aws:iam/openIdConnectProvider:OpenIdConnectProvider": { - "description": "Provides an IAM OpenID Connect provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.iam.OpenIdConnectProvider(\"default\", {\n url: \"https://accounts.google.com\",\n clientIdLists: [\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"],\n thumbprintLists: [\"cf23df2207d99a74fbe169e3eba035e633b65d94\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.iam.OpenIdConnectProvider(\"default\",\n url=\"https://accounts.google.com\",\n client_id_lists=[\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"],\n thumbprint_lists=[\"cf23df2207d99a74fbe169e3eba035e633b65d94\"])\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 @default = new Aws.Iam.OpenIdConnectProvider(\"default\", new()\n {\n Url = \"https://accounts.google.com\",\n ClientIdLists = new[]\n {\n \"266362248691-342342xasdasdasda-apps.googleusercontent.com\",\n },\n ThumbprintLists = new[]\n {\n \"cf23df2207d99a74fbe169e3eba035e633b65d94\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\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 := iam.NewOpenIdConnectProvider(ctx, \"default\", \u0026iam.OpenIdConnectProviderArgs{\n\t\t\tUrl: pulumi.String(\"https://accounts.google.com\"),\n\t\t\tClientIdLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"),\n\t\t\t},\n\t\t\tThumbprintLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"cf23df2207d99a74fbe169e3eba035e633b65d94\"),\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.iam.OpenIdConnectProvider;\nimport com.pulumi.aws.iam.OpenIdConnectProviderArgs;\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 default_ = new OpenIdConnectProvider(\"default\", OpenIdConnectProviderArgs.builder()\n .url(\"https://accounts.google.com\")\n .clientIdLists(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\")\n .thumbprintLists(\"cf23df2207d99a74fbe169e3eba035e633b65d94\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:iam:OpenIdConnectProvider\n properties:\n url: https://accounts.google.com\n clientIdLists:\n - 266362248691-342342xasdasdasda-apps.googleusercontent.com\n thumbprintLists:\n - cf23df2207d99a74fbe169e3eba035e633b65d94\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import IAM OpenID Connect Providers using the `arn`. For example:\n\n```sh\n$ pulumi import aws:iam/openIdConnectProvider:OpenIdConnectProvider default arn:aws:iam::123456789012:oidc-provider/accounts.google.com\n```\n", + "description": "Provides an IAM OpenID Connect provider.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.iam.OpenIdConnectProvider(\"default\", {\n url: \"https://accounts.google.com\",\n clientIdLists: [\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"],\n thumbprintLists: [\"cf23df2207d99a74fbe169e3eba035e633b65d94\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.iam.OpenIdConnectProvider(\"default\",\n url=\"https://accounts.google.com\",\n client_id_lists=[\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"],\n thumbprint_lists=[\"cf23df2207d99a74fbe169e3eba035e633b65d94\"])\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 @default = new Aws.Iam.OpenIdConnectProvider(\"default\", new()\n {\n Url = \"https://accounts.google.com\",\n ClientIdLists = new[]\n {\n \"266362248691-342342xasdasdasda-apps.googleusercontent.com\",\n },\n ThumbprintLists = new[]\n {\n \"cf23df2207d99a74fbe169e3eba035e633b65d94\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\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 := iam.NewOpenIdConnectProvider(ctx, \"default\", \u0026iam.OpenIdConnectProviderArgs{\n\t\t\tUrl: pulumi.String(\"https://accounts.google.com\"),\n\t\t\tClientIdLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"),\n\t\t\t},\n\t\t\tThumbprintLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"cf23df2207d99a74fbe169e3eba035e633b65d94\"),\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.iam.OpenIdConnectProvider;\nimport com.pulumi.aws.iam.OpenIdConnectProviderArgs;\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 default_ = new OpenIdConnectProvider(\"default\", OpenIdConnectProviderArgs.builder()\n .url(\"https://accounts.google.com\")\n .clientIdLists(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\")\n .thumbprintLists(\"cf23df2207d99a74fbe169e3eba035e633b65d94\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:iam:OpenIdConnectProvider\n properties:\n url: https://accounts.google.com\n clientIdLists:\n - 266362248691-342342xasdasdasda-apps.googleusercontent.com\n thumbprintLists:\n - cf23df2207d99a74fbe169e3eba035e633b65d94\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Without A Thumbprint\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.iam.OpenIdConnectProvider(\"default\", {\n url: \"https://accounts.google.com\",\n clientIdLists: [\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.iam.OpenIdConnectProvider(\"default\",\n url=\"https://accounts.google.com\",\n client_id_lists=[\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"])\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 @default = new Aws.Iam.OpenIdConnectProvider(\"default\", new()\n {\n Url = \"https://accounts.google.com\",\n ClientIdLists = new[]\n {\n \"266362248691-342342xasdasdasda-apps.googleusercontent.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\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 := iam.NewOpenIdConnectProvider(ctx, \"default\", \u0026iam.OpenIdConnectProviderArgs{\n\t\t\tUrl: pulumi.String(\"https://accounts.google.com\"),\n\t\t\tClientIdLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\"),\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.iam.OpenIdConnectProvider;\nimport com.pulumi.aws.iam.OpenIdConnectProviderArgs;\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 default_ = new OpenIdConnectProvider(\"default\", OpenIdConnectProviderArgs.builder()\n .url(\"https://accounts.google.com\")\n .clientIdLists(\"266362248691-342342xasdasdasda-apps.googleusercontent.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:iam:OpenIdConnectProvider\n properties:\n url: https://accounts.google.com\n clientIdLists:\n - 266362248691-342342xasdasdasda-apps.googleusercontent.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import IAM OpenID Connect Providers using the `arn`. For example:\n\n```sh\n$ pulumi import aws:iam/openIdConnectProvider:OpenIdConnectProvider default arn:aws:iam::123456789012:oidc-provider/accounts.google.com\n```\n", "properties": { "arn": { "type": "string", - "description": "The ARN assigned by AWS for this provider.\n" + "description": "ARN assigned by AWS for this provider.\n" }, "clientIdLists": { "type": "array", "items": { "type": "string" }, - "description": "A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the client_id parameter on OAuth requests.)\n" + "description": "List of client IDs (audiences) that identify the application registered with the OpenID Connect provider. This is the value sent as the `client_id` parameter in OAuth requests.\n" }, "tags": { "type": "object", @@ -279815,19 +280411,18 @@ "additionalProperties": { "type": "string" }, - "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, "thumbprintLists": { "type": "array", "items": { "type": "string" - }, - "description": "A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s).\n" + } }, "url": { "type": "string", - "description": "The URL of the identity provider. Corresponds to the _iss_ claim.\n" + "description": "URL of the identity provider, corresponding to the `iss` claim.\n" } }, "required": [ @@ -279843,7 +280438,7 @@ "items": { "type": "string" }, - "description": "A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the client_id parameter on OAuth requests.)\n" + "description": "List of client IDs (audiences) that identify the application registered with the OpenID Connect provider. This is the value sent as the `client_id` parameter in OAuth requests.\n" }, "tags": { "type": "object", @@ -279856,18 +280451,16 @@ "type": "array", "items": { "type": "string" - }, - "description": "A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s).\n" + } }, "url": { "type": "string", - "description": "The URL of the identity provider. Corresponds to the _iss_ claim.\n", + "description": "URL of the identity provider, corresponding to the `iss` claim.\n", "willReplaceOnChanges": true } }, "requiredInputs": [ "clientIdLists", - "thumbprintLists", "url" ], "stateInputs": { @@ -279875,14 +280468,14 @@ "properties": { "arn": { "type": "string", - "description": "The ARN assigned by AWS for this provider.\n" + "description": "ARN assigned by AWS for this provider.\n" }, "clientIdLists": { "type": "array", "items": { "type": "string" }, - "description": "A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the client_id parameter on OAuth requests.)\n" + "description": "List of client IDs (audiences) that identify the application registered with the OpenID Connect provider. This is the value sent as the `client_id` parameter in OAuth requests.\n" }, "tags": { "type": "object", @@ -279896,19 +280489,18 @@ "additionalProperties": { "type": "string" }, - "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, "thumbprintLists": { "type": "array", "items": { "type": "string" - }, - "description": "A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s).\n" + } }, "url": { "type": "string", - "description": "The URL of the identity provider. Corresponds to the _iss_ claim.\n", + "description": "URL of the identity provider, corresponding to the `iss` claim.\n", "willReplaceOnChanges": true } }, @@ -295711,7 +296303,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tagsAll": { "type": "object", @@ -295778,7 +296370,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tcpIdleTimeoutSeconds": { "type": "integer", @@ -295837,7 +296429,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": "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\n\u003e **Note::** When a `Name` key is specified in the map, the AWS Console maps the value to the `Name Tag` column value inside the `Listener Rules` table within a specific load balancer listener page. Otherwise, the value resolves to `Default`.\n" }, "tagsAll": { "type": "object", @@ -307741,7 +308333,7 @@ } }, "aws:msk/replicator:Replicator": { - "description": "Resource for managing an AWS Managed Streaming for Kafka Replicator.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.msk.Replicator(\"test\", {\n replicatorName: \"test-name\",\n description: \"test-description\",\n serviceExecutionRoleArn: sourceAwsIamRole.arn,\n kafkaClusters: [\n {\n amazonMskCluster: {\n mskClusterArn: source.arn,\n },\n vpcConfig: {\n subnetIds: sourceAwsSubnet.map(__item =\u003e __item.id),\n securityGroupsIds: [sourceAwsSecurityGroup.id],\n },\n },\n {\n amazonMskCluster: {\n mskClusterArn: target.arn,\n },\n vpcConfig: {\n subnetIds: targetAwsSubnet.map(__item =\u003e __item.id),\n securityGroupsIds: [targetAwsSecurityGroup.id],\n },\n },\n ],\n replicationInfoList: {\n sourceKafkaClusterArn: source.arn,\n targetKafkaClusterArn: target.arn,\n targetCompressionType: \"NONE\",\n topicReplications: [{\n topicsToReplicates: [\".*\"],\n startingPosition: {\n type: \"LATEST\",\n },\n }],\n consumerGroupReplications: [{\n consumerGroupsToReplicates: [\".*\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.msk.Replicator(\"test\",\n replicator_name=\"test-name\",\n description=\"test-description\",\n service_execution_role_arn=source_aws_iam_role[\"arn\"],\n kafka_clusters=[\n {\n \"amazon_msk_cluster\": {\n \"msk_cluster_arn\": source[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [__item[\"id\"] for __item in source_aws_subnet],\n \"security_groups_ids\": [source_aws_security_group[\"id\"]],\n },\n },\n {\n \"amazon_msk_cluster\": {\n \"msk_cluster_arn\": target[\"arn\"],\n },\n \"vpc_config\": {\n \"subnet_ids\": [__item[\"id\"] for __item in target_aws_subnet],\n \"security_groups_ids\": [target_aws_security_group[\"id\"]],\n },\n },\n ],\n replication_info_list={\n \"source_kafka_cluster_arn\": source[\"arn\"],\n \"target_kafka_cluster_arn\": target[\"arn\"],\n \"target_compression_type\": \"NONE\",\n \"topic_replications\": [{\n \"topics_to_replicates\": [\".*\"],\n \"starting_position\": {\n \"type\": \"LATEST\",\n },\n }],\n \"consumer_group_replications\": [{\n \"consumer_groups_to_replicates\": [\".*\"],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Msk.Replicator(\"test\", new()\n {\n ReplicatorName = \"test-name\",\n Description = \"test-description\",\n ServiceExecutionRoleArn = sourceAwsIamRole.Arn,\n KafkaClusters = new[]\n {\n new Aws.Msk.Inputs.ReplicatorKafkaClusterArgs\n {\n AmazonMskCluster = new Aws.Msk.Inputs.ReplicatorKafkaClusterAmazonMskClusterArgs\n {\n MskClusterArn = source.Arn,\n },\n VpcConfig = new Aws.Msk.Inputs.ReplicatorKafkaClusterVpcConfigArgs\n {\n SubnetIds = sourceAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n SecurityGroupsIds = new[]\n {\n sourceAwsSecurityGroup.Id,\n },\n },\n },\n new Aws.Msk.Inputs.ReplicatorKafkaClusterArgs\n {\n AmazonMskCluster = new Aws.Msk.Inputs.ReplicatorKafkaClusterAmazonMskClusterArgs\n {\n MskClusterArn = target.Arn,\n },\n VpcConfig = new Aws.Msk.Inputs.ReplicatorKafkaClusterVpcConfigArgs\n {\n SubnetIds = targetAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n SecurityGroupsIds = new[]\n {\n targetAwsSecurityGroup.Id,\n },\n },\n },\n },\n ReplicationInfoList = new Aws.Msk.Inputs.ReplicatorReplicationInfoListArgs\n {\n SourceKafkaClusterArn = source.Arn,\n TargetKafkaClusterArn = target.Arn,\n TargetCompressionType = \"NONE\",\n TopicReplications = new[]\n {\n new Aws.Msk.Inputs.ReplicatorReplicationInfoListTopicReplicationArgs\n {\n TopicsToReplicates = new[]\n {\n \".*\",\n },\n StartingPosition = new Aws.Msk.Inputs.ReplicatorReplicationInfoListTopicReplicationStartingPositionArgs\n {\n Type = \"LATEST\",\n },\n },\n },\n ConsumerGroupReplications = new[]\n {\n new Aws.Msk.Inputs.ReplicatorReplicationInfoListConsumerGroupReplicationArgs\n {\n ConsumerGroupsToReplicates = new[]\n {\n \".*\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/msk\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\n_, err := msk.NewReplicator(ctx, \"test\", \u0026msk.ReplicatorArgs{\nReplicatorName: pulumi.String(\"test-name\"),\nDescription: pulumi.String(\"test-description\"),\nServiceExecutionRoleArn: pulumi.Any(sourceAwsIamRole.Arn),\nKafkaClusters: msk.ReplicatorKafkaClusterArray{\n\u0026msk.ReplicatorKafkaClusterArgs{\nAmazonMskCluster: \u0026msk.ReplicatorKafkaClusterAmazonMskClusterArgs{\nMskClusterArn: pulumi.Any(source.Arn),\n},\nVpcConfig: \u0026msk.ReplicatorKafkaClusterVpcConfigArgs{\nSubnetIds: []pulumi.String(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:9,27-48)),\nSecurityGroupsIds: pulumi.StringArray{\nsourceAwsSecurityGroup.Id,\n},\n},\n},\n\u0026msk.ReplicatorKafkaClusterArgs{\nAmazonMskCluster: \u0026msk.ReplicatorKafkaClusterAmazonMskClusterArgs{\nMskClusterArn: pulumi.Any(target.Arn),\n},\nVpcConfig: \u0026msk.ReplicatorKafkaClusterVpcConfigArgs{\nSubnetIds: []pulumi.String(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:17,27-48)),\nSecurityGroupsIds: pulumi.StringArray{\ntargetAwsSecurityGroup.Id,\n},\n},\n},\n},\nReplicationInfoList: \u0026msk.ReplicatorReplicationInfoListArgs{\nSourceKafkaClusterArn: pulumi.Any(source.Arn),\nTargetKafkaClusterArn: pulumi.Any(target.Arn),\nTargetCompressionType: pulumi.String(\"NONE\"),\nTopicReplications: msk.ReplicatorReplicationInfoListTopicReplicationArray{\n\u0026msk.ReplicatorReplicationInfoListTopicReplicationArgs{\nTopicsToReplicates: pulumi.StringArray{\npulumi.String(\".*\"),\n},\nStartingPosition: \u0026msk.ReplicatorReplicationInfoListTopicReplicationStartingPositionArgs{\nType: pulumi.String(\"LATEST\"),\n},\n},\n},\nConsumerGroupReplications: msk.ReplicatorReplicationInfoListConsumerGroupReplicationArray{\n\u0026msk.ReplicatorReplicationInfoListConsumerGroupReplicationArgs{\nConsumerGroupsToReplicates: pulumi.StringArray{\npulumi.String(\".*\"),\n},\n},\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.msk.Replicator;\nimport com.pulumi.aws.msk.ReplicatorArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterAmazonMskClusterArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterVpcConfigArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorReplicationInfoListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Replicator(\"test\", ReplicatorArgs.builder()\n .replicatorName(\"test-name\")\n .description(\"test-description\")\n .serviceExecutionRoleArn(sourceAwsIamRole.arn())\n .kafkaClusters( \n ReplicatorKafkaClusterArgs.builder()\n .amazonMskCluster(ReplicatorKafkaClusterAmazonMskClusterArgs.builder()\n .mskClusterArn(source.arn())\n .build())\n .vpcConfig(ReplicatorKafkaClusterVpcConfigArgs.builder()\n .subnetIds(sourceAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .securityGroupsIds(sourceAwsSecurityGroup.id())\n .build())\n .build(),\n ReplicatorKafkaClusterArgs.builder()\n .amazonMskCluster(ReplicatorKafkaClusterAmazonMskClusterArgs.builder()\n .mskClusterArn(target.arn())\n .build())\n .vpcConfig(ReplicatorKafkaClusterVpcConfigArgs.builder()\n .subnetIds(targetAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .securityGroupsIds(targetAwsSecurityGroup.id())\n .build())\n .build())\n .replicationInfoList(ReplicatorReplicationInfoListArgs.builder()\n .sourceKafkaClusterArn(source.arn())\n .targetKafkaClusterArn(target.arn())\n .targetCompressionType(\"NONE\")\n .topicReplications(ReplicatorReplicationInfoListTopicReplicationArgs.builder()\n .topicsToReplicates(\".*\")\n .startingPosition(ReplicatorReplicationInfoListTopicReplicationStartingPositionArgs.builder()\n .type(\"LATEST\")\n .build())\n .build())\n .consumerGroupReplications(ReplicatorReplicationInfoListConsumerGroupReplicationArgs.builder()\n .consumerGroupsToReplicates(\".*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MSK replicators using the replicator ARN. For example:\n\n```sh\n$ pulumi import aws:msk/replicator:Replicator example arn:aws:kafka:us-west-2:123456789012:configuration/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3\n```\n", + "description": "Resource for managing an AWS Managed Streaming for Kafka Replicator.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.aws.msk.Replicator;\nimport com.pulumi.aws.msk.ReplicatorArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterAmazonMskClusterArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorKafkaClusterVpcConfigArgs;\nimport com.pulumi.aws.msk.inputs.ReplicatorReplicationInfoListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Replicator(\"test\", ReplicatorArgs.builder()\n .replicatorName(\"test-name\")\n .description(\"test-description\")\n .serviceExecutionRoleArn(sourceAwsIamRole.arn())\n .kafkaClusters( \n ReplicatorKafkaClusterArgs.builder()\n .amazonMskCluster(ReplicatorKafkaClusterAmazonMskClusterArgs.builder()\n .mskClusterArn(source.arn())\n .build())\n .vpcConfig(ReplicatorKafkaClusterVpcConfigArgs.builder()\n .subnetIds(sourceAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .securityGroupsIds(sourceAwsSecurityGroup.id())\n .build())\n .build(),\n ReplicatorKafkaClusterArgs.builder()\n .amazonMskCluster(ReplicatorKafkaClusterAmazonMskClusterArgs.builder()\n .mskClusterArn(target.arn())\n .build())\n .vpcConfig(ReplicatorKafkaClusterVpcConfigArgs.builder()\n .subnetIds(targetAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .securityGroupsIds(targetAwsSecurityGroup.id())\n .build())\n .build())\n .replicationInfoList(ReplicatorReplicationInfoListArgs.builder()\n .sourceKafkaClusterArn(source.arn())\n .targetKafkaClusterArn(target.arn())\n .targetCompressionType(\"NONE\")\n .topicReplications(ReplicatorReplicationInfoListTopicReplicationArgs.builder()\n .topicConfigurationName(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .topicsToReplicates(\".*\")\n .startingPosition(ReplicatorReplicationInfoListTopicReplicationStartingPositionArgs.builder()\n .type(\"LATEST\")\n .build())\n .build())\n .consumerGroupReplications(ReplicatorReplicationInfoListConsumerGroupReplicationArgs.builder()\n .consumerGroupsToReplicates(\".*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MSK replicators using the replicator ARN. For example:\n\n```sh\n$ pulumi import aws:msk/replicator:Replicator example arn:aws:kafka:us-west-2:123456789012:configuration/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3\n```\n", "properties": { "arn": { "type": "string", @@ -307888,7 +308480,7 @@ } }, "aws:msk/scramSecretAssociation:ScramSecretAssociation": { - "description": "Associates SCRAM secrets stored in the Secrets Manager service with a Managed Streaming for Kafka (MSK) cluster.\n\n\u003e **Note:** The following assumes the MSK cluster has SASL/SCRAM authentication enabled. See below for example usage or refer to the [Username/Password Authentication](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html) section of the MSK Developer Guide for more details.\n\nTo set up username and password authentication for a cluster, create an `aws.secretsmanager.Secret` resource and associate\na username and password with the secret with an `aws.secretsmanager.SecretVersion` resource. When creating a secret for the cluster,\nthe `name` must have the prefix `AmazonMSK_` and you must either use an existing custom AWS KMS key or create a new\ncustom AWS KMS key for your secret with the `aws.kms.Key` resource. It is important to note that a policy is required for the `aws.secretsmanager.Secret`\nresource in order for Kafka to be able to read it. This policy is attached automatically when the `aws.msk.ScramSecretAssociation` is used,\nhowever, this policy will not be in the state and as such, will present a diff on plan/apply. For that reason, you must use the `aws.secretsmanager.SecretPolicy`\nresource](/docs/providers/aws/r/secretsmanager_secret_policy.html) as shown below in order to ensure that the state is in a clean state after the creation of secret and the association to the cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleCluster = new aws.msk.Cluster(\"example\", {\n clusterName: \"example\",\n clientAuthentication: {\n sasl: {\n scram: true,\n },\n },\n});\nconst exampleKey = new aws.kms.Key(\"example\", {description: \"Example Key for MSK Cluster Scram Secret Association\"});\nconst exampleSecret = new aws.secretsmanager.Secret(\"example\", {\n name: \"AmazonMSK_example\",\n kmsKeyId: exampleKey.keyId,\n});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleSecret.id,\n secretString: JSON.stringify({\n username: \"user\",\n password: \"pass\",\n }),\n});\nconst exampleScramSecretAssociation = new aws.msk.ScramSecretAssociation(\"example\", {\n clusterArn: exampleCluster.arn,\n secretArnLists: [exampleSecret.arn],\n}, {\n dependsOn: [exampleSecretVersion],\n});\nconst example = aws.iam.getPolicyDocumentOutput({\n statements: [{\n sid: \"AWSKafkaResourcePolicy\",\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"kafka.amazonaws.com\"],\n }],\n actions: [\"secretsmanager:getSecretValue\"],\n resources: [exampleSecret.arn],\n }],\n});\nconst exampleSecretPolicy = new aws.secretsmanager.SecretPolicy(\"example\", {\n secretArn: exampleSecret.arn,\n policy: example.apply(example =\u003e example.json),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample_cluster = aws.msk.Cluster(\"example\",\n cluster_name=\"example\",\n client_authentication={\n \"sasl\": {\n \"scram\": True,\n },\n })\nexample_key = aws.kms.Key(\"example\", description=\"Example Key for MSK Cluster Scram Secret Association\")\nexample_secret = aws.secretsmanager.Secret(\"example\",\n name=\"AmazonMSK_example\",\n kms_key_id=example_key.key_id)\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_secret.id,\n secret_string=json.dumps({\n \"username\": \"user\",\n \"password\": \"pass\",\n }))\nexample_scram_secret_association = aws.msk.ScramSecretAssociation(\"example\",\n cluster_arn=example_cluster.arn,\n secret_arn_lists=[example_secret.arn],\n opts = pulumi.ResourceOptions(depends_on=[example_secret_version]))\nexample = aws.iam.get_policy_document_output(statements=[{\n \"sid\": \"AWSKafkaResourcePolicy\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"kafka.amazonaws.com\"],\n }],\n \"actions\": [\"secretsmanager:getSecretValue\"],\n \"resources\": [example_secret.arn],\n}])\nexample_secret_policy = aws.secretsmanager.SecretPolicy(\"example\",\n secret_arn=example_secret.arn,\n policy=example.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleCluster = new Aws.Msk.Cluster(\"example\", new()\n {\n ClusterName = \"example\",\n ClientAuthentication = new Aws.Msk.Inputs.ClusterClientAuthenticationArgs\n {\n Sasl = new Aws.Msk.Inputs.ClusterClientAuthenticationSaslArgs\n {\n Scram = true,\n },\n },\n });\n\n var exampleKey = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"Example Key for MSK Cluster Scram Secret Association\",\n });\n\n var exampleSecret = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"AmazonMSK_example\",\n KmsKeyId = exampleKey.KeyId,\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleSecret.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"user\",\n [\"password\"] = \"pass\",\n }),\n });\n\n var exampleScramSecretAssociation = new Aws.Msk.ScramSecretAssociation(\"example\", new()\n {\n ClusterArn = exampleCluster.Arn,\n SecretArnLists = new[]\n {\n exampleSecret.Arn,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleSecretVersion,\n },\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"AWSKafkaResourcePolicy\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"kafka.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"secretsmanager:getSecretValue\",\n },\n Resources = new[]\n {\n exampleSecret.Arn,\n },\n },\n },\n });\n\n var exampleSecretPolicy = new Aws.SecretsManager.SecretPolicy(\"example\", new()\n {\n SecretArn = exampleSecret.Arn,\n Policy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/msk\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleCluster, err := msk.NewCluster(ctx, \"example\", \u0026msk.ClusterArgs{\n\t\t\tClusterName: pulumi.String(\"example\"),\n\t\t\tClientAuthentication: \u0026msk.ClusterClientAuthenticationArgs{\n\t\t\t\tSasl: \u0026msk.ClusterClientAuthenticationSaslArgs{\n\t\t\t\t\tScram: pulumi.Bool(true),\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\texampleKey, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"Example Key for MSK Cluster Scram Secret Association\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSecret, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"AmazonMSK_example\"),\n\t\t\tKmsKeyId: exampleKey.KeyId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"user\",\n\t\t\t\"password\": \"pass\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texampleSecretVersion, err := secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: exampleSecret.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = msk.NewScramSecretAssociation(ctx, \"example\", \u0026msk.ScramSecretAssociationArgs{\n\t\t\tClusterArn: exampleCluster.Arn,\n\t\t\tSecretArnLists: pulumi.StringArray{\n\t\t\t\texampleSecret.Arn,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"AWSKafkaResourcePolicy\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"kafka.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretsmanager:getSecretValue\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texampleSecret.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = secretsmanager.NewSecretPolicy(ctx, \"example\", \u0026secretsmanager.SecretPolicyArgs{\n\t\t\tSecretArn: exampleSecret.Arn,\n\t\t\tPolicy: pulumi.String(example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026example.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.msk.Cluster;\nimport com.pulumi.aws.msk.ClusterArgs;\nimport com.pulumi.aws.msk.inputs.ClusterClientAuthenticationArgs;\nimport com.pulumi.aws.msk.inputs.ClusterClientAuthenticationSaslArgs;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.msk.ScramSecretAssociation;\nimport com.pulumi.aws.msk.ScramSecretAssociationArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.secretsmanager.SecretPolicy;\nimport com.pulumi.aws.secretsmanager.SecretPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .clusterName(\"example\")\n .clientAuthentication(ClusterClientAuthenticationArgs.builder()\n .sasl(ClusterClientAuthenticationSaslArgs.builder()\n .scram(true)\n .build())\n .build())\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .description(\"Example Key for MSK Cluster Scram Secret Association\")\n .build());\n\n var exampleSecret = new Secret(\"exampleSecret\", SecretArgs.builder()\n .name(\"AmazonMSK_example\")\n .kmsKeyId(exampleKey.keyId())\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(exampleSecret.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"user\"),\n jsonProperty(\"password\", \"pass\")\n )))\n .build());\n\n var exampleScramSecretAssociation = new ScramSecretAssociation(\"exampleScramSecretAssociation\", ScramSecretAssociationArgs.builder()\n .clusterArn(exampleCluster.arn())\n .secretArnLists(exampleSecret.arn())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleSecretVersion)\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"AWSKafkaResourcePolicy\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"kafka.amazonaws.com\")\n .build())\n .actions(\"secretsmanager:getSecretValue\")\n .resources(exampleSecret.arn())\n .build())\n .build());\n\n var exampleSecretPolicy = new SecretPolicy(\"exampleSecretPolicy\", SecretPolicyArgs.builder()\n .secretArn(exampleSecret.arn())\n .policy(example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(example -\u003e example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleScramSecretAssociation:\n type: aws:msk:ScramSecretAssociation\n name: example\n properties:\n clusterArn: ${exampleCluster.arn}\n secretArnLists:\n - ${exampleSecret.arn}\n options:\n dependsOn:\n - ${exampleSecretVersion}\n exampleCluster:\n type: aws:msk:Cluster\n name: example\n properties:\n clusterName: example\n clientAuthentication:\n sasl:\n scram: true\n exampleSecret:\n type: aws:secretsmanager:Secret\n name: example\n properties:\n name: AmazonMSK_example\n kmsKeyId: ${exampleKey.keyId}\n exampleKey:\n type: aws:kms:Key\n name: example\n properties:\n description: Example Key for MSK Cluster Scram Secret Association\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${exampleSecret.id}\n secretString:\n fn::toJSON:\n username: user\n password: pass\n exampleSecretPolicy:\n type: aws:secretsmanager:SecretPolicy\n name: example\n properties:\n secretArn: ${exampleSecret.arn}\n policy: ${example.json}\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: AWSKafkaResourcePolicy\n effect: Allow\n principals:\n - type: Service\n identifiers:\n - kafka.amazonaws.com\n actions:\n - secretsmanager:getSecretValue\n resources:\n - ${exampleSecret.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MSK SCRAM Secret Associations using the `id`. For example:\n\n```sh\n$ pulumi import aws:msk/scramSecretAssociation:ScramSecretAssociation example arn:aws:kafka:us-west-2:123456789012:cluster/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3\n```\n", + "description": "Associates SCRAM secrets stored in the Secrets Manager service with a Managed Streaming for Kafka (MSK) cluster.\n\n!\u003e This resource takes exclusive ownership over SCRAM secrets associated with a cluster. This includes removal of SCRAM secrets which are not explicitly configured. To prevent persistent drift, ensure any `aws.msk.SingleScramSecretAssociation` resources managed alongside this resource are included in the `secret_arn_list` argument.\n\n\u003e **Note:** The following assumes the MSK cluster has SASL/SCRAM authentication enabled. See below for example usage or refer to the [Username/Password Authentication](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html) section of the MSK Developer Guide for more details.\n\nTo set up username and password authentication for a cluster, create an `aws.secretsmanager.Secret` resource and associate\na username and password with the secret with an `aws.secretsmanager.SecretVersion` resource. When creating a secret for the cluster,\nthe `name` must have the prefix `AmazonMSK_` and you must either use an existing custom AWS KMS key or create a new\ncustom AWS KMS key for your secret with the `aws.kms.Key` resource. It is important to note that a policy is required for the `aws.secretsmanager.Secret`\nresource in order for Kafka to be able to read it. This policy is attached automatically when the `aws.msk.ScramSecretAssociation` is used,\nhowever, this policy will not be in the state and as such, will present a diff on plan/apply. For that reason, you must use the `aws.secretsmanager.SecretPolicy`\nresource](/docs/providers/aws/r/secretsmanager_secret_policy.html) as shown below in order to ensure that the state is in a clean state after the creation of secret and the association to the cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst exampleCluster = new aws.msk.Cluster(\"example\", {\n clusterName: \"example\",\n clientAuthentication: {\n sasl: {\n scram: true,\n },\n },\n});\nconst exampleKey = new aws.kms.Key(\"example\", {description: \"Example Key for MSK Cluster Scram Secret Association\"});\nconst exampleSecret = new aws.secretsmanager.Secret(\"example\", {\n name: \"AmazonMSK_example\",\n kmsKeyId: exampleKey.keyId,\n});\nconst exampleSecretVersion = new aws.secretsmanager.SecretVersion(\"example\", {\n secretId: exampleSecret.id,\n secretString: JSON.stringify({\n username: \"user\",\n password: \"pass\",\n }),\n});\nconst exampleScramSecretAssociation = new aws.msk.ScramSecretAssociation(\"example\", {\n clusterArn: exampleCluster.arn,\n secretArnLists: [exampleSecret.arn],\n}, {\n dependsOn: [exampleSecretVersion],\n});\nconst example = aws.iam.getPolicyDocumentOutput({\n statements: [{\n sid: \"AWSKafkaResourcePolicy\",\n effect: \"Allow\",\n principals: [{\n type: \"Service\",\n identifiers: [\"kafka.amazonaws.com\"],\n }],\n actions: [\"secretsmanager:getSecretValue\"],\n resources: [exampleSecret.arn],\n }],\n});\nconst exampleSecretPolicy = new aws.secretsmanager.SecretPolicy(\"example\", {\n secretArn: exampleSecret.arn,\n policy: example.apply(example =\u003e example.json),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample_cluster = aws.msk.Cluster(\"example\",\n cluster_name=\"example\",\n client_authentication={\n \"sasl\": {\n \"scram\": True,\n },\n })\nexample_key = aws.kms.Key(\"example\", description=\"Example Key for MSK Cluster Scram Secret Association\")\nexample_secret = aws.secretsmanager.Secret(\"example\",\n name=\"AmazonMSK_example\",\n kms_key_id=example_key.key_id)\nexample_secret_version = aws.secretsmanager.SecretVersion(\"example\",\n secret_id=example_secret.id,\n secret_string=json.dumps({\n \"username\": \"user\",\n \"password\": \"pass\",\n }))\nexample_scram_secret_association = aws.msk.ScramSecretAssociation(\"example\",\n cluster_arn=example_cluster.arn,\n secret_arn_lists=[example_secret.arn],\n opts = pulumi.ResourceOptions(depends_on=[example_secret_version]))\nexample = aws.iam.get_policy_document_output(statements=[{\n \"sid\": \"AWSKafkaResourcePolicy\",\n \"effect\": \"Allow\",\n \"principals\": [{\n \"type\": \"Service\",\n \"identifiers\": [\"kafka.amazonaws.com\"],\n }],\n \"actions\": [\"secretsmanager:getSecretValue\"],\n \"resources\": [example_secret.arn],\n}])\nexample_secret_policy = aws.secretsmanager.SecretPolicy(\"example\",\n secret_arn=example_secret.arn,\n policy=example.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleCluster = new Aws.Msk.Cluster(\"example\", new()\n {\n ClusterName = \"example\",\n ClientAuthentication = new Aws.Msk.Inputs.ClusterClientAuthenticationArgs\n {\n Sasl = new Aws.Msk.Inputs.ClusterClientAuthenticationSaslArgs\n {\n Scram = true,\n },\n },\n });\n\n var exampleKey = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"Example Key for MSK Cluster Scram Secret Association\",\n });\n\n var exampleSecret = new Aws.SecretsManager.Secret(\"example\", new()\n {\n Name = \"AmazonMSK_example\",\n KmsKeyId = exampleKey.KeyId,\n });\n\n var exampleSecretVersion = new Aws.SecretsManager.SecretVersion(\"example\", new()\n {\n SecretId = exampleSecret.Id,\n SecretString = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"username\"] = \"user\",\n [\"password\"] = \"pass\",\n }),\n });\n\n var exampleScramSecretAssociation = new Aws.Msk.ScramSecretAssociation(\"example\", new()\n {\n ClusterArn = exampleCluster.Arn,\n SecretArnLists = new[]\n {\n exampleSecret.Arn,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleSecretVersion,\n },\n });\n\n var example = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"AWSKafkaResourcePolicy\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"Service\",\n Identifiers = new[]\n {\n \"kafka.amazonaws.com\",\n },\n },\n },\n Actions = new[]\n {\n \"secretsmanager:getSecretValue\",\n },\n Resources = new[]\n {\n exampleSecret.Arn,\n },\n },\n },\n });\n\n var exampleSecretPolicy = new Aws.SecretsManager.SecretPolicy(\"example\", new()\n {\n SecretArn = exampleSecret.Arn,\n Policy = example.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/msk\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/secretsmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleCluster, err := msk.NewCluster(ctx, \"example\", \u0026msk.ClusterArgs{\n\t\t\tClusterName: pulumi.String(\"example\"),\n\t\t\tClientAuthentication: \u0026msk.ClusterClientAuthenticationArgs{\n\t\t\t\tSasl: \u0026msk.ClusterClientAuthenticationSaslArgs{\n\t\t\t\t\tScram: pulumi.Bool(true),\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\texampleKey, err := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"Example Key for MSK Cluster Scram Secret Association\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSecret, err := secretsmanager.NewSecret(ctx, \"example\", \u0026secretsmanager.SecretArgs{\n\t\t\tName: pulumi.String(\"AmazonMSK_example\"),\n\t\t\tKmsKeyId: exampleKey.KeyId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"username\": \"user\",\n\t\t\t\"password\": \"pass\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texampleSecretVersion, err := secretsmanager.NewSecretVersion(ctx, \"example\", \u0026secretsmanager.SecretVersionArgs{\n\t\t\tSecretId: exampleSecret.ID(),\n\t\t\tSecretString: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = msk.NewScramSecretAssociation(ctx, \"example\", \u0026msk.ScramSecretAssociationArgs{\n\t\t\tClusterArn: exampleCluster.Arn,\n\t\t\tSecretArnLists: pulumi.StringArray{\n\t\t\t\texampleSecret.Arn,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"AWSKafkaResourcePolicy\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"Service\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"kafka.amazonaws.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretsmanager:getSecretValue\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\texampleSecret.Arn,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = secretsmanager.NewSecretPolicy(ctx, \"example\", \u0026secretsmanager.SecretPolicyArgs{\n\t\t\tSecretArn: exampleSecret.Arn,\n\t\t\tPolicy: pulumi.String(example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026example.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.msk.Cluster;\nimport com.pulumi.aws.msk.ClusterArgs;\nimport com.pulumi.aws.msk.inputs.ClusterClientAuthenticationArgs;\nimport com.pulumi.aws.msk.inputs.ClusterClientAuthenticationSaslArgs;\nimport com.pulumi.aws.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.secretsmanager.Secret;\nimport com.pulumi.aws.secretsmanager.SecretArgs;\nimport com.pulumi.aws.secretsmanager.SecretVersion;\nimport com.pulumi.aws.secretsmanager.SecretVersionArgs;\nimport com.pulumi.aws.msk.ScramSecretAssociation;\nimport com.pulumi.aws.msk.ScramSecretAssociationArgs;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.aws.secretsmanager.SecretPolicy;\nimport com.pulumi.aws.secretsmanager.SecretPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\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 exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .clusterName(\"example\")\n .clientAuthentication(ClusterClientAuthenticationArgs.builder()\n .sasl(ClusterClientAuthenticationSaslArgs.builder()\n .scram(true)\n .build())\n .build())\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .description(\"Example Key for MSK Cluster Scram Secret Association\")\n .build());\n\n var exampleSecret = new Secret(\"exampleSecret\", SecretArgs.builder()\n .name(\"AmazonMSK_example\")\n .kmsKeyId(exampleKey.keyId())\n .build());\n\n var exampleSecretVersion = new SecretVersion(\"exampleSecretVersion\", SecretVersionArgs.builder()\n .secretId(exampleSecret.id())\n .secretString(serializeJson(\n jsonObject(\n jsonProperty(\"username\", \"user\"),\n jsonProperty(\"password\", \"pass\")\n )))\n .build());\n\n var exampleScramSecretAssociation = new ScramSecretAssociation(\"exampleScramSecretAssociation\", ScramSecretAssociationArgs.builder()\n .clusterArn(exampleCluster.arn())\n .secretArnLists(exampleSecret.arn())\n .build(), CustomResourceOptions.builder()\n .dependsOn(exampleSecretVersion)\n .build());\n\n final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"AWSKafkaResourcePolicy\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"Service\")\n .identifiers(\"kafka.amazonaws.com\")\n .build())\n .actions(\"secretsmanager:getSecretValue\")\n .resources(exampleSecret.arn())\n .build())\n .build());\n\n var exampleSecretPolicy = new SecretPolicy(\"exampleSecretPolicy\", SecretPolicyArgs.builder()\n .secretArn(exampleSecret.arn())\n .policy(example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(example -\u003e example.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleScramSecretAssociation:\n type: aws:msk:ScramSecretAssociation\n name: example\n properties:\n clusterArn: ${exampleCluster.arn}\n secretArnLists:\n - ${exampleSecret.arn}\n options:\n dependsOn:\n - ${exampleSecretVersion}\n exampleCluster:\n type: aws:msk:Cluster\n name: example\n properties:\n clusterName: example\n clientAuthentication:\n sasl:\n scram: true\n exampleSecret:\n type: aws:secretsmanager:Secret\n name: example\n properties:\n name: AmazonMSK_example\n kmsKeyId: ${exampleKey.keyId}\n exampleKey:\n type: aws:kms:Key\n name: example\n properties:\n description: Example Key for MSK Cluster Scram Secret Association\n exampleSecretVersion:\n type: aws:secretsmanager:SecretVersion\n name: example\n properties:\n secretId: ${exampleSecret.id}\n secretString:\n fn::toJSON:\n username: user\n password: pass\n exampleSecretPolicy:\n type: aws:secretsmanager:SecretPolicy\n name: example\n properties:\n secretArn: ${exampleSecret.arn}\n policy: ${example.json}\nvariables:\n example:\n fn::invoke:\n function: aws:iam:getPolicyDocument\n arguments:\n statements:\n - sid: AWSKafkaResourcePolicy\n effect: Allow\n principals:\n - type: Service\n identifiers:\n - kafka.amazonaws.com\n actions:\n - secretsmanager:getSecretValue\n resources:\n - ${exampleSecret.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MSK SCRAM Secret Associations using the `id`. For example:\n\n```sh\n$ pulumi import aws:msk/scramSecretAssociation:ScramSecretAssociation example arn:aws:kafka:us-west-2:123456789012:cluster/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3\n```\n", "properties": { "clusterArn": { "type": "string", @@ -308072,6 +308664,51 @@ "type": "object" } }, + "aws:msk/singleScramSecretAssociation:SingleScramSecretAssociation": { + "description": "Associates a single SCRAM secret with a Managed Streaming for Kafka (MSK) cluster.\n\n## Example Usage\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.msk.SingleScramSecretAssociation(\"example\", {\n clusterArn: exampleAwsMskCluster.arn,\n secretArn: exampleAwsSecretsmanagerSecret.arn,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.msk.SingleScramSecretAssociation(\"example\",\n cluster_arn=example_aws_msk_cluster[\"arn\"],\n secret_arn=example_aws_secretsmanager_secret[\"arn\"])\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.Msk.SingleScramSecretAssociation(\"example\", new()\n {\n ClusterArn = exampleAwsMskCluster.Arn,\n SecretArn = exampleAwsSecretsmanagerSecret.Arn,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/msk\"\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 := msk.NewSingleScramSecretAssociation(ctx, \"example\", \u0026msk.SingleScramSecretAssociationArgs{\n\t\t\tClusterArn: pulumi.Any(exampleAwsMskCluster.Arn),\n\t\t\tSecretArn: pulumi.Any(exampleAwsSecretsmanagerSecret.Arn),\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.msk.SingleScramSecretAssociation;\nimport com.pulumi.aws.msk.SingleScramSecretAssociationArgs;\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 SingleScramSecretAssociation(\"example\", SingleScramSecretAssociationArgs.builder()\n .clusterArn(exampleAwsMskCluster.arn())\n .secretArn(exampleAwsSecretsmanagerSecret.arn())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:msk:SingleScramSecretAssociation\n properties:\n clusterArn: ${exampleAwsMskCluster.arn}\n secretArn: ${exampleAwsSecretsmanagerSecret.arn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import an MSK SCRAM Secret Association using the `cluster_arn` and `secret_arn`. For example:\n\n```sh\n$ pulumi import aws:msk/singleScramSecretAssociation:SingleScramSecretAssociation example arn:aws:kafka:us-west-2:123456789012:cluster/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3,arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456\n```\n", + "properties": { + "clusterArn": { + "type": "string", + "description": "Amazon Resource Name (ARN) of the MSK cluster.\n" + }, + "secretArn": { + "type": "string", + "description": "AWS Secrets Manager secret ARN.\n" + } + }, + "required": [ + "clusterArn", + "secretArn" + ], + "inputProperties": { + "clusterArn": { + "type": "string", + "description": "Amazon Resource Name (ARN) of the MSK cluster.\n" + }, + "secretArn": { + "type": "string", + "description": "AWS Secrets Manager secret ARN.\n" + } + }, + "requiredInputs": [ + "clusterArn", + "secretArn" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SingleScramSecretAssociation resources.\n", + "properties": { + "clusterArn": { + "type": "string", + "description": "Amazon Resource Name (ARN) of the MSK cluster.\n" + }, + "secretArn": { + "type": "string", + "description": "AWS Secrets Manager secret ARN.\n" + } + }, + "type": "object" + } + }, "aws:msk/vpcConnection:VpcConnection": { "description": "Resource for managing an AWS Managed Streaming for Kafka VPC Connection.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.msk.VpcConnection(\"test\", {\n authentication: \"SASL_IAM\",\n targetClusterArn: \"aws_msk_cluster.arn\",\n vpcId: testAwsVpc.id,\n clientSubnets: testAwsSubnet.map(__item =\u003e __item.id),\n securityGroups: [testAwsSecurityGroup.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.msk.VpcConnection(\"test\",\n authentication=\"SASL_IAM\",\n target_cluster_arn=\"aws_msk_cluster.arn\",\n vpc_id=test_aws_vpc[\"id\"],\n client_subnets=[__item[\"id\"] for __item in test_aws_subnet],\n security_groups=[test_aws_security_group[\"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 test = new Aws.Msk.VpcConnection(\"test\", new()\n {\n Authentication = \"SASL_IAM\",\n TargetClusterArn = \"aws_msk_cluster.arn\",\n VpcId = testAwsVpc.Id,\n ClientSubnets = testAwsSubnet.Select(__item =\u003e __item.Id).ToList(),\n SecurityGroups = new[]\n {\n testAwsSecurityGroup.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/msk\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nvar splat0 []interface{}\nfor _, val0 := range testAwsSubnet {\nsplat0 = append(splat0, val0.Id)\n}\n_, err := msk.NewVpcConnection(ctx, \"test\", \u0026msk.VpcConnectionArgs{\nAuthentication: pulumi.String(\"SASL_IAM\"),\nTargetClusterArn: pulumi.String(\"aws_msk_cluster.arn\"),\nVpcId: pulumi.Any(testAwsVpc.Id),\nClientSubnets: toPulumiArray(splat0),\nSecurityGroups: pulumi.StringArray{\ntestAwsSecurityGroup.Id,\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\nfunc toPulumiArray(arr []) pulumi.Array {\nvar pulumiArr pulumi.Array\nfor _, v := range arr {\npulumiArr = append(pulumiArr, pulumi.(v))\n}\nreturn pulumiArr\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.msk.VpcConnection;\nimport com.pulumi.aws.msk.VpcConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new VpcConnection(\"test\", VpcConnectionArgs.builder()\n .authentication(\"SASL_IAM\")\n .targetClusterArn(\"aws_msk_cluster.arn\")\n .vpcId(testAwsVpc.id())\n .clientSubnets(testAwsSubnet.stream().map(element -\u003e element.id()).collect(toList()))\n .securityGroups(testAwsSecurityGroup.id())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import MSK configurations using the configuration ARN. For example:\n\n```sh\n$ pulumi import aws:msk/vpcConnection:VpcConnection example arn:aws:kafka:eu-west-2:123456789012:vpc-connection/123456789012/example/38173259-79cd-4ee8-87f3-682ea6023f48-2\n```\n", "properties": { @@ -311555,7 +312192,7 @@ } }, "aws:networkfirewall/loggingConfiguration:LoggingConfiguration": { - "description": "Provides an AWS Network Firewall Logging Configuration Resource\n\n## Example Usage\n\n### Logging to S3\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n bucketName: exampleAwsS3Bucket.bucket,\n prefix: \"/example\",\n },\n logDestinationType: \"S3\",\n logType: \"FLOW\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"bucketName\": example_aws_s3_bucket[\"bucket\"],\n \"prefix\": \"/example\",\n },\n \"log_destination_type\": \"S3\",\n \"log_type\": \"FLOW\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"bucketName\", exampleAwsS3Bucket.Bucket },\n { \"prefix\", \"/example\" },\n },\n LogDestinationType = \"S3\",\n LogType = \"FLOW\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"bucketName\": pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t\t\t\t\"prefix\": pulumi.String(\"/example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"S3\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"FLOW\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.ofEntries(\n Map.entry(\"bucketName\", exampleAwsS3Bucket.bucket()),\n Map.entry(\"prefix\", \"/example\")\n ))\n .logDestinationType(\"S3\")\n .logType(\"FLOW\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n bucketName: ${exampleAwsS3Bucket.bucket}\n prefix: /example\n logDestinationType: S3\n logType: FLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging to CloudWatch\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n logGroup: exampleAwsCloudwatchLogGroup.name,\n },\n logDestinationType: \"CloudWatchLogs\",\n logType: \"ALERT\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"logGroup\": example_aws_cloudwatch_log_group[\"name\"],\n },\n \"log_destination_type\": \"CloudWatchLogs\",\n \"log_type\": \"ALERT\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"logGroup\", exampleAwsCloudwatchLogGroup.Name },\n },\n LogDestinationType = \"CloudWatchLogs\",\n LogType = \"ALERT\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"logGroup\": pulumi.Any(exampleAwsCloudwatchLogGroup.Name),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"CloudWatchLogs\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"ALERT\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.of(\"logGroup\", exampleAwsCloudwatchLogGroup.name()))\n .logDestinationType(\"CloudWatchLogs\")\n .logType(\"ALERT\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n logGroup: ${exampleAwsCloudwatchLogGroup.name}\n logDestinationType: CloudWatchLogs\n logType: ALERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging to Kinesis Data Firehose\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n deliveryStream: exampleAwsKinesisFirehoseDeliveryStream.name,\n },\n logDestinationType: \"KinesisDataFirehose\",\n logType: \"TLS\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"deliveryStream\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n },\n \"log_destination_type\": \"KinesisDataFirehose\",\n \"log_type\": \"TLS\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"deliveryStream\", exampleAwsKinesisFirehoseDeliveryStream.Name },\n },\n LogDestinationType = \"KinesisDataFirehose\",\n LogType = \"TLS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"deliveryStream\": pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"KinesisDataFirehose\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"TLS\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.of(\"deliveryStream\", exampleAwsKinesisFirehoseDeliveryStream.name()))\n .logDestinationType(\"KinesisDataFirehose\")\n .logType(\"TLS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n deliveryStream: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n logDestinationType: KinesisDataFirehose\n logType: TLS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Network Firewall Logging Configurations using the `firewall_arn`. For example:\n\n```sh\n$ pulumi import aws:networkfirewall/loggingConfiguration:LoggingConfiguration example arn:aws:network-firewall:us-west-1:123456789012:firewall/example\n```\n", + "description": "Provides an AWS Network Firewall Logging Configuration Resource\n\n## Example Usage\n\n### Logging to S3\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n bucketName: exampleAwsS3Bucket.bucket,\n prefix: \"example\",\n },\n logDestinationType: \"S3\",\n logType: \"FLOW\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"bucketName\": example_aws_s3_bucket[\"bucket\"],\n \"prefix\": \"example\",\n },\n \"log_destination_type\": \"S3\",\n \"log_type\": \"FLOW\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"bucketName\", exampleAwsS3Bucket.Bucket },\n { \"prefix\", \"example\" },\n },\n LogDestinationType = \"S3\",\n LogType = \"FLOW\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"bucketName\": pulumi.Any(exampleAwsS3Bucket.Bucket),\n\t\t\t\t\t\t\t\"prefix\": pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"S3\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"FLOW\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.ofEntries(\n Map.entry(\"bucketName\", exampleAwsS3Bucket.bucket()),\n Map.entry(\"prefix\", \"example\")\n ))\n .logDestinationType(\"S3\")\n .logType(\"FLOW\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n bucketName: ${exampleAwsS3Bucket.bucket}\n prefix: example\n logDestinationType: S3\n logType: FLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging to CloudWatch\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n logGroup: exampleAwsCloudwatchLogGroup.name,\n },\n logDestinationType: \"CloudWatchLogs\",\n logType: \"ALERT\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"logGroup\": example_aws_cloudwatch_log_group[\"name\"],\n },\n \"log_destination_type\": \"CloudWatchLogs\",\n \"log_type\": \"ALERT\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"logGroup\", exampleAwsCloudwatchLogGroup.Name },\n },\n LogDestinationType = \"CloudWatchLogs\",\n LogType = \"ALERT\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"logGroup\": pulumi.Any(exampleAwsCloudwatchLogGroup.Name),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"CloudWatchLogs\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"ALERT\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.of(\"logGroup\", exampleAwsCloudwatchLogGroup.name()))\n .logDestinationType(\"CloudWatchLogs\")\n .logType(\"ALERT\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n logGroup: ${exampleAwsCloudwatchLogGroup.name}\n logDestinationType: CloudWatchLogs\n logType: ALERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Logging to Kinesis Data Firehose\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.networkfirewall.LoggingConfiguration(\"example\", {\n firewallArn: exampleAwsNetworkfirewallFirewall.arn,\n loggingConfiguration: {\n logDestinationConfigs: [{\n logDestination: {\n deliveryStream: exampleAwsKinesisFirehoseDeliveryStream.name,\n },\n logDestinationType: \"KinesisDataFirehose\",\n logType: \"TLS\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.networkfirewall.LoggingConfiguration(\"example\",\n firewall_arn=example_aws_networkfirewall_firewall[\"arn\"],\n logging_configuration={\n \"log_destination_configs\": [{\n \"log_destination\": {\n \"deliveryStream\": example_aws_kinesis_firehose_delivery_stream[\"name\"],\n },\n \"log_destination_type\": \"KinesisDataFirehose\",\n \"log_type\": \"TLS\",\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 example = new Aws.NetworkFirewall.LoggingConfiguration(\"example\", new()\n {\n FirewallArn = exampleAwsNetworkfirewallFirewall.Arn,\n LoggingConfig = new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationArgs\n {\n LogDestinationConfigs = new[]\n {\n new Aws.NetworkFirewall.Inputs.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs\n {\n LogDestination = \n {\n { \"deliveryStream\", exampleAwsKinesisFirehoseDeliveryStream.Name },\n },\n LogDestinationType = \"KinesisDataFirehose\",\n LogType = \"TLS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall\"\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 := networkfirewall.NewLoggingConfiguration(ctx, \"example\", \u0026networkfirewall.LoggingConfigurationArgs{\n\t\t\tFirewallArn: pulumi.Any(exampleAwsNetworkfirewallFirewall.Arn),\n\t\t\tLoggingConfiguration: \u0026networkfirewall.LoggingConfigurationLoggingConfigurationArgs{\n\t\t\t\tLogDestinationConfigs: networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArray{\n\t\t\t\t\t\u0026networkfirewall.LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs{\n\t\t\t\t\t\tLogDestination: pulumi.StringMap{\n\t\t\t\t\t\t\t\"deliveryStream\": pulumi.Any(exampleAwsKinesisFirehoseDeliveryStream.Name),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinationType: pulumi.String(\"KinesisDataFirehose\"),\n\t\t\t\t\t\tLogType: pulumi.String(\"TLS\"),\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.networkfirewall.LoggingConfiguration;\nimport com.pulumi.aws.networkfirewall.LoggingConfigurationArgs;\nimport com.pulumi.aws.networkfirewall.inputs.LoggingConfigurationLoggingConfigurationArgs;\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 LoggingConfiguration(\"example\", LoggingConfigurationArgs.builder()\n .firewallArn(exampleAwsNetworkfirewallFirewall.arn())\n .loggingConfiguration(LoggingConfigurationLoggingConfigurationArgs.builder()\n .logDestinationConfigs(LoggingConfigurationLoggingConfigurationLogDestinationConfigArgs.builder()\n .logDestination(Map.of(\"deliveryStream\", exampleAwsKinesisFirehoseDeliveryStream.name()))\n .logDestinationType(\"KinesisDataFirehose\")\n .logType(\"TLS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:networkfirewall:LoggingConfiguration\n properties:\n firewallArn: ${exampleAwsNetworkfirewallFirewall.arn}\n loggingConfiguration:\n logDestinationConfigs:\n - logDestination:\n deliveryStream: ${exampleAwsKinesisFirehoseDeliveryStream.name}\n logDestinationType: KinesisDataFirehose\n logType: TLS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Network Firewall Logging Configurations using the `firewall_arn`. For example:\n\n```sh\n$ pulumi import aws:networkfirewall/loggingConfiguration:LoggingConfiguration example arn:aws:network-firewall:us-west-1:123456789012:firewall/example\n```\n", "properties": { "firewallArn": { "type": "string", @@ -329385,7 +330022,7 @@ } }, "aws:rds/cluster:Cluster": { - "description": "Manages a [RDS Aurora Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Aurora.html) or a [RDS Multi-AZ DB Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html). To manage cluster instances that inherit configuration from the cluster (when not running the cluster in `serverless` engine mode), see the `aws.rds.ClusterInstance` resource. To manage non-Aurora DB instances (e.g., MySQL, PostgreSQL, SQL Server, etc.), see the `aws.rds.Instance` resource.\n\nFor information on the difference between the available Aurora MySQL engines see [Comparison between Aurora MySQL 1 and Aurora MySQL 2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Updates.20180206.html) in the Amazon RDS User Guide.\n\nChanges to an RDS Cluster can occur when you manually change a parameter, such as `port`, and are reflected in the next maintenance window. Because of this, this provider may report a difference in its planning phase because a modification has not yet taken place. You can use the `apply_immediately` flag to instruct the service to apply the change immediately (see documentation below).\n\n\u003e **Note:** Multi-AZ DB clusters are supported only for the MySQL and PostgreSQL DB engines.\n\n\u003e **Note:** `ca_certificate_identifier` is only supported for Multi-AZ DB clusters.\n\n\u003e **Note:** using `apply_immediately` can result in a brief downtime as the server reboots. See the AWS Docs on [RDS Maintenance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html) for more information.\n\n\u003e **Note:** All arguments including the username and password will be stored in the raw state as plain-text.\n\u003e **NOTE on RDS Clusters and RDS Cluster Role Associations:** Pulumi provides both a standalone RDS Cluster Role Association - (an association between an RDS Cluster and a single IAM Role) and an RDS Cluster resource with `iam_roles` attributes. Use one resource or the other to associate IAM Roles and RDS Clusters. Not doing so will cause a conflict of associations and will result in the association being overwritten.\n\n## Example Usage\n\n### Aurora MySQL 2.x (MySQL 5.7)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.rds.Cluster(\"default\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n engine: aws.rds.EngineType.AuroraMysql,\n engineVersion: \"5.7.mysql_aurora.2.03.2\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.rds.Cluster(\"default\",\n cluster_identifier=\"aurora-cluster-demo\",\n engine=aws.rds.EngineType.AURORA_MYSQL,\n engine_version=\"5.7.mysql_aurora.2.03.2\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 @default = new Aws.Rds.Cluster(\"default\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n Engine = Aws.Rds.EngineType.AuroraMysql,\n EngineVersion = \"5.7.mysql_aurora.2.03.2\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"default\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraMysql),\n\t\t\tEngineVersion: pulumi.String(\"5.7.mysql_aurora.2.03.2\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .engine(\"aurora-mysql\")\n .engineVersion(\"5.7.mysql_aurora.2.03.2\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n engine: aurora-mysql\n engineVersion: 5.7.mysql_aurora.2.03.2\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Aurora MySQL 1.x (MySQL 5.6)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.rds.Cluster(\"default\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.rds.Cluster(\"default\",\n cluster_identifier=\"aurora-cluster-demo\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 @default = new Aws.Rds.Cluster(\"default\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"default\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Aurora with PostgreSQL engine\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst postgresql = new aws.rds.Cluster(\"postgresql\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n engine: aws.rds.EngineType.AuroraPostgresql,\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\npostgresql = aws.rds.Cluster(\"postgresql\",\n cluster_identifier=\"aurora-cluster-demo\",\n engine=aws.rds.EngineType.AURORA_POSTGRESQL,\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 postgresql = new Aws.Rds.Cluster(\"postgresql\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n Engine = Aws.Rds.EngineType.AuroraPostgresql,\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"postgresql\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraPostgresql),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 postgresql = new Cluster(\"postgresql\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .engine(\"aurora-postgresql\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresql:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n engine: aurora-postgresql\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Multi-AZ Cluster\n\n\u003e More information about RDS Multi-AZ Clusters can be found in the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html).\n\nTo create a Multi-AZ RDS cluster, you must additionally specify the `engine`, `storage_type`, `allocated_storage`, `iops` and `db_cluster_instance_class` attributes.\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.rds.Cluster(\"example\", {\n clusterIdentifier: \"example\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n engine: \"mysql\",\n dbClusterInstanceClass: \"db.r6gd.xlarge\",\n storageType: \"io1\",\n allocatedStorage: 100,\n iops: 1000,\n masterUsername: \"test\",\n masterPassword: \"mustbeeightcharaters\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.Cluster(\"example\",\n cluster_identifier=\"example\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n engine=\"mysql\",\n db_cluster_instance_class=\"db.r6gd.xlarge\",\n storage_type=\"io1\",\n allocated_storage=100,\n iops=1000,\n master_username=\"test\",\n master_password=\"mustbeeightcharaters\")\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.Rds.Cluster(\"example\", new()\n {\n ClusterIdentifier = \"example\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n Engine = \"mysql\",\n DbClusterInstanceClass = \"db.r6gd.xlarge\",\n StorageType = \"io1\",\n AllocatedStorage = 100,\n Iops = 1000,\n MasterUsername = \"test\",\n MasterPassword = \"mustbeeightcharaters\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tEngine: pulumi.String(\"mysql\"),\n\t\t\tDbClusterInstanceClass: pulumi.String(\"db.r6gd.xlarge\"),\n\t\t\tStorageType: pulumi.String(\"io1\"),\n\t\t\tAllocatedStorage: pulumi.Int(100),\n\t\t\tIops: pulumi.Int(1000),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterPassword: pulumi.String(\"mustbeeightcharaters\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 Cluster(\"example\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .engine(\"mysql\")\n .dbClusterInstanceClass(\"db.r6gd.xlarge\")\n .storageType(\"io1\")\n .allocatedStorage(100)\n .iops(1000)\n .masterUsername(\"test\")\n .masterPassword(\"mustbeeightcharaters\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n engine: mysql\n dbClusterInstanceClass: db.r6gd.xlarge\n storageType: io1\n allocatedStorage: 100\n iops: 1000\n masterUsername: test\n masterPassword: mustbeeightcharaters\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Serverless v2 Cluster\n\n\u003e More information about RDS Serverless v2 Clusters can be found in the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html).\n\n\u003e **Note:** Unlike Serverless v1, in Serverless v2 the `storage_encrypted` value is set to `false` by default.\nThis is because Serverless v1 uses the `serverless` `engine_mode`, but Serverless v2 uses the `provisioned` `engine_mode`.\n\nTo create a Serverless v2 RDS cluster, you must additionally specify the `engine_mode` and `serverlessv2_scaling_configuration` attributes. An `aws.rds.ClusterInstance` resource must also be added to the cluster with the `instance_class` attribute specified.\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.rds.Cluster(\"example\", {\n clusterIdentifier: \"example\",\n engine: aws.rds.EngineType.AuroraPostgresql,\n engineMode: aws.rds.EngineMode.Provisioned,\n engineVersion: \"13.6\",\n databaseName: \"test\",\n masterUsername: \"test\",\n masterPassword: \"must_be_eight_characters\",\n storageEncrypted: true,\n serverlessv2ScalingConfiguration: {\n maxCapacity: 1,\n minCapacity: 0.5,\n },\n});\nconst exampleClusterInstance = new aws.rds.ClusterInstance(\"example\", {\n clusterIdentifier: example.id,\n instanceClass: \"db.serverless\",\n engine: example.engine,\n engineVersion: example.engineVersion,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.Cluster(\"example\",\n cluster_identifier=\"example\",\n engine=aws.rds.EngineType.AURORA_POSTGRESQL,\n engine_mode=aws.rds.EngineMode.PROVISIONED,\n engine_version=\"13.6\",\n database_name=\"test\",\n master_username=\"test\",\n master_password=\"must_be_eight_characters\",\n storage_encrypted=True,\n serverlessv2_scaling_configuration={\n \"max_capacity\": 1,\n \"min_capacity\": 0.5,\n })\nexample_cluster_instance = aws.rds.ClusterInstance(\"example\",\n cluster_identifier=example.id,\n instance_class=\"db.serverless\",\n engine=example.engine,\n engine_version=example.engine_version)\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.Rds.Cluster(\"example\", new()\n {\n ClusterIdentifier = \"example\",\n Engine = Aws.Rds.EngineType.AuroraPostgresql,\n EngineMode = Aws.Rds.EngineMode.Provisioned,\n EngineVersion = \"13.6\",\n DatabaseName = \"test\",\n MasterUsername = \"test\",\n MasterPassword = \"must_be_eight_characters\",\n StorageEncrypted = true,\n Serverlessv2ScalingConfiguration = new Aws.Rds.Inputs.ClusterServerlessv2ScalingConfigurationArgs\n {\n MaxCapacity = 1,\n MinCapacity = 0.5,\n },\n });\n\n var exampleClusterInstance = new Aws.Rds.ClusterInstance(\"example\", new()\n {\n ClusterIdentifier = example.Id,\n InstanceClass = \"db.serverless\",\n Engine = example.Engine,\n EngineVersion = example.EngineVersion,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraPostgresql),\n\t\t\tEngineMode: pulumi.String(rds.EngineModeProvisioned),\n\t\t\tEngineVersion: pulumi.String(\"13.6\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tStorageEncrypted: pulumi.Bool(true),\n\t\t\tServerlessv2ScalingConfiguration: \u0026rds.ClusterServerlessv2ScalingConfigurationArgs{\n\t\t\t\tMaxCapacity: pulumi.Float64(1),\n\t\t\t\tMinCapacity: pulumi.Float64(0.5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewClusterInstance(ctx, \"example\", \u0026rds.ClusterInstanceArgs{\n\t\t\tClusterIdentifier: example.ID(),\n\t\t\tInstanceClass: pulumi.String(\"db.serverless\"),\n\t\t\tEngine: example.Engine,\n\t\t\tEngineVersion: example.EngineVersion,\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport com.pulumi.aws.rds.inputs.ClusterServerlessv2ScalingConfigurationArgs;\nimport com.pulumi.aws.rds.ClusterInstance;\nimport com.pulumi.aws.rds.ClusterInstanceArgs;\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 Cluster(\"example\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .engine(\"aurora-postgresql\")\n .engineMode(\"provisioned\")\n .engineVersion(\"13.6\")\n .databaseName(\"test\")\n .masterUsername(\"test\")\n .masterPassword(\"must_be_eight_characters\")\n .storageEncrypted(true)\n .serverlessv2ScalingConfiguration(ClusterServerlessv2ScalingConfigurationArgs.builder()\n .maxCapacity(1)\n .minCapacity(0.5)\n .build())\n .build());\n\n var exampleClusterInstance = new ClusterInstance(\"exampleClusterInstance\", ClusterInstanceArgs.builder()\n .clusterIdentifier(example.id())\n .instanceClass(\"db.serverless\")\n .engine(example.engine())\n .engineVersion(example.engineVersion())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n engine: aurora-postgresql\n engineMode: provisioned\n engineVersion: '13.6'\n databaseName: test\n masterUsername: test\n masterPassword: must_be_eight_characters\n storageEncrypted: true\n serverlessv2ScalingConfiguration:\n maxCapacity: 1\n minCapacity: 0.5\n exampleClusterInstance:\n type: aws:rds:ClusterInstance\n name: example\n properties:\n clusterIdentifier: ${example.id}\n instanceClass: db.serverless\n engine: ${example.engine}\n engineVersion: ${example.engineVersion}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS/Aurora Managed Master Passwords via Secrets Manager, default KMS Key\n\n\u003e More information about RDS/Aurora Aurora integrates with Secrets Manager to manage master user passwords for your DB clusters can be found in the [RDS User Guide](https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/) and [Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html).\n\nYou can specify the `manage_master_user_password` attribute to enable managing the master password with Secrets Manager. You can also update an existing cluster to use Secrets Manager by specify the `manage_master_user_password` attribute and removing the `master_password` attribute (removal is required).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.rds.Cluster(\"test\", {\n clusterIdentifier: \"example\",\n databaseName: \"test\",\n manageMasterUserPassword: true,\n masterUsername: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.rds.Cluster(\"test\",\n cluster_identifier=\"example\",\n database_name=\"test\",\n manage_master_user_password=True,\n master_username=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Rds.Cluster(\"test\", new()\n {\n ClusterIdentifier = \"example\",\n DatabaseName = \"test\",\n ManageMasterUserPassword = true,\n MasterUsername = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"test\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tManageMasterUserPassword: pulumi.Bool(true),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Cluster(\"test\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .databaseName(\"test\")\n .manageMasterUserPassword(true)\n .masterUsername(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n databaseName: test\n manageMasterUserPassword: true\n masterUsername: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS/Aurora Managed Master Passwords via Secrets Manager, specific KMS Key\n\n\u003e More information about RDS/Aurora Aurora integrates with Secrets Manager to manage master user passwords for your DB clusters can be found in the [RDS User Guide](https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/) and [Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html).\n\nYou can specify the `master_user_secret_kms_key_id` attribute to specify a specific KMS Key.\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.kms.Key(\"example\", {description: \"Example KMS Key\"});\nconst test = new aws.rds.Cluster(\"test\", {\n clusterIdentifier: \"example\",\n databaseName: \"test\",\n manageMasterUserPassword: true,\n masterUsername: \"test\",\n masterUserSecretKmsKeyId: example.keyId,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kms.Key(\"example\", description=\"Example KMS Key\")\ntest = aws.rds.Cluster(\"test\",\n cluster_identifier=\"example\",\n database_name=\"test\",\n manage_master_user_password=True,\n master_username=\"test\",\n master_user_secret_kms_key_id=example.key_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"Example KMS Key\",\n });\n\n var test = new Aws.Rds.Cluster(\"test\", new()\n {\n ClusterIdentifier = \"example\",\n DatabaseName = \"test\",\n ManageMasterUserPassword = true,\n MasterUsername = \"test\",\n MasterUserSecretKmsKeyId = example.KeyId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"Example KMS Key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCluster(ctx, \"test\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tManageMasterUserPassword: pulumi.Bool(true),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterUserSecretKmsKeyId: example.KeyId,\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.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 Key(\"example\", KeyArgs.builder()\n .description(\"Example KMS Key\")\n .build());\n\n var test = new Cluster(\"test\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .databaseName(\"test\")\n .manageMasterUserPassword(true)\n .masterUsername(\"test\")\n .masterUserSecretKmsKeyId(example.keyId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: Example KMS Key\n test:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n databaseName: test\n manageMasterUserPassword: true\n masterUsername: test\n masterUserSecretKmsKeyId: ${example.keyId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Global Cluster Restored From Snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.rds.getClusterSnapshot({\n dbClusterIdentifier: \"example-original-cluster\",\n mostRecent: true,\n});\nconst exampleCluster = new aws.rds.Cluster(\"example\", {\n engine: aws.rds.EngineType.Aurora,\n engineVersion: \"5.6.mysql_aurora.1.22.4\",\n clusterIdentifier: \"example\",\n snapshotIdentifier: example.then(example =\u003e example.id),\n});\nconst exampleGlobalCluster = new aws.rds.GlobalCluster(\"example\", {\n globalClusterIdentifier: \"example\",\n sourceDbClusterIdentifier: exampleCluster.arn,\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.get_cluster_snapshot(db_cluster_identifier=\"example-original-cluster\",\n most_recent=True)\nexample_cluster = aws.rds.Cluster(\"example\",\n engine=aws.rds.EngineType.AURORA,\n engine_version=\"5.6.mysql_aurora.1.22.4\",\n cluster_identifier=\"example\",\n snapshot_identifier=example.id)\nexample_global_cluster = aws.rds.GlobalCluster(\"example\",\n global_cluster_identifier=\"example\",\n source_db_cluster_identifier=example_cluster.arn,\n force_destroy=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 example = Aws.Rds.GetClusterSnapshot.Invoke(new()\n {\n DbClusterIdentifier = \"example-original-cluster\",\n MostRecent = true,\n });\n\n var exampleCluster = new Aws.Rds.Cluster(\"example\", new()\n {\n Engine = Aws.Rds.EngineType.Aurora,\n EngineVersion = \"5.6.mysql_aurora.1.22.4\",\n ClusterIdentifier = \"example\",\n SnapshotIdentifier = example.Apply(getClusterSnapshotResult =\u003e getClusterSnapshotResult.Id),\n });\n\n var exampleGlobalCluster = new Aws.Rds.GlobalCluster(\"example\", new()\n {\n GlobalClusterIdentifier = \"example\",\n SourceDbClusterIdentifier = exampleCluster.Arn,\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.LookupClusterSnapshot(ctx, \u0026rds.LookupClusterSnapshotArgs{\n\t\t\tDbClusterIdentifier: pulumi.StringRef(\"example-original-cluster\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleCluster, err := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tEngine: pulumi.String(rds.EngineTypeAurora),\n\t\t\tEngineVersion: pulumi.String(\"5.6.mysql_aurora.1.22.4\"),\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tSnapshotIdentifier: pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewGlobalCluster(ctx, \"example\", \u0026rds.GlobalClusterArgs{\n\t\t\tGlobalClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tSourceDbClusterIdentifier: exampleCluster.Arn,\n\t\t\tForceDestroy: 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.rds.RdsFunctions;\nimport com.pulumi.aws.rds.inputs.GetClusterSnapshotArgs;\nimport com.pulumi.aws.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport com.pulumi.aws.rds.GlobalCluster;\nimport com.pulumi.aws.rds.GlobalClusterArgs;\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 example = RdsFunctions.getClusterSnapshot(GetClusterSnapshotArgs.builder()\n .dbClusterIdentifier(\"example-original-cluster\")\n .mostRecent(true)\n .build());\n\n var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .engine(\"aurora\")\n .engineVersion(\"5.6.mysql_aurora.1.22.4\")\n .clusterIdentifier(\"example\")\n .snapshotIdentifier(example.applyValue(getClusterSnapshotResult -\u003e getClusterSnapshotResult.id()))\n .build());\n\n var exampleGlobalCluster = new GlobalCluster(\"exampleGlobalCluster\", GlobalClusterArgs.builder()\n .globalClusterIdentifier(\"example\")\n .sourceDbClusterIdentifier(exampleCluster.arn())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleCluster:\n type: aws:rds:Cluster\n name: example\n properties:\n engine: aurora\n engineVersion: 5.6.mysql_aurora.1.22.4\n clusterIdentifier: example\n snapshotIdentifier: ${example.id}\n exampleGlobalCluster:\n type: aws:rds:GlobalCluster\n name: example\n properties:\n globalClusterIdentifier: example\n sourceDbClusterIdentifier: ${exampleCluster.arn}\n forceDestroy: true\nvariables:\n example:\n fn::invoke:\n function: aws:rds:getClusterSnapshot\n arguments:\n dbClusterIdentifier: example-original-cluster\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import RDS Clusters using the `cluster_identifier`. For example:\n\n```sh\n$ pulumi import aws:rds/cluster:Cluster aurora_cluster aurora-prod-cluster\n```\n", + "description": "Manages a [RDS Aurora Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Aurora.html) or a [RDS Multi-AZ DB Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html). To manage cluster instances that inherit configuration from the cluster (when not running the cluster in `serverless` engine mode), see the `aws.rds.ClusterInstance` resource. To manage non-Aurora DB instances (e.g., MySQL, PostgreSQL, SQL Server, etc.), see the `aws.rds.Instance` resource.\n\nFor information on the difference between the available Aurora MySQL engines see [Comparison between Aurora MySQL 1 and Aurora MySQL 2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Updates.20180206.html) in the Amazon RDS User Guide.\n\nChanges to an RDS Cluster can occur when you manually change a parameter, such as `port`, and are reflected in the next maintenance window. Because of this, this provider may report a difference in its planning phase because a modification has not yet taken place. You can use the `apply_immediately` flag to instruct the service to apply the change immediately (see documentation below).\n\n\u003e **Note:** Multi-AZ DB clusters are supported only for the MySQL and PostgreSQL DB engines.\n\n\u003e **Note:** `ca_certificate_identifier` is only supported for Multi-AZ DB clusters.\n\n\u003e **Note:** using `apply_immediately` can result in a brief downtime as the server reboots. See the AWS Docs on [RDS Maintenance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html) for more information.\n\n\u003e **Note:** All arguments including the username and password will be stored in the raw state as plain-text.\n\u003e **NOTE on RDS Clusters and RDS Cluster Role Associations:** Pulumi provides both a standalone RDS Cluster Role Association - (an association between an RDS Cluster and a single IAM Role) and an RDS Cluster resource with `iam_roles` attributes. Use one resource or the other to associate IAM Roles and RDS Clusters. Not doing so will cause a conflict of associations and will result in the association being overwritten.\n\n## Example Usage\n\n### Aurora MySQL 2.x (MySQL 5.7)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.rds.Cluster(\"default\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n engine: aws.rds.EngineType.AuroraMysql,\n engineVersion: \"5.7.mysql_aurora.2.03.2\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.rds.Cluster(\"default\",\n cluster_identifier=\"aurora-cluster-demo\",\n engine=aws.rds.EngineType.AURORA_MYSQL,\n engine_version=\"5.7.mysql_aurora.2.03.2\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 @default = new Aws.Rds.Cluster(\"default\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n Engine = Aws.Rds.EngineType.AuroraMysql,\n EngineVersion = \"5.7.mysql_aurora.2.03.2\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"default\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraMysql),\n\t\t\tEngineVersion: pulumi.String(\"5.7.mysql_aurora.2.03.2\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .engine(\"aurora-mysql\")\n .engineVersion(\"5.7.mysql_aurora.2.03.2\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n engine: aurora-mysql\n engineVersion: 5.7.mysql_aurora.2.03.2\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Aurora MySQL 1.x (MySQL 5.6)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst _default = new aws.rds.Cluster(\"default\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ndefault = aws.rds.Cluster(\"default\",\n cluster_identifier=\"aurora-cluster-demo\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 @default = new Aws.Rds.Cluster(\"default\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"default\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Aurora with PostgreSQL engine\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst postgresql = new aws.rds.Cluster(\"postgresql\", {\n clusterIdentifier: \"aurora-cluster-demo\",\n engine: aws.rds.EngineType.AuroraPostgresql,\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n databaseName: \"mydb\",\n masterUsername: \"foo\",\n masterPassword: \"must_be_eight_characters\",\n backupRetentionPeriod: 5,\n preferredBackupWindow: \"07:00-09:00\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\npostgresql = aws.rds.Cluster(\"postgresql\",\n cluster_identifier=\"aurora-cluster-demo\",\n engine=aws.rds.EngineType.AURORA_POSTGRESQL,\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n database_name=\"mydb\",\n master_username=\"foo\",\n master_password=\"must_be_eight_characters\",\n backup_retention_period=5,\n preferred_backup_window=\"07:00-09:00\")\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 postgresql = new Aws.Rds.Cluster(\"postgresql\", new()\n {\n ClusterIdentifier = \"aurora-cluster-demo\",\n Engine = Aws.Rds.EngineType.AuroraPostgresql,\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n DatabaseName = \"mydb\",\n MasterUsername = \"foo\",\n MasterPassword = \"must_be_eight_characters\",\n BackupRetentionPeriod = 5,\n PreferredBackupWindow = \"07:00-09:00\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"postgresql\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"aurora-cluster-demo\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraPostgresql),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tMasterUsername: pulumi.String(\"foo\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tBackupRetentionPeriod: pulumi.Int(5),\n\t\t\tPreferredBackupWindow: pulumi.String(\"07:00-09:00\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 postgresql = new Cluster(\"postgresql\", ClusterArgs.builder()\n .clusterIdentifier(\"aurora-cluster-demo\")\n .engine(\"aurora-postgresql\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .databaseName(\"mydb\")\n .masterUsername(\"foo\")\n .masterPassword(\"must_be_eight_characters\")\n .backupRetentionPeriod(5)\n .preferredBackupWindow(\"07:00-09:00\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresql:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: aurora-cluster-demo\n engine: aurora-postgresql\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n databaseName: mydb\n masterUsername: foo\n masterPassword: must_be_eight_characters\n backupRetentionPeriod: 5\n preferredBackupWindow: 07:00-09:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Multi-AZ Cluster\n\n\u003e More information about RDS Multi-AZ Clusters can be found in the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html).\n\nTo create a Multi-AZ RDS cluster, you must additionally specify the `engine`, `storage_type`, `allocated_storage`, `iops` and `db_cluster_instance_class` attributes.\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.rds.Cluster(\"example\", {\n clusterIdentifier: \"example\",\n availabilityZones: [\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n engine: \"mysql\",\n dbClusterInstanceClass: \"db.r6gd.xlarge\",\n storageType: \"io1\",\n allocatedStorage: 100,\n iops: 1000,\n masterUsername: \"test\",\n masterPassword: \"mustbeeightcharaters\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.Cluster(\"example\",\n cluster_identifier=\"example\",\n availability_zones=[\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n ],\n engine=\"mysql\",\n db_cluster_instance_class=\"db.r6gd.xlarge\",\n storage_type=\"io1\",\n allocated_storage=100,\n iops=1000,\n master_username=\"test\",\n master_password=\"mustbeeightcharaters\")\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.Rds.Cluster(\"example\", new()\n {\n ClusterIdentifier = \"example\",\n AvailabilityZones = new[]\n {\n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\",\n },\n Engine = \"mysql\",\n DbClusterInstanceClass = \"db.r6gd.xlarge\",\n StorageType = \"io1\",\n AllocatedStorage = 100,\n Iops = 1000,\n MasterUsername = \"test\",\n MasterPassword = \"mustbeeightcharaters\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a\"),\n\t\t\t\tpulumi.String(\"us-west-2b\"),\n\t\t\t\tpulumi.String(\"us-west-2c\"),\n\t\t\t},\n\t\t\tEngine: pulumi.String(\"mysql\"),\n\t\t\tDbClusterInstanceClass: pulumi.String(\"db.r6gd.xlarge\"),\n\t\t\tStorageType: pulumi.String(\"io1\"),\n\t\t\tAllocatedStorage: pulumi.Int(100),\n\t\t\tIops: pulumi.Int(1000),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterPassword: pulumi.String(\"mustbeeightcharaters\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 Cluster(\"example\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .availabilityZones( \n \"us-west-2a\",\n \"us-west-2b\",\n \"us-west-2c\")\n .engine(\"mysql\")\n .dbClusterInstanceClass(\"db.r6gd.xlarge\")\n .storageType(\"io1\")\n .allocatedStorage(100)\n .iops(1000)\n .masterUsername(\"test\")\n .masterPassword(\"mustbeeightcharaters\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n availabilityZones:\n - us-west-2a\n - us-west-2b\n - us-west-2c\n engine: mysql\n dbClusterInstanceClass: db.r6gd.xlarge\n storageType: io1\n allocatedStorage: 100\n iops: 1000\n masterUsername: test\n masterPassword: mustbeeightcharaters\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS Serverless v2 Cluster\n\n\u003e More information about RDS Serverless v2 Clusters can be found in the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html).\n\n\u003e **Note:** Unlike Serverless v1, in Serverless v2 the `storage_encrypted` value is set to `false` by default.\nThis is because Serverless v1 uses the `serverless` `engine_mode`, but Serverless v2 uses the `provisioned` `engine_mode`.\n\nTo create a Serverless v2 RDS cluster, you must additionally specify the `engine_mode` and `serverlessv2_scaling_configuration` attributes. An `aws.rds.ClusterInstance` resource must also be added to the cluster with the `instance_class` attribute specified.\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.rds.Cluster(\"example\", {\n clusterIdentifier: \"example\",\n engine: aws.rds.EngineType.AuroraPostgresql,\n engineMode: aws.rds.EngineMode.Provisioned,\n engineVersion: \"13.6\",\n databaseName: \"test\",\n masterUsername: \"test\",\n masterPassword: \"must_be_eight_characters\",\n storageEncrypted: true,\n serverlessv2ScalingConfiguration: {\n maxCapacity: 1,\n minCapacity: 0,\n secondsUntilAutoPause: 3600,\n },\n});\nconst exampleClusterInstance = new aws.rds.ClusterInstance(\"example\", {\n clusterIdentifier: example.id,\n instanceClass: \"db.serverless\",\n engine: example.engine,\n engineVersion: example.engineVersion,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.Cluster(\"example\",\n cluster_identifier=\"example\",\n engine=aws.rds.EngineType.AURORA_POSTGRESQL,\n engine_mode=aws.rds.EngineMode.PROVISIONED,\n engine_version=\"13.6\",\n database_name=\"test\",\n master_username=\"test\",\n master_password=\"must_be_eight_characters\",\n storage_encrypted=True,\n serverlessv2_scaling_configuration={\n \"max_capacity\": 1,\n \"min_capacity\": 0,\n \"seconds_until_auto_pause\": 3600,\n })\nexample_cluster_instance = aws.rds.ClusterInstance(\"example\",\n cluster_identifier=example.id,\n instance_class=\"db.serverless\",\n engine=example.engine,\n engine_version=example.engine_version)\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.Rds.Cluster(\"example\", new()\n {\n ClusterIdentifier = \"example\",\n Engine = Aws.Rds.EngineType.AuroraPostgresql,\n EngineMode = Aws.Rds.EngineMode.Provisioned,\n EngineVersion = \"13.6\",\n DatabaseName = \"test\",\n MasterUsername = \"test\",\n MasterPassword = \"must_be_eight_characters\",\n StorageEncrypted = true,\n Serverlessv2ScalingConfiguration = new Aws.Rds.Inputs.ClusterServerlessv2ScalingConfigurationArgs\n {\n MaxCapacity = 1,\n MinCapacity = 0,\n SecondsUntilAutoPause = 3600,\n },\n });\n\n var exampleClusterInstance = new Aws.Rds.ClusterInstance(\"example\", new()\n {\n ClusterIdentifier = example.Id,\n InstanceClass = \"db.serverless\",\n Engine = example.Engine,\n EngineVersion = example.EngineVersion,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tEngine: pulumi.String(rds.EngineTypeAuroraPostgresql),\n\t\t\tEngineMode: pulumi.String(rds.EngineModeProvisioned),\n\t\t\tEngineVersion: pulumi.String(\"13.6\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterPassword: pulumi.String(\"must_be_eight_characters\"),\n\t\t\tStorageEncrypted: pulumi.Bool(true),\n\t\t\tServerlessv2ScalingConfiguration: \u0026rds.ClusterServerlessv2ScalingConfigurationArgs{\n\t\t\t\tMaxCapacity: pulumi.Float64(1),\n\t\t\t\tMinCapacity: pulumi.Float64(0),\n\t\t\t\tSecondsUntilAutoPause: pulumi.Int(3600),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewClusterInstance(ctx, \"example\", \u0026rds.ClusterInstanceArgs{\n\t\t\tClusterIdentifier: example.ID(),\n\t\t\tInstanceClass: pulumi.String(\"db.serverless\"),\n\t\t\tEngine: example.Engine,\n\t\t\tEngineVersion: example.EngineVersion,\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport com.pulumi.aws.rds.inputs.ClusterServerlessv2ScalingConfigurationArgs;\nimport com.pulumi.aws.rds.ClusterInstance;\nimport com.pulumi.aws.rds.ClusterInstanceArgs;\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 Cluster(\"example\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .engine(\"aurora-postgresql\")\n .engineMode(\"provisioned\")\n .engineVersion(\"13.6\")\n .databaseName(\"test\")\n .masterUsername(\"test\")\n .masterPassword(\"must_be_eight_characters\")\n .storageEncrypted(true)\n .serverlessv2ScalingConfiguration(ClusterServerlessv2ScalingConfigurationArgs.builder()\n .maxCapacity(1)\n .minCapacity(0)\n .secondsUntilAutoPause(3600)\n .build())\n .build());\n\n var exampleClusterInstance = new ClusterInstance(\"exampleClusterInstance\", ClusterInstanceArgs.builder()\n .clusterIdentifier(example.id())\n .instanceClass(\"db.serverless\")\n .engine(example.engine())\n .engineVersion(example.engineVersion())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n engine: aurora-postgresql\n engineMode: provisioned\n engineVersion: '13.6'\n databaseName: test\n masterUsername: test\n masterPassword: must_be_eight_characters\n storageEncrypted: true\n serverlessv2ScalingConfiguration:\n maxCapacity: 1\n minCapacity: 0\n secondsUntilAutoPause: 3600\n exampleClusterInstance:\n type: aws:rds:ClusterInstance\n name: example\n properties:\n clusterIdentifier: ${example.id}\n instanceClass: db.serverless\n engine: ${example.engine}\n engineVersion: ${example.engineVersion}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS/Aurora Managed Master Passwords via Secrets Manager, default KMS Key\n\n\u003e More information about RDS/Aurora Aurora integrates with Secrets Manager to manage master user passwords for your DB clusters can be found in the [RDS User Guide](https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/) and [Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html).\n\nYou can specify the `manage_master_user_password` attribute to enable managing the master password with Secrets Manager. You can also update an existing cluster to use Secrets Manager by specify the `manage_master_user_password` attribute and removing the `master_password` attribute (removal is required).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = new aws.rds.Cluster(\"test\", {\n clusterIdentifier: \"example\",\n databaseName: \"test\",\n manageMasterUserPassword: true,\n masterUsername: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.rds.Cluster(\"test\",\n cluster_identifier=\"example\",\n database_name=\"test\",\n manage_master_user_password=True,\n master_username=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Aws.Rds.Cluster(\"test\", new()\n {\n ClusterIdentifier = \"example\",\n DatabaseName = \"test\",\n ManageMasterUserPassword = true,\n MasterUsername = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewCluster(ctx, \"test\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tManageMasterUserPassword: pulumi.Bool(true),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\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.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Cluster(\"test\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .databaseName(\"test\")\n .manageMasterUserPassword(true)\n .masterUsername(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n databaseName: test\n manageMasterUserPassword: true\n masterUsername: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### RDS/Aurora Managed Master Passwords via Secrets Manager, specific KMS Key\n\n\u003e More information about RDS/Aurora Aurora integrates with Secrets Manager to manage master user passwords for your DB clusters can be found in the [RDS User Guide](https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/) and [Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html).\n\nYou can specify the `master_user_secret_kms_key_id` attribute to specify a specific KMS Key.\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.kms.Key(\"example\", {description: \"Example KMS Key\"});\nconst test = new aws.rds.Cluster(\"test\", {\n clusterIdentifier: \"example\",\n databaseName: \"test\",\n manageMasterUserPassword: true,\n masterUsername: \"test\",\n masterUserSecretKmsKeyId: example.keyId,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.kms.Key(\"example\", description=\"Example KMS Key\")\ntest = aws.rds.Cluster(\"test\",\n cluster_identifier=\"example\",\n database_name=\"test\",\n manage_master_user_password=True,\n master_username=\"test\",\n master_user_secret_kms_key_id=example.key_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.Kms.Key(\"example\", new()\n {\n Description = \"Example KMS Key\",\n });\n\n var test = new Aws.Rds.Cluster(\"test\", new()\n {\n ClusterIdentifier = \"example\",\n DatabaseName = \"test\",\n ManageMasterUserPassword = true,\n MasterUsername = \"test\",\n MasterUserSecretKmsKeyId = example.KeyId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms\"\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := kms.NewKey(ctx, \"example\", \u0026kms.KeyArgs{\n\t\t\tDescription: pulumi.String(\"Example KMS Key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewCluster(ctx, \"test\", \u0026rds.ClusterArgs{\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tDatabaseName: pulumi.String(\"test\"),\n\t\t\tManageMasterUserPassword: pulumi.Bool(true),\n\t\t\tMasterUsername: pulumi.String(\"test\"),\n\t\t\tMasterUserSecretKmsKeyId: example.KeyId,\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.kms.Key;\nimport com.pulumi.aws.kms.KeyArgs;\nimport com.pulumi.aws.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\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 Key(\"example\", KeyArgs.builder()\n .description(\"Example KMS Key\")\n .build());\n\n var test = new Cluster(\"test\", ClusterArgs.builder()\n .clusterIdentifier(\"example\")\n .databaseName(\"test\")\n .manageMasterUserPassword(true)\n .masterUsername(\"test\")\n .masterUserSecretKmsKeyId(example.keyId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:kms:Key\n properties:\n description: Example KMS Key\n test:\n type: aws:rds:Cluster\n properties:\n clusterIdentifier: example\n databaseName: test\n manageMasterUserPassword: true\n masterUsername: test\n masterUserSecretKmsKeyId: ${example.keyId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Global Cluster Restored From Snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.rds.getClusterSnapshot({\n dbClusterIdentifier: \"example-original-cluster\",\n mostRecent: true,\n});\nconst exampleCluster = new aws.rds.Cluster(\"example\", {\n engine: aws.rds.EngineType.Aurora,\n engineVersion: \"5.6.mysql_aurora.1.22.4\",\n clusterIdentifier: \"example\",\n snapshotIdentifier: example.then(example =\u003e example.id),\n});\nconst exampleGlobalCluster = new aws.rds.GlobalCluster(\"example\", {\n globalClusterIdentifier: \"example\",\n sourceDbClusterIdentifier: exampleCluster.arn,\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.get_cluster_snapshot(db_cluster_identifier=\"example-original-cluster\",\n most_recent=True)\nexample_cluster = aws.rds.Cluster(\"example\",\n engine=aws.rds.EngineType.AURORA,\n engine_version=\"5.6.mysql_aurora.1.22.4\",\n cluster_identifier=\"example\",\n snapshot_identifier=example.id)\nexample_global_cluster = aws.rds.GlobalCluster(\"example\",\n global_cluster_identifier=\"example\",\n source_db_cluster_identifier=example_cluster.arn,\n force_destroy=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 example = Aws.Rds.GetClusterSnapshot.Invoke(new()\n {\n DbClusterIdentifier = \"example-original-cluster\",\n MostRecent = true,\n });\n\n var exampleCluster = new Aws.Rds.Cluster(\"example\", new()\n {\n Engine = Aws.Rds.EngineType.Aurora,\n EngineVersion = \"5.6.mysql_aurora.1.22.4\",\n ClusterIdentifier = \"example\",\n SnapshotIdentifier = example.Apply(getClusterSnapshotResult =\u003e getClusterSnapshotResult.Id),\n });\n\n var exampleGlobalCluster = new Aws.Rds.GlobalCluster(\"example\", new()\n {\n GlobalClusterIdentifier = \"example\",\n SourceDbClusterIdentifier = exampleCluster.Arn,\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.LookupClusterSnapshot(ctx, \u0026rds.LookupClusterSnapshotArgs{\n\t\t\tDbClusterIdentifier: pulumi.StringRef(\"example-original-cluster\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleCluster, err := rds.NewCluster(ctx, \"example\", \u0026rds.ClusterArgs{\n\t\t\tEngine: pulumi.String(rds.EngineTypeAurora),\n\t\t\tEngineVersion: pulumi.String(\"5.6.mysql_aurora.1.22.4\"),\n\t\t\tClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tSnapshotIdentifier: pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rds.NewGlobalCluster(ctx, \"example\", \u0026rds.GlobalClusterArgs{\n\t\t\tGlobalClusterIdentifier: pulumi.String(\"example\"),\n\t\t\tSourceDbClusterIdentifier: exampleCluster.Arn,\n\t\t\tForceDestroy: 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.rds.RdsFunctions;\nimport com.pulumi.aws.rds.inputs.GetClusterSnapshotArgs;\nimport com.pulumi.aws.rds.Cluster;\nimport com.pulumi.aws.rds.ClusterArgs;\nimport com.pulumi.aws.rds.GlobalCluster;\nimport com.pulumi.aws.rds.GlobalClusterArgs;\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 example = RdsFunctions.getClusterSnapshot(GetClusterSnapshotArgs.builder()\n .dbClusterIdentifier(\"example-original-cluster\")\n .mostRecent(true)\n .build());\n\n var exampleCluster = new Cluster(\"exampleCluster\", ClusterArgs.builder()\n .engine(\"aurora\")\n .engineVersion(\"5.6.mysql_aurora.1.22.4\")\n .clusterIdentifier(\"example\")\n .snapshotIdentifier(example.applyValue(getClusterSnapshotResult -\u003e getClusterSnapshotResult.id()))\n .build());\n\n var exampleGlobalCluster = new GlobalCluster(\"exampleGlobalCluster\", GlobalClusterArgs.builder()\n .globalClusterIdentifier(\"example\")\n .sourceDbClusterIdentifier(exampleCluster.arn())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleCluster:\n type: aws:rds:Cluster\n name: example\n properties:\n engine: aurora\n engineVersion: 5.6.mysql_aurora.1.22.4\n clusterIdentifier: example\n snapshotIdentifier: ${example.id}\n exampleGlobalCluster:\n type: aws:rds:GlobalCluster\n name: example\n properties:\n globalClusterIdentifier: example\n sourceDbClusterIdentifier: ${exampleCluster.arn}\n forceDestroy: true\nvariables:\n example:\n fn::invoke:\n function: aws:rds:getClusterSnapshot\n arguments:\n dbClusterIdentifier: example-original-cluster\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import RDS Clusters using the `cluster_identifier`. For example:\n\n```sh\n$ pulumi import aws:rds/cluster:Cluster aurora_cluster aurora-prod-cluster\n```\n", "properties": { "allocatedStorage": { "type": "integer", @@ -332162,11 +332799,11 @@ "properties": { "arn": { "type": "string", - "description": "RDS Global Cluster Amazon Resource Name (ARN)\n" + "description": "RDS Global Cluster Amazon Resource Name (ARN).\n" }, "databaseName": { "type": "string", - "description": "Name for an automatically created database on cluster creation.\n" + "description": "Name for an automatically created database on cluster creation. Pulumi will only perform drift detection if a configuration value is provided.\n" }, "deletionProtection": { "type": "boolean", @@ -332208,7 +332845,7 @@ }, "globalClusterResourceId": { "type": "string", - "description": "AWS Region-unique, immutable identifier for the global database cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed\n" + "description": "AWS Region-unique, immutable identifier for the global database cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed.\n" }, "sourceDbClusterIdentifier": { "type": "string", @@ -332217,10 +332854,26 @@ "storageEncrypted": { "type": "boolean", "description": "Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to the DB cluster. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." } }, "required": [ "arn", + "databaseName", "endpoint", "engine", "engineLifecycleSupport", @@ -332230,12 +332883,13 @@ "globalClusterMembers", "globalClusterResourceId", "sourceDbClusterIdentifier", - "storageEncrypted" + "storageEncrypted", + "tagsAll" ], "inputProperties": { "databaseName": { "type": "string", - "description": "Name for an automatically created database on cluster creation.\n", + "description": "Name for an automatically created database on cluster creation. Pulumi will only perform drift detection if a configuration value is provided.\n", "willReplaceOnChanges": true }, "deletionProtection": { @@ -332273,6 +332927,13 @@ "type": "boolean", "description": "Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.\n", "willReplaceOnChanges": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to the DB cluster. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" } }, "requiredInputs": [ @@ -332283,11 +332944,11 @@ "properties": { "arn": { "type": "string", - "description": "RDS Global Cluster Amazon Resource Name (ARN)\n" + "description": "RDS Global Cluster Amazon Resource Name (ARN).\n" }, "databaseName": { "type": "string", - "description": "Name for an automatically created database on cluster creation.\n", + "description": "Name for an automatically created database on cluster creation. Pulumi will only perform drift detection if a configuration value is provided.\n", "willReplaceOnChanges": true }, "deletionProtection": { @@ -332332,7 +332993,7 @@ }, "globalClusterResourceId": { "type": "string", - "description": "AWS Region-unique, immutable identifier for the global database cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed\n" + "description": "AWS Region-unique, immutable identifier for the global database cluster. This identifier is found in AWS CloudTrail log entries whenever the AWS KMS key for the DB cluster is accessed.\n" }, "sourceDbClusterIdentifier": { "type": "string", @@ -332343,6 +333004,21 @@ "type": "boolean", "description": "Specifies whether the DB cluster is encrypted. The default is `false` unless `source_db_cluster_identifier` is specified and encrypted. The provider will only perform drift detection if a configuration value is provided.\n", "willReplaceOnChanges": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags to assign to the DB cluster. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." } }, "type": "object" @@ -332421,7 +333097,7 @@ }, "dbSubnetGroupName": { "type": "string", - "description": "Name of DB subnet group. DB instance will\nbe created in the VPC associated with the DB subnet group. If unspecified, will\nbe created in the `default` VPC, or in EC2 Classic, if available. When working\nwith read replicas, it should be specified only if the source database\nspecifies an instance in another AWS Region. See [DBSubnetGroupName in API\naction CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)\nfor additional read replica constraints.\n" + "description": "Name of DB subnet group.\nDB instance will be created in the VPC associated with the DB subnet group.\nIf unspecified, will be created in the `default` Subnet Group.\nWhen working with read replicas created in the same region, defaults to the Subnet Group Name of the source DB.\nWhen working with read replicas created in a different region, defaults to the `default` Subnet Group.\nSee [DBSubnetGroupName in API action CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) for additional read replica constraints.\n" }, "dedicatedLogVolume": { "type": "boolean", @@ -332628,7 +333304,7 @@ }, "replicateSourceDb": { "type": "string", - "description": "Specifies that this resource is a Replicate\ndatabase, and to use this value as the source database. This correlates to the\n`identifier` of another Amazon RDS Database to replicate (if replicating within\na single region) or ARN of the Amazon RDS Database to replicate (if replicating\ncross-region). Note that if you are\ncreating a cross-region replica of an encrypted database you will also need to\nspecify a `kms_key_id`. See [DB Instance Replication][instance-replication] and [Working with\nPostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)\nfor more information on using Replication.\n" + "description": "Specifies that this resource is a Replica database, and to use this value as the source database.\nIf replicating an Amazon RDS Database Instance in the same region, use the `identifier` of the source DB, unless also specifying the `db_subnet_group_name`.\nIf specifying the `db_subnet_group_name` in the same region, use the `arn` of the source DB.\nIf replicating an Instance in a different region, use the `arn` of the source DB.\nNote that if you are creating a cross-region replica of an encrypted database you will also need to specify a `kms_key_id`.\nSee [DB Instance Replication][instance-replication] and [Working with PostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html) for more information on using Replication.\n" }, "resourceId": { "type": "string", @@ -332636,7 +333312,7 @@ }, "restoreToPointInTime": { "$ref": "#/types/aws:rds/InstanceRestoreToPointInTime:InstanceRestoreToPointInTime", - "description": "A configuration block for restoring a DB instance to an arbitrary point in time. Requires the `identifier` argument to be set with the name of the new DB instance to be created. See Restore To Point In Time below for details.\n" + "description": "A configuration block for restoring a DB instance to an arbitrary point in time.\nRequires the `identifier` argument to be set with the name of the new DB instance to be created.\nSee Restore To Point In Time below for details.\n" }, "s3Import": { "$ref": "#/types/aws:rds/InstanceS3Import:InstanceS3Import", @@ -332648,7 +333324,7 @@ }, "snapshotIdentifier": { "type": "string", - "description": "Specifies whether or not to create this\ndatabase from a snapshot. This correlates to the snapshot ID you'd find in the\nRDS console, e.g: rds:production-2015-06-26-06-05.\n" + "description": "Specifies whether or not to create this database from a snapshot.\nThis corresponds to the snapshot ID you'd find in the RDS console, e.g: rds:production-2015-06-26-06-05.\n" }, "status": { "type": "string", @@ -332687,7 +333363,7 @@ }, "upgradeStorageConfig": { "type": "boolean", - "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + "description": "Whether to upgrade the storage file system configuration on the read replica.\nCan only be set with `replicate_source_db`.\n" }, "username": { "type": "string", @@ -332820,7 +333496,7 @@ }, "dbSubnetGroupName": { "type": "string", - "description": "Name of DB subnet group. DB instance will\nbe created in the VPC associated with the DB subnet group. If unspecified, will\nbe created in the `default` VPC, or in EC2 Classic, if available. When working\nwith read replicas, it should be specified only if the source database\nspecifies an instance in another AWS Region. See [DBSubnetGroupName in API\naction CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)\nfor additional read replica constraints.\n" + "description": "Name of DB subnet group.\nDB instance will be created in the VPC associated with the DB subnet group.\nIf unspecified, will be created in the `default` Subnet Group.\nWhen working with read replicas created in the same region, defaults to the Subnet Group Name of the source DB.\nWhen working with read replicas created in a different region, defaults to the `default` Subnet Group.\nSee [DBSubnetGroupName in API action CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) for additional read replica constraints.\n" }, "dedicatedLogVolume": { "type": "boolean", @@ -333004,11 +333680,11 @@ }, "replicateSourceDb": { "type": "string", - "description": "Specifies that this resource is a Replicate\ndatabase, and to use this value as the source database. This correlates to the\n`identifier` of another Amazon RDS Database to replicate (if replicating within\na single region) or ARN of the Amazon RDS Database to replicate (if replicating\ncross-region). Note that if you are\ncreating a cross-region replica of an encrypted database you will also need to\nspecify a `kms_key_id`. See [DB Instance Replication][instance-replication] and [Working with\nPostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)\nfor more information on using Replication.\n" + "description": "Specifies that this resource is a Replica database, and to use this value as the source database.\nIf replicating an Amazon RDS Database Instance in the same region, use the `identifier` of the source DB, unless also specifying the `db_subnet_group_name`.\nIf specifying the `db_subnet_group_name` in the same region, use the `arn` of the source DB.\nIf replicating an Instance in a different region, use the `arn` of the source DB.\nNote that if you are creating a cross-region replica of an encrypted database you will also need to specify a `kms_key_id`.\nSee [DB Instance Replication][instance-replication] and [Working with PostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html) for more information on using Replication.\n" }, "restoreToPointInTime": { "$ref": "#/types/aws:rds/InstanceRestoreToPointInTime:InstanceRestoreToPointInTime", - "description": "A configuration block for restoring a DB instance to an arbitrary point in time. Requires the `identifier` argument to be set with the name of the new DB instance to be created. See Restore To Point In Time below for details.\n", + "description": "A configuration block for restoring a DB instance to an arbitrary point in time.\nRequires the `identifier` argument to be set with the name of the new DB instance to be created.\nSee Restore To Point In Time below for details.\n", "willReplaceOnChanges": true }, "s3Import": { @@ -333021,7 +333697,7 @@ }, "snapshotIdentifier": { "type": "string", - "description": "Specifies whether or not to create this\ndatabase from a snapshot. This correlates to the snapshot ID you'd find in the\nRDS console, e.g: rds:production-2015-06-26-06-05.\n", + "description": "Specifies whether or not to create this database from a snapshot.\nThis corresponds to the snapshot ID you'd find in the RDS console, e.g: rds:production-2015-06-26-06-05.\n", "willReplaceOnChanges": true }, "storageEncrypted": { @@ -333060,7 +333736,7 @@ }, "upgradeStorageConfig": { "type": "boolean", - "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + "description": "Whether to upgrade the storage file system configuration on the read replica.\nCan only be set with `replicate_source_db`.\n" }, "username": { "type": "string", @@ -333156,7 +333832,7 @@ }, "dbSubnetGroupName": { "type": "string", - "description": "Name of DB subnet group. DB instance will\nbe created in the VPC associated with the DB subnet group. If unspecified, will\nbe created in the `default` VPC, or in EC2 Classic, if available. When working\nwith read replicas, it should be specified only if the source database\nspecifies an instance in another AWS Region. See [DBSubnetGroupName in API\naction CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)\nfor additional read replica constraints.\n" + "description": "Name of DB subnet group.\nDB instance will be created in the VPC associated with the DB subnet group.\nIf unspecified, will be created in the `default` Subnet Group.\nWhen working with read replicas created in the same region, defaults to the Subnet Group Name of the source DB.\nWhen working with read replicas created in a different region, defaults to the `default` Subnet Group.\nSee [DBSubnetGroupName in API action CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) for additional read replica constraints.\n" }, "dedicatedLogVolume": { "type": "boolean", @@ -333376,7 +334052,7 @@ }, "replicateSourceDb": { "type": "string", - "description": "Specifies that this resource is a Replicate\ndatabase, and to use this value as the source database. This correlates to the\n`identifier` of another Amazon RDS Database to replicate (if replicating within\na single region) or ARN of the Amazon RDS Database to replicate (if replicating\ncross-region). Note that if you are\ncreating a cross-region replica of an encrypted database you will also need to\nspecify a `kms_key_id`. See [DB Instance Replication][instance-replication] and [Working with\nPostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)\nfor more information on using Replication.\n" + "description": "Specifies that this resource is a Replica database, and to use this value as the source database.\nIf replicating an Amazon RDS Database Instance in the same region, use the `identifier` of the source DB, unless also specifying the `db_subnet_group_name`.\nIf specifying the `db_subnet_group_name` in the same region, use the `arn` of the source DB.\nIf replicating an Instance in a different region, use the `arn` of the source DB.\nNote that if you are creating a cross-region replica of an encrypted database you will also need to specify a `kms_key_id`.\nSee [DB Instance Replication][instance-replication] and [Working with PostgreSQL and MySQL Read Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html) for more information on using Replication.\n" }, "resourceId": { "type": "string", @@ -333384,7 +334060,7 @@ }, "restoreToPointInTime": { "$ref": "#/types/aws:rds/InstanceRestoreToPointInTime:InstanceRestoreToPointInTime", - "description": "A configuration block for restoring a DB instance to an arbitrary point in time. Requires the `identifier` argument to be set with the name of the new DB instance to be created. See Restore To Point In Time below for details.\n", + "description": "A configuration block for restoring a DB instance to an arbitrary point in time.\nRequires the `identifier` argument to be set with the name of the new DB instance to be created.\nSee Restore To Point In Time below for details.\n", "willReplaceOnChanges": true }, "s3Import": { @@ -333397,7 +334073,7 @@ }, "snapshotIdentifier": { "type": "string", - "description": "Specifies whether or not to create this\ndatabase from a snapshot. This correlates to the snapshot ID you'd find in the\nRDS console, e.g: rds:production-2015-06-26-06-05.\n", + "description": "Specifies whether or not to create this database from a snapshot.\nThis corresponds to the snapshot ID you'd find in the RDS console, e.g: rds:production-2015-06-26-06-05.\n", "willReplaceOnChanges": true }, "status": { @@ -333448,7 +334124,7 @@ }, "upgradeStorageConfig": { "type": "boolean", - "description": "Whether to upgrade the storage file system configuration on the read replica. Can only be set with `replicate_source_db`.\n" + "description": "Whether to upgrade the storage file system configuration on the read replica.\nCan only be set with `replicate_source_db`.\n" }, "username": { "type": "string", @@ -334081,7 +334757,7 @@ } }, "aws:rds/proxy:Proxy": { - "description": "Provides an RDS DB proxy resource. For additional information, see the [RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html).\n\n## Example Usage\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.rds.Proxy(\"example\", {\n name: \"example\",\n debugLogging: false,\n engineFamily: \"MYSQL\",\n idleClientTimeout: 1800,\n requireTls: true,\n roleArn: exampleAwsIamRole.arn,\n vpcSecurityGroupIds: [exampleAwsSecurityGroup.id],\n vpcSubnetIds: [exampleAwsSubnet.id],\n auths: [{\n authScheme: \"SECRETS\",\n description: \"example\",\n iamAuth: \"DISABLED\",\n secretArn: exampleAwsSecretsmanagerSecret.arn,\n }],\n tags: {\n Name: \"example\",\n Key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.rds.Proxy(\"example\",\n name=\"example\",\n debug_logging=False,\n engine_family=\"MYSQL\",\n idle_client_timeout=1800,\n require_tls=True,\n role_arn=example_aws_iam_role[\"arn\"],\n vpc_security_group_ids=[example_aws_security_group[\"id\"]],\n vpc_subnet_ids=[example_aws_subnet[\"id\"]],\n auths=[{\n \"auth_scheme\": \"SECRETS\",\n \"description\": \"example\",\n \"iam_auth\": \"DISABLED\",\n \"secret_arn\": example_aws_secretsmanager_secret[\"arn\"],\n }],\n tags={\n \"Name\": \"example\",\n \"Key\": \"value\",\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.Rds.Proxy(\"example\", new()\n {\n Name = \"example\",\n DebugLogging = false,\n EngineFamily = \"MYSQL\",\n IdleClientTimeout = 1800,\n RequireTls = true,\n RoleArn = exampleAwsIamRole.Arn,\n VpcSecurityGroupIds = new[]\n {\n exampleAwsSecurityGroup.Id,\n },\n VpcSubnetIds = new[]\n {\n exampleAwsSubnet.Id,\n },\n Auths = new[]\n {\n new Aws.Rds.Inputs.ProxyAuthArgs\n {\n AuthScheme = \"SECRETS\",\n Description = \"example\",\n IamAuth = \"DISABLED\",\n SecretArn = exampleAwsSecretsmanagerSecret.Arn,\n },\n },\n Tags = \n {\n { \"Name\", \"example\" },\n { \"Key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/rds\"\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 := rds.NewProxy(ctx, \"example\", \u0026rds.ProxyArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tDebugLogging: pulumi.Bool(false),\n\t\t\tEngineFamily: pulumi.String(\"MYSQL\"),\n\t\t\tIdleClientTimeout: pulumi.Int(1800),\n\t\t\tRequireTls: pulumi.Bool(true),\n\t\t\tRoleArn: pulumi.Any(exampleAwsIamRole.Arn),\n\t\t\tVpcSecurityGroupIds: pulumi.StringArray{\n\t\t\t\texampleAwsSecurityGroup.Id,\n\t\t\t},\n\t\t\tVpcSubnetIds: pulumi.StringArray{\n\t\t\t\texampleAwsSubnet.Id,\n\t\t\t},\n\t\t\tAuths: rds.ProxyAuthArray{\n\t\t\t\t\u0026rds.ProxyAuthArgs{\n\t\t\t\t\tAuthScheme: pulumi.String(\"SECRETS\"),\n\t\t\t\t\tDescription: pulumi.String(\"example\"),\n\t\t\t\t\tIamAuth: pulumi.String(\"DISABLED\"),\n\t\t\t\t\tSecretArn: pulumi.Any(exampleAwsSecretsmanagerSecret.Arn),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Name\": pulumi.String(\"example\"),\n\t\t\t\t\"Key\": pulumi.String(\"value\"),\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.rds.Proxy;\nimport com.pulumi.aws.rds.ProxyArgs;\nimport com.pulumi.aws.rds.inputs.ProxyAuthArgs;\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 Proxy(\"example\", ProxyArgs.builder()\n .name(\"example\")\n .debugLogging(false)\n .engineFamily(\"MYSQL\")\n .idleClientTimeout(1800)\n .requireTls(true)\n .roleArn(exampleAwsIamRole.arn())\n .vpcSecurityGroupIds(exampleAwsSecurityGroup.id())\n .vpcSubnetIds(exampleAwsSubnet.id())\n .auths(ProxyAuthArgs.builder()\n .authScheme(\"SECRETS\")\n .description(\"example\")\n .iamAuth(\"DISABLED\")\n .secretArn(exampleAwsSecretsmanagerSecret.arn())\n .build())\n .tags(Map.ofEntries(\n Map.entry(\"Name\", \"example\"),\n Map.entry(\"Key\", \"value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:rds:Proxy\n properties:\n name: example\n debugLogging: false\n engineFamily: MYSQL\n idleClientTimeout: 1800\n requireTls: true\n roleArn: ${exampleAwsIamRole.arn}\n vpcSecurityGroupIds:\n - ${exampleAwsSecurityGroup.id}\n vpcSubnetIds:\n - ${exampleAwsSubnet.id}\n auths:\n - authScheme: SECRETS\n description: example\n iamAuth: DISABLED\n secretArn: ${exampleAwsSecretsmanagerSecret.arn}\n tags:\n Name: example\n Key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import DB proxies using the `name`. For example:\n\n```sh\n$ pulumi import aws:rds/proxy:Proxy example example\n```\n", + "description": "\n\n## Import\n\nUsing `pulumi import`, import DB proxies using the `name`. For example:\n\n```sh\n$ pulumi import aws:rds/proxy:Proxy example example\n```\n", "properties": { "arn": { "type": "string", @@ -341641,7 +342317,7 @@ } }, "aws:route53/profilesAssociation:ProfilesAssociation": { - "description": "Resource for managing an AWS Route 53 Profiles Association.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:route53:ProfilesProfile\n properties:\n name: example\n exampleVpc:\n type: aws:ec2:Vpc\n name: example\n properties:\n cidr: 10.0.0.0/16\n exampleProfilesAssociation:\n type: aws:route53:ProfilesAssociation\n name: example\n properties:\n name: example\n profileId: ${example.id}\n resourceId: ${exampleVpc.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route 53 Profiles Association using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:route53/profilesAssociation:ProfilesAssociation example rpa-id-12345678\n```\n", + "description": "Resource for managing an AWS Route 53 Profiles Association.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: aws:route53:ProfilesProfile\n properties:\n name: example\n exampleVpc:\n type: aws:ec2:Vpc\n name: example\n properties:\n cidr: 10.0.0.0/16\n exampleProfilesAssociation:\n type: aws:route53:ProfilesAssociation\n name: example\n properties:\n name: example\n profileId: ${example.id}\n resourceId: ${exampleVpc.id}\n tags:\n Environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route 53 Profiles Association using the `example_id_arg`. For example:\n\n```sh\n$ pulumi import aws:route53/profilesAssociation:ProfilesAssociation example rpa-id-12345678\n```\n", "properties": { "arn": { "type": "string" @@ -341663,7 +342339,7 @@ }, "status": { "type": "string", - "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n" + "description": "Status of the Profile Association.\n" }, "statusMessage": { "type": "string", @@ -341673,13 +342349,15 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "tagsAll": { "type": "object", "additionalProperties": { "type": "string" }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, "timeouts": { @@ -341713,7 +342391,8 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "timeouts": { "$ref": "#/types/aws:route53/ProfilesAssociationTimeouts:ProfilesAssociationTimeouts" @@ -341746,7 +342425,7 @@ }, "status": { "type": "string", - "description": "Status of the Profile Association. See the [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html) for valid values.\n" + "description": "Status of the Profile Association.\n" }, "statusMessage": { "type": "string", @@ -341756,13 +342435,15 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "tagsAll": { "type": "object", "additionalProperties": { "type": "string" }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", "deprecationMessage": "Please use `tags` instead." }, "timeouts": { @@ -341773,7 +342454,7 @@ } }, "aws:route53/profilesProfile:ProfilesProfile": { - "description": "Resource for managing an AWS Route 53 Profile.\n\n## Example Usage\n\n### Empty Profile\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.route53.ProfilesProfile(\"example\", {name: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.route53.ProfilesProfile(\"example\", name=\"example\")\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.Route53.ProfilesProfile(\"example\", new()\n {\n Name = \"example\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := route53.NewProfilesProfile(ctx, \"example\", \u0026route53.ProfilesProfileArgs{\n\t\t\tName: pulumi.String(\"example\"),\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.route53.ProfilesProfile;\nimport com.pulumi.aws.route53.ProfilesProfileArgs;\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 ProfilesProfile(\"example\", ProfilesProfileArgs.builder()\n .name(\"example\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:route53:ProfilesProfile\n properties:\n name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route 53 Profiles Profile using the `example`. For example:\n\n```sh\n$ pulumi import aws:route53/profilesProfile:ProfilesProfile example rp-12345678\n```\n", + "description": "Resource for managing an AWS Route 53 Profile.\n\n## Example Usage\n\n### Empty Profile\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.route53.ProfilesProfile(\"example\", {\n name: \"example\",\n tags: {\n Environment: \"dev\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.route53.ProfilesProfile(\"example\",\n name=\"example\",\n tags={\n \"Environment\": \"dev\",\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.Route53.ProfilesProfile(\"example\", new()\n {\n Name = \"example\",\n Tags = \n {\n { \"Environment\", \"dev\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53\"\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 := route53.NewProfilesProfile(ctx, \"example\", \u0026route53.ProfilesProfileArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"Environment\": pulumi.String(\"dev\"),\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.route53.ProfilesProfile;\nimport com.pulumi.aws.route53.ProfilesProfileArgs;\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 ProfilesProfile(\"example\", ProfilesProfileArgs.builder()\n .name(\"example\")\n .tags(Map.of(\"Environment\", \"dev\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:route53:ProfilesProfile\n properties:\n name: example\n tags:\n Environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Route 53 Profiles Profile using the `example`. For example:\n\n```sh\n$ pulumi import aws:route53/profilesProfile:ProfilesProfile example rp-12345678\n```\n", "properties": { "arn": { "type": "string", @@ -341788,11 +342469,11 @@ }, "shareStatus": { "type": "string", - "description": "Share status of the Profile. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n" + "description": "Share status of the Profile.\n" }, "status": { "type": "string", - "description": "Status of the Profile. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n" + "description": "Status of the Profile.\n" }, "statusMessage": { "type": "string", @@ -341802,7 +342483,8 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "tagsAll": { "type": "object", @@ -341834,7 +342516,8 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "timeouts": { "$ref": "#/types/aws:route53/ProfilesProfileTimeouts:ProfilesProfileTimeouts" @@ -341856,11 +342539,11 @@ }, "shareStatus": { "type": "string", - "description": "Share status of the Profile. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n" + "description": "Share status of the Profile.\n" }, "status": { "type": "string", - "description": "Status of the Profile. Valid values [AWS docs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53profiles_Profile.html)\n" + "description": "Status of the Profile.\n" }, "statusMessage": { "type": "string", @@ -341870,7 +342553,8 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "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" }, "tagsAll": { "type": "object", @@ -354268,7 +354952,7 @@ }, "platformIdentifier": { "type": "string", - "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, or `notebook-al2-v2`, depending on which version of Amazon Linux you require.\n" + "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, `notebook-al2-v2`, or `notebook-al2-v3`, depending on which version of Amazon Linux you require.\n" }, "roleArn": { "type": "string", @@ -354372,7 +355056,7 @@ }, "platformIdentifier": { "type": "string", - "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, or `notebook-al2-v2`, depending on which version of Amazon Linux you require.\n", + "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, `notebook-al2-v2`, or `notebook-al2-v3`, depending on which version of Amazon Linux you require.\n", "willReplaceOnChanges": true }, "roleArn": { @@ -354470,7 +355154,7 @@ }, "platformIdentifier": { "type": "string", - "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, or `notebook-al2-v2`, depending on which version of Amazon Linux you require.\n", + "description": "The platform identifier of the notebook instance runtime environment. This value can be either `notebook-al1-v1`, `notebook-al2-v1`, `notebook-al2-v2`, or `notebook-al2-v3`, depending on which version of Amazon Linux you require.\n", "willReplaceOnChanges": true }, "roleArn": { @@ -358391,12 +359075,28 @@ "name": { "type": "string", "description": "Name of the application. The name must be unique within an AWS region.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Application. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." } }, "required": [ "applicationTag", "arn", - "name" + "name", + "tagsAll" ], "inputProperties": { "description": { @@ -358406,6 +359106,13 @@ "name": { "type": "string", "description": "Name of the application. The name must be unique within an AWS region.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Application. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" } }, "stateInputs": { @@ -358429,6 +359136,169 @@ "name": { "type": "string", "description": "Name of the application. The name must be unique within an AWS region.\n\nThe following arguments are optional:\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Application. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + } + }, + "type": "object" + } + }, + "aws:servicecatalog/appregistryAttributeGroup:AppregistryAttributeGroup": { + "description": "Resource for managing an AWS Service Catalog AppRegistry Attribute Group.\n\n## Example Usage\n\n### Basic Usage\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.servicecatalog.AppregistryAttributeGroup(\"example\", {\n name: \"example\",\n description: \"example description\",\n attributes: JSON.stringify({\n app: \"exampleapp\",\n group: \"examplegroup\",\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.servicecatalog.AppregistryAttributeGroup(\"example\",\n name=\"example\",\n description=\"example description\",\n attributes=json.dumps({\n \"app\": \"exampleapp\",\n \"group\": \"examplegroup\",\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ServiceCatalog.AppregistryAttributeGroup(\"example\", new()\n {\n Name = \"example\",\n Description = \"example description\",\n Attributes = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"app\"] = \"exampleapp\",\n [\"group\"] = \"examplegroup\",\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/servicecatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"app\": \"exampleapp\",\n\t\t\t\"group\": \"examplegroup\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = servicecatalog.NewAppregistryAttributeGroup(ctx, \"example\", \u0026servicecatalog.AppregistryAttributeGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tAttributes: pulumi.String(json0),\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.servicecatalog.AppregistryAttributeGroup;\nimport com.pulumi.aws.servicecatalog.AppregistryAttributeGroupArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 AppregistryAttributeGroup(\"example\", AppregistryAttributeGroupArgs.builder()\n .name(\"example\")\n .description(\"example description\")\n .attributes(serializeJson(\n jsonObject(\n jsonProperty(\"app\", \"exampleapp\"),\n jsonProperty(\"group\", \"examplegroup\")\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:servicecatalog:AppregistryAttributeGroup\n properties:\n name: example\n description: example description\n attributes:\n fn::toJSON:\n app: exampleapp\n group: examplegroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Service Catalog AppRegistry Attribute Group using the `id`. For example:\n\n```sh\n$ pulumi import aws:servicecatalog/appregistryAttributeGroup:AppregistryAttributeGroup example 1234567890abcfedhijk09876s\n```\n", + "properties": { + "arn": { + "type": "string", + "description": "ARN of the Attribute Group.\n" + }, + "attributes": { + "type": "string", + "description": "A JSON string of nested key-value pairs that represents the attributes of the group.\n\nThe following arguments are optional:\n" + }, + "description": { + "type": "string", + "description": "Description of the Attribute Group.\n" + }, + "name": { + "type": "string", + "description": "Name of the Attribute Group.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Attribute Group. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + } + }, + "required": [ + "arn", + "attributes", + "name", + "tagsAll" + ], + "inputProperties": { + "attributes": { + "type": "string", + "description": "A JSON string of nested key-value pairs that represents the attributes of the group.\n\nThe following arguments are optional:\n" + }, + "description": { + "type": "string", + "description": "Description of the Attribute Group.\n" + }, + "name": { + "type": "string", + "description": "Name of the Attribute Group.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Attribute Group. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + } + }, + "requiredInputs": [ + "attributes" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering AppregistryAttributeGroup resources.\n", + "properties": { + "arn": { + "type": "string", + "description": "ARN of the Attribute Group.\n" + }, + "attributes": { + "type": "string", + "description": "A JSON string of nested key-value pairs that represents the attributes of the group.\n\nThe following arguments are optional:\n" + }, + "description": { + "type": "string", + "description": "Description of the Attribute Group.\n" + }, + "name": { + "type": "string", + "description": "Name of the Attribute Group.\n" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Attribute Group. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n" + }, + "tagsAll": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.\n", + "deprecationMessage": "Please use `tags` instead." + } + }, + "type": "object" + } + }, + "aws:servicecatalog/appregistryAttributeGroupAssociation:AppregistryAttributeGroupAssociation": { + "description": "Resource for managing an AWS Service Catalog AppRegistry Attribute Group Association.\n\n## Example Usage\n\n### Basic Usage\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.servicecatalog.AppregistryApplication(\"example\", {name: \"example-app\"});\nconst exampleAppregistryAttributeGroup = new aws.servicecatalog.AppregistryAttributeGroup(\"example\", {\n name: \"example\",\n description: \"example description\",\n attributes: JSON.stringify({\n app: \"exampleapp\",\n group: \"examplegroup\",\n }),\n});\nconst exampleAppregistryAttributeGroupAssociation = new aws.servicecatalog.AppregistryAttributeGroupAssociation(\"example\", {\n applicationId: example.id,\n attributeGroupId: exampleAppregistryAttributeGroup.id,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_aws as aws\n\nexample = aws.servicecatalog.AppregistryApplication(\"example\", name=\"example-app\")\nexample_appregistry_attribute_group = aws.servicecatalog.AppregistryAttributeGroup(\"example\",\n name=\"example\",\n description=\"example description\",\n attributes=json.dumps({\n \"app\": \"exampleapp\",\n \"group\": \"examplegroup\",\n }))\nexample_appregistry_attribute_group_association = aws.servicecatalog.AppregistryAttributeGroupAssociation(\"example\",\n application_id=example.id,\n attribute_group_id=example_appregistry_attribute_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Aws.ServiceCatalog.AppregistryApplication(\"example\", new()\n {\n Name = \"example-app\",\n });\n\n var exampleAppregistryAttributeGroup = new Aws.ServiceCatalog.AppregistryAttributeGroup(\"example\", new()\n {\n Name = \"example\",\n Description = \"example description\",\n Attributes = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"app\"] = \"exampleapp\",\n [\"group\"] = \"examplegroup\",\n }),\n });\n\n var exampleAppregistryAttributeGroupAssociation = new Aws.ServiceCatalog.AppregistryAttributeGroupAssociation(\"example\", new()\n {\n ApplicationId = example.Id,\n AttributeGroupId = exampleAppregistryAttributeGroup.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/servicecatalog\"\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 := servicecatalog.NewAppregistryApplication(ctx, \"example\", \u0026servicecatalog.AppregistryApplicationArgs{\n\t\t\tName: pulumi.String(\"example-app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"app\": \"exampleapp\",\n\t\t\t\"group\": \"examplegroup\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texampleAppregistryAttributeGroup, err := servicecatalog.NewAppregistryAttributeGroup(ctx, \"example\", \u0026servicecatalog.AppregistryAttributeGroupArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tDescription: pulumi.String(\"example description\"),\n\t\t\tAttributes: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicecatalog.NewAppregistryAttributeGroupAssociation(ctx, \"example\", \u0026servicecatalog.AppregistryAttributeGroupAssociationArgs{\n\t\t\tApplicationId: example.ID(),\n\t\t\tAttributeGroupId: exampleAppregistryAttributeGroup.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.servicecatalog.AppregistryApplication;\nimport com.pulumi.aws.servicecatalog.AppregistryApplicationArgs;\nimport com.pulumi.aws.servicecatalog.AppregistryAttributeGroup;\nimport com.pulumi.aws.servicecatalog.AppregistryAttributeGroupArgs;\nimport com.pulumi.aws.servicecatalog.AppregistryAttributeGroupAssociation;\nimport com.pulumi.aws.servicecatalog.AppregistryAttributeGroupAssociationArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 AppregistryApplication(\"example\", AppregistryApplicationArgs.builder()\n .name(\"example-app\")\n .build());\n\n var exampleAppregistryAttributeGroup = new AppregistryAttributeGroup(\"exampleAppregistryAttributeGroup\", AppregistryAttributeGroupArgs.builder()\n .name(\"example\")\n .description(\"example description\")\n .attributes(serializeJson(\n jsonObject(\n jsonProperty(\"app\", \"exampleapp\"),\n jsonProperty(\"group\", \"examplegroup\")\n )))\n .build());\n\n var exampleAppregistryAttributeGroupAssociation = new AppregistryAttributeGroupAssociation(\"exampleAppregistryAttributeGroupAssociation\", AppregistryAttributeGroupAssociationArgs.builder()\n .applicationId(example.id())\n .attributeGroupId(exampleAppregistryAttributeGroup.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:servicecatalog:AppregistryApplication\n properties:\n name: example-app\n exampleAppregistryAttributeGroup:\n type: aws:servicecatalog:AppregistryAttributeGroup\n name: example\n properties:\n name: example\n description: example description\n attributes:\n fn::toJSON:\n app: exampleapp\n group: examplegroup\n exampleAppregistryAttributeGroupAssociation:\n type: aws:servicecatalog:AppregistryAttributeGroupAssociation\n name: example\n properties:\n applicationId: ${example.id}\n attributeGroupId: ${exampleAppregistryAttributeGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import Service Catalog AppRegistry Attribute Group Association using `application_id` and `attribute_group_id` arguments separated by a comma (`,`). For example:\n\n```sh\n$ pulumi import aws:servicecatalog/appregistryAttributeGroupAssociation:AppregistryAttributeGroupAssociation example 12456778723424sdffsdfsdq34,12234t3564dsfsdf34asff4ww3\n```\n", + "properties": { + "applicationId": { + "type": "string", + "description": "ID of the application.\n" + }, + "attributeGroupId": { + "type": "string", + "description": "ID of the attribute group to associate with the application.\n" + } + }, + "required": [ + "applicationId", + "attributeGroupId" + ], + "inputProperties": { + "applicationId": { + "type": "string", + "description": "ID of the application.\n" + }, + "attributeGroupId": { + "type": "string", + "description": "ID of the attribute group to associate with the application.\n" + } + }, + "requiredInputs": [ + "applicationId", + "attributeGroupId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering AppregistryAttributeGroupAssociation resources.\n", + "properties": { + "applicationId": { + "type": "string", + "description": "ID of the application.\n" + }, + "attributeGroupId": { + "type": "string", + "description": "ID of the attribute group to associate with the application.\n" } }, "type": "object" @@ -362040,7 +362910,7 @@ } }, "aws:sesv2/configurationSet:ConfigurationSet": { - "description": "Resource for managing an AWS SESv2 (Simple Email V2) Configuration Set.\n\n## Example Usage\n\n### Basic Usage\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.sesv2.ConfigurationSet(\"example\", {\n configurationSetName: \"example\",\n deliveryOptions: {\n tlsPolicy: \"REQUIRE\",\n },\n reputationOptions: {\n reputationMetricsEnabled: false,\n },\n sendingOptions: {\n sendingEnabled: true,\n },\n suppressionOptions: {\n suppressedReasons: [\n \"BOUNCE\",\n \"COMPLAINT\",\n ],\n },\n trackingOptions: {\n customRedirectDomain: \"example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sesv2.ConfigurationSet(\"example\",\n configuration_set_name=\"example\",\n delivery_options={\n \"tls_policy\": \"REQUIRE\",\n },\n reputation_options={\n \"reputation_metrics_enabled\": False,\n },\n sending_options={\n \"sending_enabled\": True,\n },\n suppression_options={\n \"suppressed_reasons\": [\n \"BOUNCE\",\n \"COMPLAINT\",\n ],\n },\n tracking_options={\n \"custom_redirect_domain\": \"example.com\",\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.SesV2.ConfigurationSet(\"example\", new()\n {\n ConfigurationSetName = \"example\",\n DeliveryOptions = new Aws.SesV2.Inputs.ConfigurationSetDeliveryOptionsArgs\n {\n TlsPolicy = \"REQUIRE\",\n },\n ReputationOptions = new Aws.SesV2.Inputs.ConfigurationSetReputationOptionsArgs\n {\n ReputationMetricsEnabled = false,\n },\n SendingOptions = new Aws.SesV2.Inputs.ConfigurationSetSendingOptionsArgs\n {\n SendingEnabled = true,\n },\n SuppressionOptions = new Aws.SesV2.Inputs.ConfigurationSetSuppressionOptionsArgs\n {\n SuppressedReasons = new[]\n {\n \"BOUNCE\",\n \"COMPLAINT\",\n },\n },\n TrackingOptions = new Aws.SesV2.Inputs.ConfigurationSetTrackingOptionsArgs\n {\n CustomRedirectDomain = \"example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sesv2\"\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 := sesv2.NewConfigurationSet(ctx, \"example\", \u0026sesv2.ConfigurationSetArgs{\n\t\t\tConfigurationSetName: pulumi.String(\"example\"),\n\t\t\tDeliveryOptions: \u0026sesv2.ConfigurationSetDeliveryOptionsArgs{\n\t\t\t\tTlsPolicy: pulumi.String(\"REQUIRE\"),\n\t\t\t},\n\t\t\tReputationOptions: \u0026sesv2.ConfigurationSetReputationOptionsArgs{\n\t\t\t\tReputationMetricsEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSendingOptions: \u0026sesv2.ConfigurationSetSendingOptionsArgs{\n\t\t\t\tSendingEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tSuppressionOptions: \u0026sesv2.ConfigurationSetSuppressionOptionsArgs{\n\t\t\t\tSuppressedReasons: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"BOUNCE\"),\n\t\t\t\t\tpulumi.String(\"COMPLAINT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTrackingOptions: \u0026sesv2.ConfigurationSetTrackingOptionsArgs{\n\t\t\t\tCustomRedirectDomain: pulumi.String(\"example.com\"),\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.sesv2.ConfigurationSet;\nimport com.pulumi.aws.sesv2.ConfigurationSetArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetDeliveryOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetReputationOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetSendingOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetSuppressionOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetTrackingOptionsArgs;\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 ConfigurationSet(\"example\", ConfigurationSetArgs.builder()\n .configurationSetName(\"example\")\n .deliveryOptions(ConfigurationSetDeliveryOptionsArgs.builder()\n .tlsPolicy(\"REQUIRE\")\n .build())\n .reputationOptions(ConfigurationSetReputationOptionsArgs.builder()\n .reputationMetricsEnabled(false)\n .build())\n .sendingOptions(ConfigurationSetSendingOptionsArgs.builder()\n .sendingEnabled(true)\n .build())\n .suppressionOptions(ConfigurationSetSuppressionOptionsArgs.builder()\n .suppressedReasons( \n \"BOUNCE\",\n \"COMPLAINT\")\n .build())\n .trackingOptions(ConfigurationSetTrackingOptionsArgs.builder()\n .customRedirectDomain(\"example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sesv2:ConfigurationSet\n properties:\n configurationSetName: example\n deliveryOptions:\n tlsPolicy: REQUIRE\n reputationOptions:\n reputationMetricsEnabled: false\n sendingOptions:\n sendingEnabled: true\n suppressionOptions:\n suppressedReasons:\n - BOUNCE\n - COMPLAINT\n trackingOptions:\n customRedirectDomain: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SESv2 (Simple Email V2) Configuration Set using the `configuration_set_name`. For example:\n\n```sh\n$ pulumi import aws:sesv2/configurationSet:ConfigurationSet example example\n```\n", + "description": "Resource for managing an AWS SESv2 (Simple Email V2) Configuration Set.\n\n## Example Usage\n\n### Basic Usage\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.sesv2.ConfigurationSet(\"example\", {\n configurationSetName: \"example\",\n deliveryOptions: {\n maxDeliverySeconds: 300,\n tlsPolicy: \"REQUIRE\",\n },\n reputationOptions: {\n reputationMetricsEnabled: false,\n },\n sendingOptions: {\n sendingEnabled: true,\n },\n suppressionOptions: {\n suppressedReasons: [\n \"BOUNCE\",\n \"COMPLAINT\",\n ],\n },\n trackingOptions: {\n customRedirectDomain: \"example.com\",\n httpsPolicy: \"REQUIRE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.sesv2.ConfigurationSet(\"example\",\n configuration_set_name=\"example\",\n delivery_options={\n \"max_delivery_seconds\": 300,\n \"tls_policy\": \"REQUIRE\",\n },\n reputation_options={\n \"reputation_metrics_enabled\": False,\n },\n sending_options={\n \"sending_enabled\": True,\n },\n suppression_options={\n \"suppressed_reasons\": [\n \"BOUNCE\",\n \"COMPLAINT\",\n ],\n },\n tracking_options={\n \"custom_redirect_domain\": \"example.com\",\n \"https_policy\": \"REQUIRE\",\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.SesV2.ConfigurationSet(\"example\", new()\n {\n ConfigurationSetName = \"example\",\n DeliveryOptions = new Aws.SesV2.Inputs.ConfigurationSetDeliveryOptionsArgs\n {\n MaxDeliverySeconds = 300,\n TlsPolicy = \"REQUIRE\",\n },\n ReputationOptions = new Aws.SesV2.Inputs.ConfigurationSetReputationOptionsArgs\n {\n ReputationMetricsEnabled = false,\n },\n SendingOptions = new Aws.SesV2.Inputs.ConfigurationSetSendingOptionsArgs\n {\n SendingEnabled = true,\n },\n SuppressionOptions = new Aws.SesV2.Inputs.ConfigurationSetSuppressionOptionsArgs\n {\n SuppressedReasons = new[]\n {\n \"BOUNCE\",\n \"COMPLAINT\",\n },\n },\n TrackingOptions = new Aws.SesV2.Inputs.ConfigurationSetTrackingOptionsArgs\n {\n CustomRedirectDomain = \"example.com\",\n HttpsPolicy = \"REQUIRE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sesv2\"\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 := sesv2.NewConfigurationSet(ctx, \"example\", \u0026sesv2.ConfigurationSetArgs{\n\t\t\tConfigurationSetName: pulumi.String(\"example\"),\n\t\t\tDeliveryOptions: \u0026sesv2.ConfigurationSetDeliveryOptionsArgs{\n\t\t\t\tMaxDeliverySeconds: pulumi.Int(300),\n\t\t\t\tTlsPolicy: pulumi.String(\"REQUIRE\"),\n\t\t\t},\n\t\t\tReputationOptions: \u0026sesv2.ConfigurationSetReputationOptionsArgs{\n\t\t\t\tReputationMetricsEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSendingOptions: \u0026sesv2.ConfigurationSetSendingOptionsArgs{\n\t\t\t\tSendingEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tSuppressionOptions: \u0026sesv2.ConfigurationSetSuppressionOptionsArgs{\n\t\t\t\tSuppressedReasons: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"BOUNCE\"),\n\t\t\t\t\tpulumi.String(\"COMPLAINT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTrackingOptions: \u0026sesv2.ConfigurationSetTrackingOptionsArgs{\n\t\t\t\tCustomRedirectDomain: pulumi.String(\"example.com\"),\n\t\t\t\tHttpsPolicy: pulumi.String(\"REQUIRE\"),\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.sesv2.ConfigurationSet;\nimport com.pulumi.aws.sesv2.ConfigurationSetArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetDeliveryOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetReputationOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetSendingOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetSuppressionOptionsArgs;\nimport com.pulumi.aws.sesv2.inputs.ConfigurationSetTrackingOptionsArgs;\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 ConfigurationSet(\"example\", ConfigurationSetArgs.builder()\n .configurationSetName(\"example\")\n .deliveryOptions(ConfigurationSetDeliveryOptionsArgs.builder()\n .maxDeliverySeconds(300)\n .tlsPolicy(\"REQUIRE\")\n .build())\n .reputationOptions(ConfigurationSetReputationOptionsArgs.builder()\n .reputationMetricsEnabled(false)\n .build())\n .sendingOptions(ConfigurationSetSendingOptionsArgs.builder()\n .sendingEnabled(true)\n .build())\n .suppressionOptions(ConfigurationSetSuppressionOptionsArgs.builder()\n .suppressedReasons( \n \"BOUNCE\",\n \"COMPLAINT\")\n .build())\n .trackingOptions(ConfigurationSetTrackingOptionsArgs.builder()\n .customRedirectDomain(\"example.com\")\n .httpsPolicy(\"REQUIRE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: aws:sesv2:ConfigurationSet\n properties:\n configurationSetName: example\n deliveryOptions:\n maxDeliverySeconds: 300\n tlsPolicy: REQUIRE\n reputationOptions:\n reputationMetricsEnabled: false\n sendingOptions:\n sendingEnabled: true\n suppressionOptions:\n suppressedReasons:\n - BOUNCE\n - COMPLAINT\n trackingOptions:\n customRedirectDomain: example.com\n httpsPolicy: REQUIRE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsing `pulumi import`, import SESv2 (Simple Email V2) Configuration Set using the `configuration_set_name`. For example:\n\n```sh\n$ pulumi import aws:sesv2/configurationSet:ConfigurationSet example example\n```\n", "properties": { "arn": { "type": "string", @@ -382733,6 +383603,10 @@ "type": "string", "description": "Fully-qualified domain name to look up. If no domain name is found, an error will be returned.\n" }, + "domainNameId": { + "type": "string", + "description": "The identifier for the domain name resource. Supported only for private custom domain names.\n" + }, "tags": { "type": "object", "additionalProperties": { @@ -382776,6 +383650,9 @@ "domainName": { "type": "string" }, + "domainNameId": { + "type": "string" + }, "endpointConfigurations": { "description": "List of objects with the endpoint configuration of this domain name.\n", "items": { @@ -382787,6 +383664,10 @@ "description": "The provider-assigned unique ID for this managed resource.\n", "type": "string" }, + "policy": { + "description": "A stringified JSON policy document that applies to the execute-api service for this DomainName regardless of the caller and Method configuration. Supported only for private custom domain names.\n", + "type": "string" + }, "regionalCertificateArn": { "description": "ARN for an AWS-managed certificate that is used for validating the regional domain name.\n", "type": "string" @@ -382823,7 +383704,9 @@ "cloudfrontDomainName", "cloudfrontZoneId", "domainName", + "domainNameId", "endpointConfigurations", + "policy", "regionalCertificateArn", "regionalCertificateName", "regionalDomainName", @@ -386169,7 +387052,7 @@ } }, "aws:bedrock/getInferenceProfile:getInferenceProfile": { - "description": "Data source for managing an AWS Bedrock Inference Profile.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = aws.bedrock.getInferenceProfiles({});\nconst testGetInferenceProfile = test.then(test =\u003e aws.bedrock.getInferenceProfile({\n inferenceProfileId: test.inferenceProfileSummaries?.[0]?.inferenceProfileId,\n}));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.bedrock.get_inference_profiles()\ntest_get_inference_profile = aws.bedrock.get_inference_profile(inference_profile_id=test.inference_profile_summaries[0].inference_profile_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 test = Aws.Bedrock.GetInferenceProfiles.Invoke();\n\n var testGetInferenceProfile = Aws.Bedrock.GetInferenceProfile.Invoke(new()\n {\n InferenceProfileId = test.Apply(getInferenceProfilesResult =\u003e getInferenceProfilesResult.InferenceProfileSummaries[0]?.InferenceProfileId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/bedrock\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bedrock.GetInferenceProfiles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bedrock.GetInferenceProfile(ctx, \u0026bedrock.GetInferenceProfileArgs{\n\t\t\tInferenceProfileId: test.InferenceProfileSummaries[0].InferenceProfileId,\n\t\t}, nil)\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.bedrock.BedrockFunctions;\nimport com.pulumi.aws.bedrock.inputs.GetInferenceProfileArgs;\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 test = BedrockFunctions.getInferenceProfiles();\n\n final var testGetInferenceProfile = BedrockFunctions.getInferenceProfile(GetInferenceProfileArgs.builder()\n .inferenceProfileId(test.applyValue(getInferenceProfilesResult -\u003e getInferenceProfilesResult.inferenceProfileSummaries()[0].inferenceProfileId()))\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n function: aws:bedrock:getInferenceProfiles\n arguments: {}\n testGetInferenceProfile:\n fn::invoke:\n function: aws:bedrock:getInferenceProfile\n arguments:\n inferenceProfileId: ${test.inferenceProfileSummaries[0].inferenceProfileId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Data source for managing an AWS Bedrock Inference Profile.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst test = aws.bedrock.getInferenceProfiles({});\nconst testGetInferenceProfile = test.then(test =\u003e aws.bedrock.getInferenceProfile({\n inferenceProfileId: test.inferenceProfileSummaries?.[0]?.inferenceProfileId,\n}));\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\ntest = aws.bedrock.get_inference_profiles()\ntest_get_inference_profile = aws.bedrock.get_inference_profile(inference_profile_id=test.inference_profile_summaries[0].inference_profile_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 test = Aws.Bedrock.GetInferenceProfiles.Invoke();\n\n var testGetInferenceProfile = Aws.Bedrock.GetInferenceProfile.Invoke(new()\n {\n InferenceProfileId = test.Apply(getInferenceProfilesResult =\u003e getInferenceProfilesResult.InferenceProfileSummaries[0]?.InferenceProfileId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/bedrock\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bedrock.GetInferenceProfiles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bedrock.LookupInferenceProfile(ctx, \u0026bedrock.LookupInferenceProfileArgs{\n\t\t\tInferenceProfileId: test.InferenceProfileSummaries[0].InferenceProfileId,\n\t\t}, nil)\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.bedrock.BedrockFunctions;\nimport com.pulumi.aws.bedrock.inputs.GetInferenceProfileArgs;\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 test = BedrockFunctions.getInferenceProfiles();\n\n final var testGetInferenceProfile = BedrockFunctions.getInferenceProfile(GetInferenceProfileArgs.builder()\n .inferenceProfileId(test.applyValue(getInferenceProfilesResult -\u003e getInferenceProfilesResult.inferenceProfileSummaries()[0].inferenceProfileId()))\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n test:\n fn::invoke:\n function: aws:bedrock:getInferenceProfiles\n arguments: {}\n testGetInferenceProfile:\n fn::invoke:\n function: aws:bedrock:getInferenceProfile\n arguments:\n inferenceProfileId: ${test.inferenceProfileSummaries[0].inferenceProfileId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getInferenceProfile.\n", "properties": { @@ -386221,7 +387104,7 @@ "type": "string" }, "type": { - "description": "The type of the inference profile. `SYSTEM_DEFINED` means that the inference profile is defined by Amazon Bedrock.\n", + "description": "The type of the inference profile. `SYSTEM_DEFINED` means that the inference profile is defined by Amazon Bedrock. `APPLICATION` means that the inference profile is defined by the user.\n", "type": "string" }, "updatedAt": { @@ -423495,6 +424378,13 @@ "name": { "description": "Name of the application.\n", "type": "string" + }, + "tags": { + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Application. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n", + "type": "object" } }, "required": [ @@ -423502,7 +424392,67 @@ "arn", "description", "id", - "name" + "name", + "tags" + ], + "type": "object" + } + }, + "aws:servicecatalog/getAppregistryAttributeGroup:getAppregistryAttributeGroup": { + "description": "Data source for managing an AWS Service Catalog AppRegistry Attribute Group.\n\n## Example Usage\n\n### Basic Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\n\nconst example = aws.servicecatalog.getAppregistryAttributeGroup({\n name: \"example_attribute_group\",\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\n\nexample = aws.servicecatalog.get_appregistry_attribute_group(name=\"example_attribute_group\")\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 = Aws.ServiceCatalog.GetAppregistryAttributeGroup.Invoke(new()\n {\n Name = \"example_attribute_group\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/servicecatalog\"\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 := servicecatalog.LookupAppregistryAttributeGroup(ctx, \u0026servicecatalog.LookupAppregistryAttributeGroupArgs{\n\t\t\tName: pulumi.StringRef(\"example_attribute_group\"),\n\t\t}, nil)\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.servicecatalog.ServicecatalogFunctions;\nimport com.pulumi.aws.servicecatalog.inputs.GetAppregistryAttributeGroupArgs;\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 example = ServicecatalogFunctions.getAppregistryAttributeGroup(GetAppregistryAttributeGroupArgs.builder()\n .name(\"example_attribute_group\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n function: aws:servicecatalog:getAppregistryAttributeGroup\n arguments:\n name: example_attribute_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getAppregistryAttributeGroup.\n", + "properties": { + "arn": { + "type": "string", + "description": "ARN of the Attribute Group to find.\n" + }, + "id": { + "type": "string", + "description": "ID of the Attribute Group to find.\n" + }, + "name": { + "type": "string", + "description": "Name of the Attribute Group to find.\n" + } + }, + "type": "object" + }, + "outputs": { + "description": "A collection of values returned by getAppregistryAttributeGroup.\n", + "properties": { + "arn": { + "type": "string" + }, + "attributes": { + "description": "A JSON string of nested key-value pairs that represents the attributes of the group.\n", + "type": "string" + }, + "description": { + "description": "Description of the Attribute Group.\n", + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "additionalProperties": { + "type": "string" + }, + "description": "A map of tags assigned to the Attribute Group. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.\n", + "type": "object" + } + }, + "required": [ + "arn", + "attributes", + "description", + "id", + "name", + "tags" ], "type": "object" }