UNPKG

@cdktf/provider-aws

Version:

Prebuilt aws Provider for Terraform CDK (cdktf)

1,009 lines 141 kB
"use strict"; var _a, _b, _c, _d, _e; Object.defineProperty(exports, "__esModule", { value: true }); exports.ElasticacheCluster = exports.ElasticacheClusterLogDeliveryConfigurationList = exports.ElasticacheClusterLogDeliveryConfigurationOutputReference = exports.elasticacheClusterLogDeliveryConfigurationToHclTerraform = exports.elasticacheClusterLogDeliveryConfigurationToTerraform = exports.ElasticacheClusterCacheNodesList = exports.ElasticacheClusterCacheNodesOutputReference = exports.elasticacheClusterCacheNodesToHclTerraform = exports.elasticacheClusterCacheNodesToTerraform = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdktf = require("cdktf"); function elasticacheClusterCacheNodesToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return {}; } exports.elasticacheClusterCacheNodesToTerraform = elasticacheClusterCacheNodesToTerraform; function elasticacheClusterCacheNodesToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = {}; return attrs; } exports.elasticacheClusterCacheNodesToHclTerraform = elasticacheClusterCacheNodesToHclTerraform; class ElasticacheClusterCacheNodesOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param complexObjectIndex the index of this item in the list * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) { super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex); this.isEmptyObject = false; } get internalValue() { let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; } else { this.isEmptyObject = Object.keys(value).length === 0; } } // address - computed: true, optional: false, required: false get address() { return this.getStringAttribute('address'); } // availability_zone - computed: true, optional: false, required: false get availabilityZone() { return this.getStringAttribute('availability_zone'); } // id - computed: true, optional: false, required: false get id() { return this.getStringAttribute('id'); } // outpost_arn - computed: true, optional: false, required: false get outpostArn() { return this.getStringAttribute('outpost_arn'); } // port - computed: true, optional: false, required: false get port() { return this.getNumberAttribute('port'); } } exports.ElasticacheClusterCacheNodesOutputReference = ElasticacheClusterCacheNodesOutputReference; _a = JSII_RTTI_SYMBOL_1; ElasticacheClusterCacheNodesOutputReference[_a] = { fqn: "@cdktf/provider-aws.elasticacheCluster.ElasticacheClusterCacheNodesOutputReference", version: "19.50.0" }; class ElasticacheClusterCacheNodesList extends cdktf.ComplexList { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, wrapsSet) { super(terraformResource, terraformAttribute, wrapsSet); this.terraformResource = terraformResource; this.terraformAttribute = terraformAttribute; this.wrapsSet = wrapsSet; } /** * @param index the index of the item to return */ get(index) { return new ElasticacheClusterCacheNodesOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet); } } exports.ElasticacheClusterCacheNodesList = ElasticacheClusterCacheNodesList; _b = JSII_RTTI_SYMBOL_1; ElasticacheClusterCacheNodesList[_b] = { fqn: "@cdktf/provider-aws.elasticacheCluster.ElasticacheClusterCacheNodesList", version: "19.50.0" }; function elasticacheClusterLogDeliveryConfigurationToTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } return { destination: cdktf.stringToTerraform(struct.destination), destination_type: cdktf.stringToTerraform(struct.destinationType), log_format: cdktf.stringToTerraform(struct.logFormat), log_type: cdktf.stringToTerraform(struct.logType), }; } exports.elasticacheClusterLogDeliveryConfigurationToTerraform = elasticacheClusterLogDeliveryConfigurationToTerraform; function elasticacheClusterLogDeliveryConfigurationToHclTerraform(struct) { if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) { return struct; } if (cdktf.isComplexElement(struct)) { throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration"); } const attrs = { destination: { value: cdktf.stringToHclTerraform(struct.destination), isBlock: false, type: "simple", storageClassType: "string", }, destination_type: { value: cdktf.stringToHclTerraform(struct.destinationType), isBlock: false, type: "simple", storageClassType: "string", }, log_format: { value: cdktf.stringToHclTerraform(struct.logFormat), isBlock: false, type: "simple", storageClassType: "string", }, log_type: { value: cdktf.stringToHclTerraform(struct.logType), isBlock: false, type: "simple", storageClassType: "string", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } exports.elasticacheClusterLogDeliveryConfigurationToHclTerraform = elasticacheClusterLogDeliveryConfigurationToHclTerraform; class ElasticacheClusterLogDeliveryConfigurationOutputReference extends cdktf.ComplexObject { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param complexObjectIndex the index of this item in the list * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) { super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex); this.isEmptyObject = false; } get internalValue() { if (this.resolvableValue) { return this.resolvableValue; } let hasAnyValues = this.isEmptyObject; const internalValueResult = {}; if (this._destination !== undefined) { hasAnyValues = true; internalValueResult.destination = this._destination; } if (this._destinationType !== undefined) { hasAnyValues = true; internalValueResult.destinationType = this._destinationType; } if (this._logFormat !== undefined) { hasAnyValues = true; internalValueResult.logFormat = this._logFormat; } if (this._logType !== undefined) { hasAnyValues = true; internalValueResult.logType = this._logType; } return hasAnyValues ? internalValueResult : undefined; } set internalValue(value) { if (value === undefined) { this.isEmptyObject = false; this.resolvableValue = undefined; this._destination = undefined; this._destinationType = undefined; this._logFormat = undefined; this._logType = undefined; } else if (cdktf.Tokenization.isResolvable(value)) { this.isEmptyObject = false; this.resolvableValue = value; } else { this.isEmptyObject = Object.keys(value).length === 0; this.resolvableValue = undefined; this._destination = value.destination; this._destinationType = value.destinationType; this._logFormat = value.logFormat; this._logType = value.logType; } } get destination() { return this.getStringAttribute('destination'); } set destination(value) { this._destination = value; } // Temporarily expose input value. Use with caution. get destinationInput() { return this._destination; } get destinationType() { return this.getStringAttribute('destination_type'); } set destinationType(value) { this._destinationType = value; } // Temporarily expose input value. Use with caution. get destinationTypeInput() { return this._destinationType; } get logFormat() { return this.getStringAttribute('log_format'); } set logFormat(value) { this._logFormat = value; } // Temporarily expose input value. Use with caution. get logFormatInput() { return this._logFormat; } get logType() { return this.getStringAttribute('log_type'); } set logType(value) { this._logType = value; } // Temporarily expose input value. Use with caution. get logTypeInput() { return this._logType; } } exports.ElasticacheClusterLogDeliveryConfigurationOutputReference = ElasticacheClusterLogDeliveryConfigurationOutputReference; _c = JSII_RTTI_SYMBOL_1; ElasticacheClusterLogDeliveryConfigurationOutputReference[_c] = { fqn: "@cdktf/provider-aws.elasticacheCluster.ElasticacheClusterLogDeliveryConfigurationOutputReference", version: "19.50.0" }; class ElasticacheClusterLogDeliveryConfigurationList extends cdktf.ComplexList { /** * @param terraformResource The parent resource * @param terraformAttribute The attribute on the parent resource this class is referencing * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index) */ constructor(terraformResource, terraformAttribute, wrapsSet) { super(terraformResource, terraformAttribute, wrapsSet); this.terraformResource = terraformResource; this.terraformAttribute = terraformAttribute; this.wrapsSet = wrapsSet; } /** * @param index the index of the item to return */ get(index) { return new ElasticacheClusterLogDeliveryConfigurationOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet); } } exports.ElasticacheClusterLogDeliveryConfigurationList = ElasticacheClusterLogDeliveryConfigurationList; _d = JSII_RTTI_SYMBOL_1; ElasticacheClusterLogDeliveryConfigurationList[_d] = { fqn: "@cdktf/provider-aws.elasticacheCluster.ElasticacheClusterLogDeliveryConfigurationList", version: "19.50.0" }; /** * Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/elasticache_cluster aws_elasticache_cluster} */ class ElasticacheCluster extends cdktf.TerraformResource { // ============== // STATIC Methods // ============== /** * Generates CDKTF code for importing a ElasticacheCluster resource upon running "cdktf plan <stack-name>" * @param scope The scope in which to define this construct * @param importToId The construct id used in the generated config for the ElasticacheCluster to import * @param importFromId The id of the existing ElasticacheCluster that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/elasticache_cluster#import import section} in the documentation of this resource for the id to use * @param provider? Optional instance of the provider where the ElasticacheCluster to import is found */ static generateConfigForImport(scope, importToId, importFromId, provider) { return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "aws_elasticache_cluster", importId: importFromId, provider }); } // =========== // INITIALIZER // =========== /** * Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/elasticache_cluster aws_elasticache_cluster} Resource * * @param scope The scope in which to define this construct * @param id The scoped construct ID. Must be unique amongst siblings in the same scope * @param options ElasticacheClusterConfig */ constructor(scope, id, config) { super(scope, id, { terraformResourceType: 'aws_elasticache_cluster', terraformGeneratorMetadata: { providerName: 'aws', providerVersion: '5.84.0', providerVersionConstraint: '~> 5.0' }, provider: config.provider, dependsOn: config.dependsOn, count: config.count, lifecycle: config.lifecycle, provisioners: config.provisioners, connection: config.connection, forEach: config.forEach }); // cache_nodes - computed: true, optional: false, required: false this._cacheNodes = new ElasticacheClusterCacheNodesList(this, "cache_nodes", false); // log_delivery_configuration - computed: false, optional: true, required: false this._logDeliveryConfiguration = new ElasticacheClusterLogDeliveryConfigurationList(this, "log_delivery_configuration", true); this._applyImmediately = config.applyImmediately; this._autoMinorVersionUpgrade = config.autoMinorVersionUpgrade; this._availabilityZone = config.availabilityZone; this._azMode = config.azMode; this._clusterId = config.clusterId; this._engine = config.engine; this._engineVersion = config.engineVersion; this._finalSnapshotIdentifier = config.finalSnapshotIdentifier; this._id = config.id; this._ipDiscovery = config.ipDiscovery; this._maintenanceWindow = config.maintenanceWindow; this._networkType = config.networkType; this._nodeType = config.nodeType; this._notificationTopicArn = config.notificationTopicArn; this._numCacheNodes = config.numCacheNodes; this._outpostMode = config.outpostMode; this._parameterGroupName = config.parameterGroupName; this._port = config.port; this._preferredAvailabilityZones = config.preferredAvailabilityZones; this._preferredOutpostArn = config.preferredOutpostArn; this._replicationGroupId = config.replicationGroupId; this._securityGroupIds = config.securityGroupIds; this._snapshotArns = config.snapshotArns; this._snapshotName = config.snapshotName; this._snapshotRetentionLimit = config.snapshotRetentionLimit; this._snapshotWindow = config.snapshotWindow; this._subnetGroupName = config.subnetGroupName; this._tags = config.tags; this._tagsAll = config.tagsAll; this._transitEncryptionEnabled = config.transitEncryptionEnabled; this._logDeliveryConfiguration.internalValue = config.logDeliveryConfiguration; } get applyImmediately() { return this.getBooleanAttribute('apply_immediately'); } set applyImmediately(value) { this._applyImmediately = value; } resetApplyImmediately() { this._applyImmediately = undefined; } // Temporarily expose input value. Use with caution. get applyImmediatelyInput() { return this._applyImmediately; } // arn - computed: true, optional: false, required: false get arn() { return this.getStringAttribute('arn'); } get autoMinorVersionUpgrade() { return this.getStringAttribute('auto_minor_version_upgrade'); } set autoMinorVersionUpgrade(value) { this._autoMinorVersionUpgrade = value; } resetAutoMinorVersionUpgrade() { this._autoMinorVersionUpgrade = undefined; } // Temporarily expose input value. Use with caution. get autoMinorVersionUpgradeInput() { return this._autoMinorVersionUpgrade; } get availabilityZone() { return this.getStringAttribute('availability_zone'); } set availabilityZone(value) { this._availabilityZone = value; } resetAvailabilityZone() { this._availabilityZone = undefined; } // Temporarily expose input value. Use with caution. get availabilityZoneInput() { return this._availabilityZone; } get azMode() { return this.getStringAttribute('az_mode'); } set azMode(value) { this._azMode = value; } resetAzMode() { this._azMode = undefined; } // Temporarily expose input value. Use with caution. get azModeInput() { return this._azMode; } get cacheNodes() { return this._cacheNodes; } // cluster_address - computed: true, optional: false, required: false get clusterAddress() { return this.getStringAttribute('cluster_address'); } get clusterId() { return this.getStringAttribute('cluster_id'); } set clusterId(value) { this._clusterId = value; } // Temporarily expose input value. Use with caution. get clusterIdInput() { return this._clusterId; } // configuration_endpoint - computed: true, optional: false, required: false get configurationEndpoint() { return this.getStringAttribute('configuration_endpoint'); } get engine() { return this.getStringAttribute('engine'); } set engine(value) { this._engine = value; } resetEngine() { this._engine = undefined; } // Temporarily expose input value. Use with caution. get engineInput() { return this._engine; } get engineVersion() { return this.getStringAttribute('engine_version'); } set engineVersion(value) { this._engineVersion = value; } resetEngineVersion() { this._engineVersion = undefined; } // Temporarily expose input value. Use with caution. get engineVersionInput() { return this._engineVersion; } // engine_version_actual - computed: true, optional: false, required: false get engineVersionActual() { return this.getStringAttribute('engine_version_actual'); } get finalSnapshotIdentifier() { return this.getStringAttribute('final_snapshot_identifier'); } set finalSnapshotIdentifier(value) { this._finalSnapshotIdentifier = value; } resetFinalSnapshotIdentifier() { this._finalSnapshotIdentifier = undefined; } // Temporarily expose input value. Use with caution. get finalSnapshotIdentifierInput() { return this._finalSnapshotIdentifier; } get id() { return this.getStringAttribute('id'); } set id(value) { this._id = value; } resetId() { this._id = undefined; } // Temporarily expose input value. Use with caution. get idInput() { return this._id; } get ipDiscovery() { return this.getStringAttribute('ip_discovery'); } set ipDiscovery(value) { this._ipDiscovery = value; } resetIpDiscovery() { this._ipDiscovery = undefined; } // Temporarily expose input value. Use with caution. get ipDiscoveryInput() { return this._ipDiscovery; } get maintenanceWindow() { return this.getStringAttribute('maintenance_window'); } set maintenanceWindow(value) { this._maintenanceWindow = value; } resetMaintenanceWindow() { this._maintenanceWindow = undefined; } // Temporarily expose input value. Use with caution. get maintenanceWindowInput() { return this._maintenanceWindow; } get networkType() { return this.getStringAttribute('network_type'); } set networkType(value) { this._networkType = value; } resetNetworkType() { this._networkType = undefined; } // Temporarily expose input value. Use with caution. get networkTypeInput() { return this._networkType; } get nodeType() { return this.getStringAttribute('node_type'); } set nodeType(value) { this._nodeType = value; } resetNodeType() { this._nodeType = undefined; } // Temporarily expose input value. Use with caution. get nodeTypeInput() { return this._nodeType; } get notificationTopicArn() { return this.getStringAttribute('notification_topic_arn'); } set notificationTopicArn(value) { this._notificationTopicArn = value; } resetNotificationTopicArn() { this._notificationTopicArn = undefined; } // Temporarily expose input value. Use with caution. get notificationTopicArnInput() { return this._notificationTopicArn; } get numCacheNodes() { return this.getNumberAttribute('num_cache_nodes'); } set numCacheNodes(value) { this._numCacheNodes = value; } resetNumCacheNodes() { this._numCacheNodes = undefined; } // Temporarily expose input value. Use with caution. get numCacheNodesInput() { return this._numCacheNodes; } get outpostMode() { return this.getStringAttribute('outpost_mode'); } set outpostMode(value) { this._outpostMode = value; } resetOutpostMode() { this._outpostMode = undefined; } // Temporarily expose input value. Use with caution. get outpostModeInput() { return this._outpostMode; } get parameterGroupName() { return this.getStringAttribute('parameter_group_name'); } set parameterGroupName(value) { this._parameterGroupName = value; } resetParameterGroupName() { this._parameterGroupName = undefined; } // Temporarily expose input value. Use with caution. get parameterGroupNameInput() { return this._parameterGroupName; } get port() { return this.getNumberAttribute('port'); } set port(value) { this._port = value; } resetPort() { this._port = undefined; } // Temporarily expose input value. Use with caution. get portInput() { return this._port; } get preferredAvailabilityZones() { return this.getListAttribute('preferred_availability_zones'); } set preferredAvailabilityZones(value) { this._preferredAvailabilityZones = value; } resetPreferredAvailabilityZones() { this._preferredAvailabilityZones = undefined; } // Temporarily expose input value. Use with caution. get preferredAvailabilityZonesInput() { return this._preferredAvailabilityZones; } get preferredOutpostArn() { return this.getStringAttribute('preferred_outpost_arn'); } set preferredOutpostArn(value) { this._preferredOutpostArn = value; } resetPreferredOutpostArn() { this._preferredOutpostArn = undefined; } // Temporarily expose input value. Use with caution. get preferredOutpostArnInput() { return this._preferredOutpostArn; } get replicationGroupId() { return this.getStringAttribute('replication_group_id'); } set replicationGroupId(value) { this._replicationGroupId = value; } resetReplicationGroupId() { this._replicationGroupId = undefined; } // Temporarily expose input value. Use with caution. get replicationGroupIdInput() { return this._replicationGroupId; } get securityGroupIds() { return cdktf.Fn.tolist(this.getListAttribute('security_group_ids')); } set securityGroupIds(value) { this._securityGroupIds = value; } resetSecurityGroupIds() { this._securityGroupIds = undefined; } // Temporarily expose input value. Use with caution. get securityGroupIdsInput() { return this._securityGroupIds; } get snapshotArns() { return this.getListAttribute('snapshot_arns'); } set snapshotArns(value) { this._snapshotArns = value; } resetSnapshotArns() { this._snapshotArns = undefined; } // Temporarily expose input value. Use with caution. get snapshotArnsInput() { return this._snapshotArns; } get snapshotName() { return this.getStringAttribute('snapshot_name'); } set snapshotName(value) { this._snapshotName = value; } resetSnapshotName() { this._snapshotName = undefined; } // Temporarily expose input value. Use with caution. get snapshotNameInput() { return this._snapshotName; } get snapshotRetentionLimit() { return this.getNumberAttribute('snapshot_retention_limit'); } set snapshotRetentionLimit(value) { this._snapshotRetentionLimit = value; } resetSnapshotRetentionLimit() { this._snapshotRetentionLimit = undefined; } // Temporarily expose input value. Use with caution. get snapshotRetentionLimitInput() { return this._snapshotRetentionLimit; } get snapshotWindow() { return this.getStringAttribute('snapshot_window'); } set snapshotWindow(value) { this._snapshotWindow = value; } resetSnapshotWindow() { this._snapshotWindow = undefined; } // Temporarily expose input value. Use with caution. get snapshotWindowInput() { return this._snapshotWindow; } get subnetGroupName() { return this.getStringAttribute('subnet_group_name'); } set subnetGroupName(value) { this._subnetGroupName = value; } resetSubnetGroupName() { this._subnetGroupName = undefined; } // Temporarily expose input value. Use with caution. get subnetGroupNameInput() { return this._subnetGroupName; } get tags() { return this.getStringMapAttribute('tags'); } set tags(value) { this._tags = value; } resetTags() { this._tags = undefined; } // Temporarily expose input value. Use with caution. get tagsInput() { return this._tags; } get tagsAll() { return this.getStringMapAttribute('tags_all'); } set tagsAll(value) { this._tagsAll = value; } resetTagsAll() { this._tagsAll = undefined; } // Temporarily expose input value. Use with caution. get tagsAllInput() { return this._tagsAll; } get transitEncryptionEnabled() { return this.getBooleanAttribute('transit_encryption_enabled'); } set transitEncryptionEnabled(value) { this._transitEncryptionEnabled = value; } resetTransitEncryptionEnabled() { this._transitEncryptionEnabled = undefined; } // Temporarily expose input value. Use with caution. get transitEncryptionEnabledInput() { return this._transitEncryptionEnabled; } get logDeliveryConfiguration() { return this._logDeliveryConfiguration; } putLogDeliveryConfiguration(value) { this._logDeliveryConfiguration.internalValue = value; } resetLogDeliveryConfiguration() { this._logDeliveryConfiguration.internalValue = undefined; } // Temporarily expose input value. Use with caution. get logDeliveryConfigurationInput() { return this._logDeliveryConfiguration.internalValue; } // ========= // SYNTHESIS // ========= synthesizeAttributes() { return { apply_immediately: cdktf.booleanToTerraform(this._applyImmediately), auto_minor_version_upgrade: cdktf.stringToTerraform(this._autoMinorVersionUpgrade), availability_zone: cdktf.stringToTerraform(this._availabilityZone), az_mode: cdktf.stringToTerraform(this._azMode), cluster_id: cdktf.stringToTerraform(this._clusterId), engine: cdktf.stringToTerraform(this._engine), engine_version: cdktf.stringToTerraform(this._engineVersion), final_snapshot_identifier: cdktf.stringToTerraform(this._finalSnapshotIdentifier), id: cdktf.stringToTerraform(this._id), ip_discovery: cdktf.stringToTerraform(this._ipDiscovery), maintenance_window: cdktf.stringToTerraform(this._maintenanceWindow), network_type: cdktf.stringToTerraform(this._networkType), node_type: cdktf.stringToTerraform(this._nodeType), notification_topic_arn: cdktf.stringToTerraform(this._notificationTopicArn), num_cache_nodes: cdktf.numberToTerraform(this._numCacheNodes), outpost_mode: cdktf.stringToTerraform(this._outpostMode), parameter_group_name: cdktf.stringToTerraform(this._parameterGroupName), port: cdktf.numberToTerraform(this._port), preferred_availability_zones: cdktf.listMapper(cdktf.stringToTerraform, false)(this._preferredAvailabilityZones), preferred_outpost_arn: cdktf.stringToTerraform(this._preferredOutpostArn), replication_group_id: cdktf.stringToTerraform(this._replicationGroupId), security_group_ids: cdktf.listMapper(cdktf.stringToTerraform, false)(this._securityGroupIds), snapshot_arns: cdktf.listMapper(cdktf.stringToTerraform, false)(this._snapshotArns), snapshot_name: cdktf.stringToTerraform(this._snapshotName), snapshot_retention_limit: cdktf.numberToTerraform(this._snapshotRetentionLimit), snapshot_window: cdktf.stringToTerraform(this._snapshotWindow), subnet_group_name: cdktf.stringToTerraform(this._subnetGroupName), tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags), tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll), transit_encryption_enabled: cdktf.booleanToTerraform(this._transitEncryptionEnabled), log_delivery_configuration: cdktf.listMapper(elasticacheClusterLogDeliveryConfigurationToTerraform, true)(this._logDeliveryConfiguration.internalValue), }; } synthesizeHclAttributes() { const attrs = { apply_immediately: { value: cdktf.booleanToHclTerraform(this._applyImmediately), isBlock: false, type: "simple", storageClassType: "boolean", }, auto_minor_version_upgrade: { value: cdktf.stringToHclTerraform(this._autoMinorVersionUpgrade), isBlock: false, type: "simple", storageClassType: "string", }, availability_zone: { value: cdktf.stringToHclTerraform(this._availabilityZone), isBlock: false, type: "simple", storageClassType: "string", }, az_mode: { value: cdktf.stringToHclTerraform(this._azMode), isBlock: false, type: "simple", storageClassType: "string", }, cluster_id: { value: cdktf.stringToHclTerraform(this._clusterId), isBlock: false, type: "simple", storageClassType: "string", }, engine: { value: cdktf.stringToHclTerraform(this._engine), isBlock: false, type: "simple", storageClassType: "string", }, engine_version: { value: cdktf.stringToHclTerraform(this._engineVersion), isBlock: false, type: "simple", storageClassType: "string", }, final_snapshot_identifier: { value: cdktf.stringToHclTerraform(this._finalSnapshotIdentifier), isBlock: false, type: "simple", storageClassType: "string", }, id: { value: cdktf.stringToHclTerraform(this._id), isBlock: false, type: "simple", storageClassType: "string", }, ip_discovery: { value: cdktf.stringToHclTerraform(this._ipDiscovery), isBlock: false, type: "simple", storageClassType: "string", }, maintenance_window: { value: cdktf.stringToHclTerraform(this._maintenanceWindow), isBlock: false, type: "simple", storageClassType: "string", }, network_type: { value: cdktf.stringToHclTerraform(this._networkType), isBlock: false, type: "simple", storageClassType: "string", }, node_type: { value: cdktf.stringToHclTerraform(this._nodeType), isBlock: false, type: "simple", storageClassType: "string", }, notification_topic_arn: { value: cdktf.stringToHclTerraform(this._notificationTopicArn), isBlock: false, type: "simple", storageClassType: "string", }, num_cache_nodes: { value: cdktf.numberToHclTerraform(this._numCacheNodes), isBlock: false, type: "simple", storageClassType: "number", }, outpost_mode: { value: cdktf.stringToHclTerraform(this._outpostMode), isBlock: false, type: "simple", storageClassType: "string", }, parameter_group_name: { value: cdktf.stringToHclTerraform(this._parameterGroupName), isBlock: false, type: "simple", storageClassType: "string", }, port: { value: cdktf.numberToHclTerraform(this._port), isBlock: false, type: "simple", storageClassType: "number", }, preferred_availability_zones: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._preferredAvailabilityZones), isBlock: false, type: "list", storageClassType: "stringList", }, preferred_outpost_arn: { value: cdktf.stringToHclTerraform(this._preferredOutpostArn), isBlock: false, type: "simple", storageClassType: "string", }, replication_group_id: { value: cdktf.stringToHclTerraform(this._replicationGroupId), isBlock: false, type: "simple", storageClassType: "string", }, security_group_ids: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._securityGroupIds), isBlock: false, type: "set", storageClassType: "stringList", }, snapshot_arns: { value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._snapshotArns), isBlock: false, type: "list", storageClassType: "stringList", }, snapshot_name: { value: cdktf.stringToHclTerraform(this._snapshotName), isBlock: false, type: "simple", storageClassType: "string", }, snapshot_retention_limit: { value: cdktf.numberToHclTerraform(this._snapshotRetentionLimit), isBlock: false, type: "simple", storageClassType: "number", }, snapshot_window: { value: cdktf.stringToHclTerraform(this._snapshotWindow), isBlock: false, type: "simple", storageClassType: "string", }, subnet_group_name: { value: cdktf.stringToHclTerraform(this._subnetGroupName), isBlock: false, type: "simple", storageClassType: "string", }, tags: { value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._tags), isBlock: false, type: "map", storageClassType: "stringMap", }, tags_all: { value: cdktf.hashMapperHcl(cdktf.stringToHclTerraform)(this._tagsAll), isBlock: false, type: "map", storageClassType: "stringMap", }, transit_encryption_enabled: { value: cdktf.booleanToHclTerraform(this._transitEncryptionEnabled), isBlock: false, type: "simple", storageClassType: "boolean", }, log_delivery_configuration: { value: cdktf.listMapperHcl(elasticacheClusterLogDeliveryConfigurationToHclTerraform, true)(this._logDeliveryConfiguration.internalValue), isBlock: true, type: "set", storageClassType: "ElasticacheClusterLogDeliveryConfigurationList", }, }; // remove undefined attributes return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined)); } } exports.ElasticacheCluster = ElasticacheCluster; _e = JSII_RTTI_SYMBOL_1; ElasticacheCluster[_e] = { fqn: "@cdktf/provider-aws.elasticacheCluster.ElasticacheCluster", version: "19.50.0" }; // ================= // STATIC PROPERTIES // ================= ElasticacheCluster.tfResourceType = "aws_elasticache_cluster"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWxhc3RpY2FjaGUtY2x1c3Rlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLCtCQUErQjtBQTBJL0IsU0FBZ0IsdUNBQXVDLENBQUMsTUFBcUM7SUFDM0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDO0lBQUMsQ0FBQztJQUM1RixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0hBQW9ILENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsT0FBTyxFQUNOLENBQUE7QUFDSCxDQUFDO0FBUEQsMEZBT0M7QUFHRCxTQUFnQiwwQ0FBMEMsQ0FBQyxNQUFxQztJQUM5RixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxFQUNiLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFSRCxnR0FRQztBQUVELE1BQWEsMkNBQTRDLFNBQVEsS0FBSyxDQUFDLGFBQWE7SUFHbEY7Ozs7O01BS0U7SUFDRixZQUFtQixpQkFBNkMsRUFBRSxrQkFBMEIsRUFBRSxrQkFBMEIsRUFBRSxzQkFBK0I7UUFDdkos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