@cdktf/provider-aws
Version:
Prebuilt aws Provider for Terraform CDK (cdktf)
1,165 lines • 154 kB
JavaScript
"use strict";
var _a, _b, _c, _d, _e, _f;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Elb = exports.ElbTimeoutsOutputReference = exports.ElbListenerList = exports.ElbListenerOutputReference = exports.ElbHealthCheckOutputReference = exports.ElbAccessLogsOutputReference = void 0;
exports.elbAccessLogsToTerraform = elbAccessLogsToTerraform;
exports.elbAccessLogsToHclTerraform = elbAccessLogsToHclTerraform;
exports.elbHealthCheckToTerraform = elbHealthCheckToTerraform;
exports.elbHealthCheckToHclTerraform = elbHealthCheckToHclTerraform;
exports.elbListenerToTerraform = elbListenerToTerraform;
exports.elbListenerToHclTerraform = elbListenerToHclTerraform;
exports.elbTimeoutsToTerraform = elbTimeoutsToTerraform;
exports.elbTimeoutsToHclTerraform = elbTimeoutsToHclTerraform;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const cdktf = require("cdktf");
function elbAccessLogsToTerraform(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 {
bucket: cdktf.stringToTerraform(struct.bucket),
bucket_prefix: cdktf.stringToTerraform(struct.bucketPrefix),
enabled: cdktf.booleanToTerraform(struct.enabled),
interval: cdktf.numberToTerraform(struct.interval),
};
}
function elbAccessLogsToHclTerraform(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 = {
bucket: {
value: cdktf.stringToHclTerraform(struct.bucket),
isBlock: false,
type: "simple",
storageClassType: "string",
},
bucket_prefix: {
value: cdktf.stringToHclTerraform(struct.bucketPrefix),
isBlock: false,
type: "simple",
storageClassType: "string",
},
enabled: {
value: cdktf.booleanToHclTerraform(struct.enabled),
isBlock: false,
type: "simple",
storageClassType: "boolean",
},
interval: {
value: cdktf.numberToHclTerraform(struct.interval),
isBlock: false,
type: "simple",
storageClassType: "number",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
class ElbAccessLogsOutputReference extends cdktf.ComplexObject {
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource, terraformAttribute) {
super(terraformResource, terraformAttribute, false, 0);
this.isEmptyObject = false;
}
get internalValue() {
let hasAnyValues = this.isEmptyObject;
const internalValueResult = {};
if (this._bucket !== undefined) {
hasAnyValues = true;
internalValueResult.bucket = this._bucket;
}
if (this._bucketPrefix !== undefined) {
hasAnyValues = true;
internalValueResult.bucketPrefix = this._bucketPrefix;
}
if (this._enabled !== undefined) {
hasAnyValues = true;
internalValueResult.enabled = this._enabled;
}
if (this._interval !== undefined) {
hasAnyValues = true;
internalValueResult.interval = this._interval;
}
return hasAnyValues ? internalValueResult : undefined;
}
set internalValue(value) {
if (value === undefined) {
this.isEmptyObject = false;
this._bucket = undefined;
this._bucketPrefix = undefined;
this._enabled = undefined;
this._interval = undefined;
}
else {
this.isEmptyObject = Object.keys(value).length === 0;
this._bucket = value.bucket;
this._bucketPrefix = value.bucketPrefix;
this._enabled = value.enabled;
this._interval = value.interval;
}
}
get bucket() {
return this.getStringAttribute('bucket');
}
set bucket(value) {
this._bucket = value;
}
// Temporarily expose input value. Use with caution.
get bucketInput() {
return this._bucket;
}
get bucketPrefix() {
return this.getStringAttribute('bucket_prefix');
}
set bucketPrefix(value) {
this._bucketPrefix = value;
}
resetBucketPrefix() {
this._bucketPrefix = undefined;
}
// Temporarily expose input value. Use with caution.
get bucketPrefixInput() {
return this._bucketPrefix;
}
get enabled() {
return this.getBooleanAttribute('enabled');
}
set enabled(value) {
this._enabled = value;
}
resetEnabled() {
this._enabled = undefined;
}
// Temporarily expose input value. Use with caution.
get enabledInput() {
return this._enabled;
}
get interval() {
return this.getNumberAttribute('interval');
}
set interval(value) {
this._interval = value;
}
resetInterval() {
this._interval = undefined;
}
// Temporarily expose input value. Use with caution.
get intervalInput() {
return this._interval;
}
}
exports.ElbAccessLogsOutputReference = ElbAccessLogsOutputReference;
_a = JSII_RTTI_SYMBOL_1;
ElbAccessLogsOutputReference[_a] = { fqn: "@cdktf/provider-aws.elb.ElbAccessLogsOutputReference", version: "21.22.1" };
function elbHealthCheckToTerraform(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 {
healthy_threshold: cdktf.numberToTerraform(struct.healthyThreshold),
interval: cdktf.numberToTerraform(struct.interval),
target: cdktf.stringToTerraform(struct.target),
timeout: cdktf.numberToTerraform(struct.timeout),
unhealthy_threshold: cdktf.numberToTerraform(struct.unhealthyThreshold),
};
}
function elbHealthCheckToHclTerraform(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 = {
healthy_threshold: {
value: cdktf.numberToHclTerraform(struct.healthyThreshold),
isBlock: false,
type: "simple",
storageClassType: "number",
},
interval: {
value: cdktf.numberToHclTerraform(struct.interval),
isBlock: false,
type: "simple",
storageClassType: "number",
},
target: {
value: cdktf.stringToHclTerraform(struct.target),
isBlock: false,
type: "simple",
storageClassType: "string",
},
timeout: {
value: cdktf.numberToHclTerraform(struct.timeout),
isBlock: false,
type: "simple",
storageClassType: "number",
},
unhealthy_threshold: {
value: cdktf.numberToHclTerraform(struct.unhealthyThreshold),
isBlock: false,
type: "simple",
storageClassType: "number",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
class ElbHealthCheckOutputReference extends cdktf.ComplexObject {
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource, terraformAttribute) {
super(terraformResource, terraformAttribute, false, 0);
this.isEmptyObject = false;
}
get internalValue() {
let hasAnyValues = this.isEmptyObject;
const internalValueResult = {};
if (this._healthyThreshold !== undefined) {
hasAnyValues = true;
internalValueResult.healthyThreshold = this._healthyThreshold;
}
if (this._interval !== undefined) {
hasAnyValues = true;
internalValueResult.interval = this._interval;
}
if (this._target !== undefined) {
hasAnyValues = true;
internalValueResult.target = this._target;
}
if (this._timeout !== undefined) {
hasAnyValues = true;
internalValueResult.timeout = this._timeout;
}
if (this._unhealthyThreshold !== undefined) {
hasAnyValues = true;
internalValueResult.unhealthyThreshold = this._unhealthyThreshold;
}
return hasAnyValues ? internalValueResult : undefined;
}
set internalValue(value) {
if (value === undefined) {
this.isEmptyObject = false;
this._healthyThreshold = undefined;
this._interval = undefined;
this._target = undefined;
this._timeout = undefined;
this._unhealthyThreshold = undefined;
}
else {
this.isEmptyObject = Object.keys(value).length === 0;
this._healthyThreshold = value.healthyThreshold;
this._interval = value.interval;
this._target = value.target;
this._timeout = value.timeout;
this._unhealthyThreshold = value.unhealthyThreshold;
}
}
get healthyThreshold() {
return this.getNumberAttribute('healthy_threshold');
}
set healthyThreshold(value) {
this._healthyThreshold = value;
}
// Temporarily expose input value. Use with caution.
get healthyThresholdInput() {
return this._healthyThreshold;
}
get interval() {
return this.getNumberAttribute('interval');
}
set interval(value) {
this._interval = value;
}
// Temporarily expose input value. Use with caution.
get intervalInput() {
return this._interval;
}
get target() {
return this.getStringAttribute('target');
}
set target(value) {
this._target = value;
}
// Temporarily expose input value. Use with caution.
get targetInput() {
return this._target;
}
get timeout() {
return this.getNumberAttribute('timeout');
}
set timeout(value) {
this._timeout = value;
}
// Temporarily expose input value. Use with caution.
get timeoutInput() {
return this._timeout;
}
get unhealthyThreshold() {
return this.getNumberAttribute('unhealthy_threshold');
}
set unhealthyThreshold(value) {
this._unhealthyThreshold = value;
}
// Temporarily expose input value. Use with caution.
get unhealthyThresholdInput() {
return this._unhealthyThreshold;
}
}
exports.ElbHealthCheckOutputReference = ElbHealthCheckOutputReference;
_b = JSII_RTTI_SYMBOL_1;
ElbHealthCheckOutputReference[_b] = { fqn: "@cdktf/provider-aws.elb.ElbHealthCheckOutputReference", version: "21.22.1" };
function elbListenerToTerraform(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 {
instance_port: cdktf.numberToTerraform(struct.instancePort),
instance_protocol: cdktf.stringToTerraform(struct.instanceProtocol),
lb_port: cdktf.numberToTerraform(struct.lbPort),
lb_protocol: cdktf.stringToTerraform(struct.lbProtocol),
ssl_certificate_id: cdktf.stringToTerraform(struct.sslCertificateId),
};
}
function elbListenerToHclTerraform(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 = {
instance_port: {
value: cdktf.numberToHclTerraform(struct.instancePort),
isBlock: false,
type: "simple",
storageClassType: "number",
},
instance_protocol: {
value: cdktf.stringToHclTerraform(struct.instanceProtocol),
isBlock: false,
type: "simple",
storageClassType: "string",
},
lb_port: {
value: cdktf.numberToHclTerraform(struct.lbPort),
isBlock: false,
type: "simple",
storageClassType: "number",
},
lb_protocol: {
value: cdktf.stringToHclTerraform(struct.lbProtocol),
isBlock: false,
type: "simple",
storageClassType: "string",
},
ssl_certificate_id: {
value: cdktf.stringToHclTerraform(struct.sslCertificateId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
class ElbListenerOutputReference 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._instancePort !== undefined) {
hasAnyValues = true;
internalValueResult.instancePort = this._instancePort;
}
if (this._instanceProtocol !== undefined) {
hasAnyValues = true;
internalValueResult.instanceProtocol = this._instanceProtocol;
}
if (this._lbPort !== undefined) {
hasAnyValues = true;
internalValueResult.lbPort = this._lbPort;
}
if (this._lbProtocol !== undefined) {
hasAnyValues = true;
internalValueResult.lbProtocol = this._lbProtocol;
}
if (this._sslCertificateId !== undefined) {
hasAnyValues = true;
internalValueResult.sslCertificateId = this._sslCertificateId;
}
return hasAnyValues ? internalValueResult : undefined;
}
set internalValue(value) {
if (value === undefined) {
this.isEmptyObject = false;
this.resolvableValue = undefined;
this._instancePort = undefined;
this._instanceProtocol = undefined;
this._lbPort = undefined;
this._lbProtocol = undefined;
this._sslCertificateId = 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._instancePort = value.instancePort;
this._instanceProtocol = value.instanceProtocol;
this._lbPort = value.lbPort;
this._lbProtocol = value.lbProtocol;
this._sslCertificateId = value.sslCertificateId;
}
}
get instancePort() {
return this.getNumberAttribute('instance_port');
}
set instancePort(value) {
this._instancePort = value;
}
// Temporarily expose input value. Use with caution.
get instancePortInput() {
return this._instancePort;
}
get instanceProtocol() {
return this.getStringAttribute('instance_protocol');
}
set instanceProtocol(value) {
this._instanceProtocol = value;
}
// Temporarily expose input value. Use with caution.
get instanceProtocolInput() {
return this._instanceProtocol;
}
get lbPort() {
return this.getNumberAttribute('lb_port');
}
set lbPort(value) {
this._lbPort = value;
}
// Temporarily expose input value. Use with caution.
get lbPortInput() {
return this._lbPort;
}
get lbProtocol() {
return this.getStringAttribute('lb_protocol');
}
set lbProtocol(value) {
this._lbProtocol = value;
}
// Temporarily expose input value. Use with caution.
get lbProtocolInput() {
return this._lbProtocol;
}
get sslCertificateId() {
return this.getStringAttribute('ssl_certificate_id');
}
set sslCertificateId(value) {
this._sslCertificateId = value;
}
resetSslCertificateId() {
this._sslCertificateId = undefined;
}
// Temporarily expose input value. Use with caution.
get sslCertificateIdInput() {
return this._sslCertificateId;
}
}
exports.ElbListenerOutputReference = ElbListenerOutputReference;
_c = JSII_RTTI_SYMBOL_1;
ElbListenerOutputReference[_c] = { fqn: "@cdktf/provider-aws.elb.ElbListenerOutputReference", version: "21.22.1" };
class ElbListenerList 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 ElbListenerOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet);
}
}
exports.ElbListenerList = ElbListenerList;
_d = JSII_RTTI_SYMBOL_1;
ElbListenerList[_d] = { fqn: "@cdktf/provider-aws.elb.ElbListenerList", version: "21.22.1" };
function elbTimeoutsToTerraform(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 {
create: cdktf.stringToTerraform(struct.create),
update: cdktf.stringToTerraform(struct.update),
};
}
function elbTimeoutsToHclTerraform(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 = {
create: {
value: cdktf.stringToHclTerraform(struct.create),
isBlock: false,
type: "simple",
storageClassType: "string",
},
update: {
value: cdktf.stringToHclTerraform(struct.update),
isBlock: false,
type: "simple",
storageClassType: "string",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
class ElbTimeoutsOutputReference extends cdktf.ComplexObject {
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource, terraformAttribute) {
super(terraformResource, terraformAttribute, false);
this.isEmptyObject = false;
}
get internalValue() {
if (this.resolvableValue) {
return this.resolvableValue;
}
let hasAnyValues = this.isEmptyObject;
const internalValueResult = {};
if (this._create !== undefined) {
hasAnyValues = true;
internalValueResult.create = this._create;
}
if (this._update !== undefined) {
hasAnyValues = true;
internalValueResult.update = this._update;
}
return hasAnyValues ? internalValueResult : undefined;
}
set internalValue(value) {
if (value === undefined) {
this.isEmptyObject = false;
this.resolvableValue = undefined;
this._create = undefined;
this._update = 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._create = value.create;
this._update = value.update;
}
}
get create() {
return this.getStringAttribute('create');
}
set create(value) {
this._create = value;
}
resetCreate() {
this._create = undefined;
}
// Temporarily expose input value. Use with caution.
get createInput() {
return this._create;
}
get update() {
return this.getStringAttribute('update');
}
set update(value) {
this._update = value;
}
resetUpdate() {
this._update = undefined;
}
// Temporarily expose input value. Use with caution.
get updateInput() {
return this._update;
}
}
exports.ElbTimeoutsOutputReference = ElbTimeoutsOutputReference;
_e = JSII_RTTI_SYMBOL_1;
ElbTimeoutsOutputReference[_e] = { fqn: "@cdktf/provider-aws.elb.ElbTimeoutsOutputReference", version: "21.22.1" };
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb aws_elb}
*/
class Elb extends cdktf.TerraformResource {
// ==============
// STATIC Methods
// ==============
/**
* Generates CDKTF code for importing a Elb 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 Elb to import
* @param importFromId The id of the existing Elb that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb#import import section} in the documentation of this resource for the id to use
* @param provider? Optional instance of the provider where the Elb to import is found
*/
static generateConfigForImport(scope, importToId, importFromId, provider) {
return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "aws_elb", importId: importFromId, provider });
}
// ===========
// INITIALIZER
// ===========
/**
* Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/elb aws_elb} 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 ElbConfig
*/
constructor(scope, id, config) {
super(scope, id, {
terraformResourceType: 'aws_elb',
terraformGeneratorMetadata: {
providerName: 'aws',
providerVersion: '6.25.0',
providerVersionConstraint: '~> 6.0'
},
provider: config.provider,
dependsOn: config.dependsOn,
count: config.count,
lifecycle: config.lifecycle,
provisioners: config.provisioners,
connection: config.connection,
forEach: config.forEach
});
// access_logs - computed: false, optional: true, required: false
this._accessLogs = new ElbAccessLogsOutputReference(this, "access_logs");
// health_check - computed: false, optional: true, required: false
this._healthCheck = new ElbHealthCheckOutputReference(this, "health_check");
// listener - computed: false, optional: false, required: true
this._listener = new ElbListenerList(this, "listener", true);
// timeouts - computed: false, optional: true, required: false
this._timeouts = new ElbTimeoutsOutputReference(this, "timeouts");
this._availabilityZones = config.availabilityZones;
this._connectionDraining = config.connectionDraining;
this._connectionDrainingTimeout = config.connectionDrainingTimeout;
this._crossZoneLoadBalancing = config.crossZoneLoadBalancing;
this._desyncMitigationMode = config.desyncMitigationMode;
this._id = config.id;
this._idleTimeout = config.idleTimeout;
this._instances = config.instances;
this._internal = config.internal;
this._name = config.name;
this._namePrefix = config.namePrefix;
this._region = config.region;
this._securityGroups = config.securityGroups;
this._sourceSecurityGroup = config.sourceSecurityGroup;
this._subnets = config.subnets;
this._tags = config.tags;
this._tagsAll = config.tagsAll;
this._accessLogs.internalValue = config.accessLogs;
this._healthCheck.internalValue = config.healthCheck;
this._listener.internalValue = config.listener;
this._timeouts.internalValue = config.timeouts;
}
// ==========
// ATTRIBUTES
// ==========
// arn - computed: true, optional: false, required: false
get arn() {
return this.getStringAttribute('arn');
}
get availabilityZones() {
return cdktf.Fn.tolist(this.getListAttribute('availability_zones'));
}
set availabilityZones(value) {
this._availabilityZones = value;
}
resetAvailabilityZones() {
this._availabilityZones = undefined;
}
// Temporarily expose input value. Use with caution.
get availabilityZonesInput() {
return this._availabilityZones;
}
get connectionDraining() {
return this.getBooleanAttribute('connection_draining');
}
set connectionDraining(value) {
this._connectionDraining = value;
}
resetConnectionDraining() {
this._connectionDraining = undefined;
}
// Temporarily expose input value. Use with caution.
get connectionDrainingInput() {
return this._connectionDraining;
}
get connectionDrainingTimeout() {
return this.getNumberAttribute('connection_draining_timeout');
}
set connectionDrainingTimeout(value) {
this._connectionDrainingTimeout = value;
}
resetConnectionDrainingTimeout() {
this._connectionDrainingTimeout = undefined;
}
// Temporarily expose input value. Use with caution.
get connectionDrainingTimeoutInput() {
return this._connectionDrainingTimeout;
}
get crossZoneLoadBalancing() {
return this.getBooleanAttribute('cross_zone_load_balancing');
}
set crossZoneLoadBalancing(value) {
this._crossZoneLoadBalancing = value;
}
resetCrossZoneLoadBalancing() {
this._crossZoneLoadBalancing = undefined;
}
// Temporarily expose input value. Use with caution.
get crossZoneLoadBalancingInput() {
return this._crossZoneLoadBalancing;
}
get desyncMitigationMode() {
return this.getStringAttribute('desync_mitigation_mode');
}
set desyncMitigationMode(value) {
this._desyncMitigationMode = value;
}
resetDesyncMitigationMode() {
this._desyncMitigationMode = undefined;
}
// Temporarily expose input value. Use with caution.
get desyncMitigationModeInput() {
return this._desyncMitigationMode;
}
// dns_name - computed: true, optional: false, required: false
get dnsName() {
return this.getStringAttribute('dns_name');
}
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 idleTimeout() {
return this.getNumberAttribute('idle_timeout');
}
set idleTimeout(value) {
this._idleTimeout = value;
}
resetIdleTimeout() {
this._idleTimeout = undefined;
}
// Temporarily expose input value. Use with caution.
get idleTimeoutInput() {
return this._idleTimeout;
}
get instances() {
return cdktf.Fn.tolist(this.getListAttribute('instances'));
}
set instances(value) {
this._instances = value;
}
resetInstances() {
this._instances = undefined;
}
// Temporarily expose input value. Use with caution.
get instancesInput() {
return this._instances;
}
get internal() {
return this.getBooleanAttribute('internal');
}
set internal(value) {
this._internal = value;
}
resetInternal() {
this._internal = undefined;
}
// Temporarily expose input value. Use with caution.
get internalInput() {
return this._internal;
}
get name() {
return this.getStringAttribute('name');
}
set name(value) {
this._name = value;
}
resetName() {
this._name = undefined;
}
// Temporarily expose input value. Use with caution.
get nameInput() {
return this._name;
}
get namePrefix() {
return this.getStringAttribute('name_prefix');
}
set namePrefix(value) {
this._namePrefix = value;
}
resetNamePrefix() {
this._namePrefix = undefined;
}
// Temporarily expose input value. Use with caution.
get namePrefixInput() {
return this._namePrefix;
}
get region() {
return this.getStringAttribute('region');
}
set region(value) {
this._region = value;
}
resetRegion() {
this._region = undefined;
}
// Temporarily expose input value. Use with caution.
get regionInput() {
return this._region;
}
get securityGroups() {
return cdktf.Fn.tolist(this.getListAttribute('security_groups'));
}
set securityGroups(value) {
this._securityGroups = value;
}
resetSecurityGroups() {
this._securityGroups = undefined;
}
// Temporarily expose input value. Use with caution.
get securityGroupsInput() {
return this._securityGroups;
}
get sourceSecurityGroup() {
return this.getStringAttribute('source_security_group');
}
set sourceSecurityGroup(value) {
this._sourceSecurityGroup = value;
}
resetSourceSecurityGroup() {
this._sourceSecurityGroup = undefined;
}
// Temporarily expose input value. Use with caution.
get sourceSecurityGroupInput() {
return this._sourceSecurityGroup;
}
// source_security_group_id - computed: true, optional: false, required: false
get sourceSecurityGroupId() {
return this.getStringAttribute('source_security_group_id');
}
get subnets() {
return cdktf.Fn.tolist(this.getListAttribute('subnets'));
}
set subnets(value) {
this._subnets = value;
}
resetSubnets() {
this._subnets = undefined;
}
// Temporarily expose input value. Use with caution.
get subnetsInput() {
return this._subnets;
}
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;
}
// zone_id - computed: true, optional: false, required: false
get zoneId() {
return this.getStringAttribute('zone_id');
}
get accessLogs() {
return this._accessLogs;
}
putAccessLogs(value) {
this._accessLogs.internalValue = value;
}
resetAccessLogs() {
this._accessLogs.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get accessLogsInput() {
return this._accessLogs.internalValue;
}
get healthCheck() {
return this._healthCheck;
}
putHealthCheck(value) {
this._healthCheck.internalValue = value;
}
resetHealthCheck() {
this._healthCheck.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get healthCheckInput() {
return this._healthCheck.internalValue;
}
get listener() {
return this._listener;
}
putListener(value) {
this._listener.internalValue = value;
}
// Temporarily expose input value. Use with caution.
get listenerInput() {
return this._listener.internalValue;
}
get timeouts() {
return this._timeouts;
}
putTimeouts(value) {
this._timeouts.internalValue = value;
}
resetTimeouts() {
this._timeouts.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get timeoutsInput() {
return this._timeouts.internalValue;
}
// =========
// SYNTHESIS
// =========
synthesizeAttributes() {
return {
availability_zones: cdktf.listMapper(cdktf.stringToTerraform, false)(this._availabilityZones),
connection_draining: cdktf.booleanToTerraform(this._connectionDraining),
connection_draining_timeout: cdktf.numberToTerraform(this._connectionDrainingTimeout),
cross_zone_load_balancing: cdktf.booleanToTerraform(this._crossZoneLoadBalancing),
desync_mitigation_mode: cdktf.stringToTerraform(this._desyncMitigationMode),
id: cdktf.stringToTerraform(this._id),
idle_timeout: cdktf.numberToTerraform(this._idleTimeout),
instances: cdktf.listMapper(cdktf.stringToTerraform, false)(this._instances),
internal: cdktf.booleanToTerraform(this._internal),
name: cdktf.stringToTerraform(this._name),
name_prefix: cdktf.stringToTerraform(this._namePrefix),
region: cdktf.stringToTerraform(this._region),
security_groups: cdktf.listMapper(cdktf.stringToTerraform, false)(this._securityGroups),
source_security_group: cdktf.stringToTerraform(this._sourceSecurityGroup),
subnets: cdktf.listMapper(cdktf.stringToTerraform, false)(this._subnets),
tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
access_logs: elbAccessLogsToTerraform(this._accessLogs.internalValue),
health_check: elbHealthCheckToTerraform(this._healthCheck.internalValue),
listener: cdktf.listMapper(elbListenerToTerraform, true)(this._listener.internalValue),
timeouts: elbTimeoutsToTerraform(this._timeouts.internalValue),
};
}
synthesizeHclAttributes() {
const attrs = {
availability_zones: {
value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._availabilityZones),
isBlock: false,
type: "set",
storageClassType: "stringList",
},
connection_draining: {
value: cdktf.booleanToHclTerraform(this._connectionDraining),
isBlock: false,
type: "simple",
storageClassType: "boolean",
},
connection_draining_timeout: {
value: cdktf.numberToHclTerraform(this._connectionDrainingTimeout),
isBlock: false,
type: "simple",
storageClassType: "number",
},
cross_zone_load_balancing: {
value: cdktf.booleanToHclTerraform(this._crossZoneLoadBalancing),
isBlock: false,
type: "simple",
storageClassType: "boolean",
},
desync_mitigation_mode: {
value: cdktf.stringToHclTerraform(this._desyncMitigationMode),
isBlock: false,
type: "simple",
storageClassType: "string",
},
id: {
value: cdktf.stringToHclTerraform(this._id),
isBlock: false,
type: "simple",
storageClassType: "string",
},
idle_timeout: {
value: cdktf.numberToHclTerraform(this._idleTimeout),
isBlock: false,
type: "simple",
storageClassType: "number",
},
instances: {
value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._instances),
isBlock: false,
type: "set",
storageClassType: "stringList",
},
internal: {
value: cdktf.booleanToHclTerraform(this._internal),
isBlock: false,
type: "simple",
storageClassType: "boolean",
},
name: {
value: cdktf.stringToHclTerraform(this._name),
isBlock: false,
type: "simple",
storageClassType: "string",
},
name_prefix: {
value: cdktf.stringToHclTerraform(this._namePrefix),
isBlock: false,
type: "simple",
storageClassType: "string",
},
region: {
value: cdktf.stringToHclTerraform(this._region),
isBlock: false,
type: "simple",
storageClassType: "string",
},
security_groups: {
value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._securityGroups),
isBlock: false,
type: "set",
storageClassType: "stringList",
},
source_security_group: {
value: cdktf.stringToHclTerraform(this._sourceSecurityGroup),
isBlock: false,
type: "simple",
storageClassType: "string",
},
subnets: {
value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._subnets),
isBlock: false,
type: "set",
storageClassType: "stringList",
},
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",
},
access_logs: {
value: elbAccessLogsToHclTerraform(this._accessLogs.internalValue),
isBlock: true,
type: "list",
storageClassType: "ElbAccessLogsList",
},
health_check: {
value: elbHealthCheckToHclTerraform(this._healthCheck.internalValue),
isBlock: true,
type: "list",
storageClassType: "ElbHealthCheckList",
},
listener: {
value: cdktf.listMapperHcl(elbListenerToHclTerraform, true)(this._listener.internalValue),
isBlock: true,
type: "set",
storageClassType: "ElbListenerList",
},
timeouts: {
value: elbTimeoutsToHclTerraform(this._timeouts.internalValue),
isBlock: true,
type: "struct",
storageClassType: "ElbTimeouts",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
}
exports.Elb = Elb;
_f = JSII_RTTI_SYMBOL_1;
Elb[_f] = { fqn: "@cdktf/provider-aws.elb.Elb", version: "21.22.1" };
// =================
// STATIC PROPERTIES
// =================
Elb.tfResourceType = "aws_elb";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWxiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFtSUEsNERBV0M7QUFHRCxrRUFrQ0M7QUF3SUQsOERBWUM7QUFHRCxvRUF3Q0M7QUFrSkQsd0RBWUM7QUFHRCw4REF3Q0M7QUF5S0Qsd0RBU0M7QUFHRCw4REFzQkM7O0FBN3ZCRCwrQkFBK0I7QUEwSC9CLFNBQWdCLHdCQUF3QixDQUFDLE1BQXFEO0lBQzVGLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUM7UUFDL0MsYUFBYSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsWUFBWSxDQUFDO1FBQzVELE9BQU8sRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTyxDQUFDLE9BQU8sQ0FBQztRQUNsRCxRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxRQUFRLENBQUM7S0FDcEQsQ0FBQTtBQUNILENBQUM7QUFHRCxTQUFnQiwyQkFBMkIsQ0FBQyxNQUFxRDtJQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENB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