import * as core from "@terrascript/core"; export interface CacheNodesArgs extends core.SchemaArgs { address: string | core.StringOut; availabilityZone: string | core.StringOut; id: string | core.StringOut; port: number | core.NumberOut; } export class CacheNodes extends core.Schema { @core.attr(String, { computed: true }) public address!: string | core.StringOut; @core.attr(String, { computed: true }) public availabilityZone!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(Number, { computed: true }) public port!: number | core.NumberOut; } export interface LogDeliveryConfigurationArgs extends core.SchemaArgs { destination: string | core.StringOut; destinationType: string | core.StringOut; logFormat: string | core.StringOut; logType: string | core.StringOut; } export class LogDeliveryConfiguration extends core.Schema { @core.attr(String) public destination!: string | core.StringOut; @core.attr(String) public destinationType!: string | core.StringOut; @core.attr(String) public logFormat!: string | core.StringOut; @core.attr(String) public logType!: string | core.StringOut; } export interface ClusterArgs extends core.ResourceArgs { /** * (Optional) Whether any database modifications are applied immediately, or during the next maintenanc * e window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://d * ocs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html). */ applyImmediately?: boolean | core.BooleanOut; /** * (Optional) Specifies whether minor version engine upgrades will be applied automatically to the unde * rlying Cache Cluster instances during the maintenance window. */ autoMinorVersionUpgrade?: string | core.StringOut; /** * (Optional) Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, u * se `preferred_availability_zones` instead. Default: System chosen Availability Zone. Changing this v * alue will re-create the resource. */ availabilityZone?: string | core.StringOut; /** * (Optional, Memcached only) Whether the nodes in this Memcached node group are created in a single Av * ailability Zone or created across multiple Availability Zones in the cluster's region. Valid values * for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cro * ss-az`, `num_cache_nodes` must be greater than `1`. */ azMode?: string | core.StringOut; clusterId: string | core.StringOut; engine?: string | core.StringOut; engineVersion?: string | core.StringOut; /** * (Optional, Redis only) Name of your final cluster snapshot. If omitted, no final snapshot will be ma * de. */ finalSnapshotIdentifier?: string | core.StringOut; /** * (Optional, Redis only) Specifies the destination and format of Redis [SLOWLOG](https://redis.io/comm * ands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_ * Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.a * ws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See [Log Delivery Configuration](# * log-delivery-configuration) below for more details. */ logDeliveryConfiguration?: | core.Array | core.ArrayOut; maintenanceWindow?: string | core.StringOut; nodeType?: string | core.StringOut; notificationTopicArn?: string | core.StringOut; numCacheNodes?: number | core.NumberOut; parameterGroupName?: string | core.StringOut; port?: number | core.NumberOut; /** * (Optional, Memcached only) List of the Availability Zones in which cache nodes are created. If you a * re creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are a * ssociated with the subnets in the selected subnet group. The number of Availability Zones listed mus * t equal the value of `num_cache_nodes`. If you want all the nodes in the same Availability Zone, use * availability_zone` instead, or repeat the Availability Zone multiple times in the list. Default: S * ystem chosen Availability Zones. Detecting drift of existing node availability zone is not currently * supported. Updating this argument by itself to migrate existing node availability zones is not curr * ently supported and will show a perpetual difference. */ preferredAvailabilityZones?: | core.Array | core.ArrayOut; /** * (Optional, Required if `engine` is not specified) ID of the replication group to which this cluster * should belong. If this parameter is specified, the cluster is added to the specified replication gro * up as a read replica; otherwise, the cluster is a standalone primary that is not part of any replica * tion group. */ replicationGroupId?: string | core.StringOut; securityGroupIds?: core.Array | core.ArrayOut; securityGroupNames?: core.Array | core.ArrayOut; snapshotArns?: core.Array | core.ArrayOut; /** * (Optional, Redis only) Name of a snapshot from which to restore data into the new node group. Changi * ng `snapshot_name` forces a new resource. */ snapshotName?: string | core.StringOut; /** * (Optional, Redis only) Number of days for which ElastiCache will retain automatic cache cluster snap * shots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot tha * t was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentio * nLimit is set to zero (0), backups are turned off. Please note that setting a `snapshot_retention_li * mit` is not supported on cache.t1.micro cache nodes */ snapshotRetentionLimit?: number | core.NumberOut; /** * (Optional, Redis only) Daily time range (in UTC) during which ElastiCache will begin taking a daily * snapshot of your cache cluster. Example: 05:00-09:00 */ snapshotWindow?: string | core.StringOut; subnetGroupName?: string | core.StringOut; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ tagsAll?: core.Map | core.MapOut; } export class Cluster extends core.Resource { /** * (Optional) Whether any database modifications are applied immediately, or during the next maintenanc * e window. Default is `false`. See [Amazon ElastiCache Documentation for more information.](https://d * ocs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html). */ @core.attr(Boolean, { computed: true }) public applyImmediately?: boolean | core.BooleanOut; /** * The ARN of the created ElastiCache Cluster. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Specifies whether minor version engine upgrades will be applied automatically to the unde * rlying Cache Cluster instances during the maintenance window. */ @core.attr(String) public autoMinorVersionUpgrade?: string | core.StringOut; /** * (Optional) Availability Zone for the cache cluster. If you want to create cache nodes in multi-az, u * se `preferred_availability_zones` instead. Default: System chosen Availability Zone. Changing this v * alue will re-create the resource. */ @core.attr(String, { computed: true }) public availabilityZone?: string | core.StringOut; /** * (Optional, Memcached only) Whether the nodes in this Memcached node group are created in a single Av * ailability Zone or created across multiple Availability Zones in the cluster's region. Valid values * for this parameter are `single-az` or `cross-az`, default is `single-az`. If you want to choose `cro * ss-az`, `num_cache_nodes` must be greater than `1`. */ @core.attr(String, { computed: true }) public azMode?: string | core.StringOut; /** * List of node objects including `id`, `address`, `port` and `availability_zone`. */ @core.attr(CacheNodes, { computed: true, kind: "array" }) public cacheNodes!: core.Array | core.ArrayOut; /** * (Memcached only) DNS name of the cache cluster without the port appended. */ @core.attr(String, { computed: true }) public clusterAddress!: string | core.StringOut; @core.attr(String) public clusterId!: string | core.StringOut; /** * (Memcached only) Configuration endpoint to allow host discovery. */ @core.attr(String, { computed: true }) public configurationEndpoint!: string | core.StringOut; @core.attr(String, { computed: true }) public engine?: string | core.StringOut; @core.attr(String, { computed: true }) public engineVersion?: string | core.StringOut; /** * Because ElastiCache pulls the latest minor or patch for a version, this attribute returns the runnin * g version of the cache engine. */ @core.attr(String, { computed: true }) public engineVersionActual!: string | core.StringOut; /** * (Optional, Redis only) Name of your final cluster snapshot. If omitted, no final snapshot will be ma * de. */ @core.attr(String) public finalSnapshotIdentifier?: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional, Redis only) Specifies the destination and format of Redis [SLOWLOG](https://redis.io/comm * ands/slowlog) or Redis [Engine Log](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Log_ * Delivery.html#Log_contents-engine-log). See the documentation on [Amazon ElastiCache](https://docs.a * ws.amazon.com/AmazonElastiCache/latest/red-ug/Log_Delivery.html). See [Log Delivery Configuration](# * log-delivery-configuration) below for more details. */ @core.attr(LogDeliveryConfiguration, { kind: "array" }) public logDeliveryConfiguration?: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public maintenanceWindow?: string | core.StringOut; @core.attr(String, { computed: true }) public nodeType?: string | core.StringOut; @core.attr(String) public notificationTopicArn?: string | core.StringOut; @core.attr(Number, { computed: true }) public numCacheNodes?: number | core.NumberOut; @core.attr(String, { computed: true }) public parameterGroupName?: string | core.StringOut; @core.attr(Number, { computed: true }) public port?: number | core.NumberOut; /** * (Optional, Memcached only) List of the Availability Zones in which cache nodes are created. If you a * re creating your cluster in an Amazon VPC you can only locate nodes in Availability Zones that are a * ssociated with the subnets in the selected subnet group. The number of Availability Zones listed mus * t equal the value of `num_cache_nodes`. If you want all the nodes in the same Availability Zone, use * availability_zone` instead, or repeat the Availability Zone multiple times in the list. Default: S * ystem chosen Availability Zones. Detecting drift of existing node availability zone is not currently * supported. Updating this argument by itself to migrate existing node availability zones is not curr * ently supported and will show a perpetual difference. */ @core.attr(String, { kind: "array" }) public preferredAvailabilityZones?: | core.Array | core.ArrayOut; /** * (Optional, Required if `engine` is not specified) ID of the replication group to which this cluster * should belong. If this parameter is specified, the cluster is added to the specified replication gro * up as a read replica; otherwise, the cluster is a standalone primary that is not part of any replica * tion group. */ @core.attr(String, { computed: true }) public replicationGroupId?: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public securityGroupIds?: core.Array | core.ArrayOut; @core.attr(String, { computed: true, kind: "array" }) public securityGroupNames?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public snapshotArns?: core.Array | core.ArrayOut; /** * (Optional, Redis only) Name of a snapshot from which to restore data into the new node group. Changi * ng `snapshot_name` forces a new resource. */ @core.attr(String) public snapshotName?: string | core.StringOut; /** * (Optional, Redis only) Number of days for which ElastiCache will retain automatic cache cluster snap * shots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot tha * t was taken today will be retained for 5 days before being deleted. If the value of SnapshotRetentio * nLimit is set to zero (0), backups are turned off. Please note that setting a `snapshot_retention_li * mit` is not supported on cache.t1.micro cache nodes */ @core.attr(Number) public snapshotRetentionLimit?: number | core.NumberOut; /** * (Optional, Redis only) Daily time range (in UTC) during which ElastiCache will begin taking a daily * snapshot of your cache cluster. Example: 05:00-09:00 */ @core.attr(String, { computed: true }) public snapshotWindow?: string | core.StringOut; @core.attr(String, { computed: true }) public subnetGroupName?: string | core.StringOut; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; constructor(name: string, args?: ClusterArgs) { super(name, "aws_elasticache_cluster", args); } public override getNamespace(): string { return "aws_elasticache"; } }