io.cloudshiftdev.awscdk.services.servicediscovery.CfnInstance.kt Maven / Gradle / Ivy
The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package io.cloudshiftdev.awscdk.services.servicediscovery
import io.cloudshiftdev.awscdk.CfnResource
import io.cloudshiftdev.awscdk.IInspectable
import io.cloudshiftdev.awscdk.TreeInspector
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import kotlin.Any
import kotlin.String
import kotlin.Unit
import io.cloudshiftdev.constructs.Construct as CloudshiftdevConstructsConstruct
import software.constructs.Construct as SoftwareConstructsConstruct
/**
* A complex type that contains information about an instance that AWS Cloud Map creates when you
* submit a `RegisterInstance` request.
*
* Example:
*
* ```
* // The code below shows an example of how to instantiate this type.
* // The values are placeholders you should change.
* import io.cloudshiftdev.awscdk.services.servicediscovery.*;
* Object instanceAttributes;
* CfnInstance cfnInstance = CfnInstance.Builder.create(this, "MyCfnInstance")
* .instanceAttributes(instanceAttributes)
* .serviceId("serviceId")
* // the properties below are optional
* .instanceId("instanceId")
* .build();
* ```
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html)
*/
public open class CfnInstance(
cdkObject: software.amazon.awscdk.services.servicediscovery.CfnInstance,
) : CfnResource(cdkObject),
IInspectable {
public constructor(
scope: CloudshiftdevConstructsConstruct,
id: String,
props: CfnInstanceProps,
) :
this(software.amazon.awscdk.services.servicediscovery.CfnInstance(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
id, props.let(CfnInstanceProps.Companion::unwrap))
)
public constructor(
scope: CloudshiftdevConstructsConstruct,
id: String,
props: CfnInstanceProps.Builder.() -> Unit,
) : this(scope, id, CfnInstanceProps(props)
)
/**
* Examines the CloudFormation resource and discloses attributes.
*
* @param inspector tree inspector to collect and process attributes.
*/
public override fun inspect(inspector: TreeInspector) {
unwrap(this).inspect(inspector.let(TreeInspector.Companion::unwrap))
}
/**
* A string map that contains the following information for the service that you specify in
* `ServiceId` :.
*/
public open fun instanceAttributes(): Any = unwrap(this).getInstanceAttributes()
/**
* A string map that contains the following information for the service that you specify in
* `ServiceId` :.
*/
public open fun instanceAttributes(`value`: Any) {
unwrap(this).setInstanceAttributes(`value`)
}
/**
* An identifier that you want to associate with the instance.
*
* Note the following:.
*/
public open fun instanceId(): String? = unwrap(this).getInstanceId()
/**
* An identifier that you want to associate with the instance.
*
* Note the following:.
*/
public open fun instanceId(`value`: String) {
unwrap(this).setInstanceId(`value`)
}
/**
* The ID of the service that you want to use for settings for the instance.
*/
public open fun serviceId(): String = unwrap(this).getServiceId()
/**
* The ID of the service that you want to use for settings for the instance.
*/
public open fun serviceId(`value`: String) {
unwrap(this).setServiceId(`value`)
}
/**
* A fluent builder for [io.cloudshiftdev.awscdk.services.servicediscovery.CfnInstance].
*/
@CdkDslMarker
public interface Builder {
/**
* A string map that contains the following information for the service that you specify in
* `ServiceId` :.
*
* * The attributes that apply to the records that are defined in the service.
* * For each attribute, the applicable value.
*
* Supported attribute keys include the following:
*
* * **AWS_ALIAS_DNS_NAME** - If you want AWS Cloud Map to create a Route 53 alias record that
* routes traffic to an Elastic Load Balancing load balancer, specify the DNS name that is
* associated with the load balancer. For information about how to get the DNS name, see
* [AliasTarget->DNSName](https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-DNSName)
* in the *Route 53 API Reference* .
*
* Note the following:
*
* * The configuration for the service that is specified by `ServiceId` must include settings
* for an `A` record, an `AAAA` record, or both.
* * In the service that is specified by `ServiceId` , the value of `RoutingPolicy` must be
* `WEIGHTED` .
* * If the service that is specified by `ServiceId` includes `HealthCheckConfig` settings, AWS
* Cloud Map will create the health check, but it won't associate the health check with the alias
* record.
* * Auto naming currently doesn't support creating alias records that route traffic to AWS
* resources other than ELB load balancers.
* * If you specify a value for `AWS_ALIAS_DNS_NAME` , don't specify values for any of the
* `AWS_INSTANCE` attributes.
* * **AWS_EC2_INSTANCE_ID** - *HTTP namespaces only.* The Amazon EC2 instance ID for the
* instance. The `AWS_INSTANCE_IPV4` attribute contains the primary private IPv4 address. When
* creating resources with a type of
* [AWS::ServiceDiscovery::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html)
* , if the `AWS_EC2_INSTANCE_ID` attribute is specified, the only other attribute that can be
* specified is `AWS_INIT_HEALTH_STATUS` . After the resource has been created, the
* `AWS_INSTANCE_IPV4` attribute contains the primary private IPv4 address.
* * **AWS_INIT_HEALTH_STATUS** - If the service configuration includes
* `HealthCheckCustomConfig` , when creating resources with a type of
* [AWS::ServiceDiscovery::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html)
* you can optionally use `AWS_INIT_HEALTH_STATUS` to specify the initial status of the custom
* health check, `HEALTHY` or `UNHEALTHY` . If you don't specify a value for
* `AWS_INIT_HEALTH_STATUS` , the initial status is `HEALTHY` . This attribute can only be used
* when creating resources and will not be seen on existing resources.
* * **AWS_INSTANCE_CNAME** - If the service configuration includes a `CNAME` record, the domain
* name that you want Route 53 to return in response to DNS queries, for example, `example.com` .
*
* This value is required if the service specified by `ServiceId` includes settings for an
* `CNAME` record.
*
* * **AWS_INSTANCE_IPV4** - If the service configuration includes an `A` record, the IPv4
* address that you want Route 53 to return in response to DNS queries, for example, `192.0.2.44` .
*
* This value is required if the service specified by `ServiceId` includes settings for an `A`
* record. If the service includes settings for an `SRV` record, you must specify a value for
* `AWS_INSTANCE_IPV4` , `AWS_INSTANCE_IPV6` , or both.
*
* * **AWS_INSTANCE_IPV6** - If the service configuration includes an `AAAA` record, the IPv6
* address that you want Route 53 to return in response to DNS queries, for example,
* `2001:0db8:85a3:0000:0000:abcd:0001:2345` .
*
* This value is required if the service specified by `ServiceId` includes settings for an
* `AAAA` record. If the service includes settings for an `SRV` record, you must specify a value
* for `AWS_INSTANCE_IPV4` , `AWS_INSTANCE_IPV6` , or both.
*
* * **AWS_INSTANCE_PORT** - If the service includes an `SRV` record, the value that you want
* Route 53 to return for the port.
*
* If the service includes `HealthCheckConfig` , the port on the endpoint that you want Route 53
* to send requests to.
*
* This value is required if you specified settings for an `SRV` record or a Route 53 health
* check when you created the service.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-instanceattributes)
* @param instanceAttributes A string map that contains the following information for the
* service that you specify in `ServiceId` :.
*/
public fun instanceAttributes(instanceAttributes: Any)
/**
* An identifier that you want to associate with the instance. Note the following:.
*
* * If the service that's specified by `ServiceId` includes settings for an `SRV` record, the
* value of `InstanceId` is automatically included as part of the value for the `SRV` record. For
* more information, see [DnsRecord >
* Type](https://docs.aws.amazon.com/cloud-map/latest/api/API_DnsRecord.html#cloudmap-Type-DnsRecord-Type)
* .
* * You can use this value to update an existing instance.
* * To register a new instance, you must specify a value that's unique among instances that you
* register by using the same service.
* * If you specify an existing `InstanceId` and `ServiceId` , AWS Cloud Map updates the
* existing DNS records, if any. If there's also an existing health check, AWS Cloud Map deletes
* the old health check and creates a new one.
*
*
* The health check isn't deleted immediately, so it will still appear for a while if you submit
* a `ListHealthChecks` request, for example.
*
*
*
* Do not include sensitive information in `InstanceId` if the namespace is discoverable by
* public DNS queries and any `Type` member of `DnsRecord` for the service contains `SRV` because
* the `InstanceId` is discoverable by public DNS queries.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-instanceid)
* @param instanceId An identifier that you want to associate with the instance. Note the
* following:.
*/
public fun instanceId(instanceId: String)
/**
* The ID of the service that you want to use for settings for the instance.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-serviceid)
* @param serviceId The ID of the service that you want to use for settings for the instance.
*/
public fun serviceId(serviceId: String)
}
private class BuilderImpl(
scope: SoftwareConstructsConstruct,
id: String,
) : Builder {
private val cdkBuilder: software.amazon.awscdk.services.servicediscovery.CfnInstance.Builder =
software.amazon.awscdk.services.servicediscovery.CfnInstance.Builder.create(scope, id)
/**
* A string map that contains the following information for the service that you specify in
* `ServiceId` :.
*
* * The attributes that apply to the records that are defined in the service.
* * For each attribute, the applicable value.
*
* Supported attribute keys include the following:
*
* * **AWS_ALIAS_DNS_NAME** - If you want AWS Cloud Map to create a Route 53 alias record that
* routes traffic to an Elastic Load Balancing load balancer, specify the DNS name that is
* associated with the load balancer. For information about how to get the DNS name, see
* [AliasTarget->DNSName](https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-DNSName)
* in the *Route 53 API Reference* .
*
* Note the following:
*
* * The configuration for the service that is specified by `ServiceId` must include settings
* for an `A` record, an `AAAA` record, or both.
* * In the service that is specified by `ServiceId` , the value of `RoutingPolicy` must be
* `WEIGHTED` .
* * If the service that is specified by `ServiceId` includes `HealthCheckConfig` settings, AWS
* Cloud Map will create the health check, but it won't associate the health check with the alias
* record.
* * Auto naming currently doesn't support creating alias records that route traffic to AWS
* resources other than ELB load balancers.
* * If you specify a value for `AWS_ALIAS_DNS_NAME` , don't specify values for any of the
* `AWS_INSTANCE` attributes.
* * **AWS_EC2_INSTANCE_ID** - *HTTP namespaces only.* The Amazon EC2 instance ID for the
* instance. The `AWS_INSTANCE_IPV4` attribute contains the primary private IPv4 address. When
* creating resources with a type of
* [AWS::ServiceDiscovery::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html)
* , if the `AWS_EC2_INSTANCE_ID` attribute is specified, the only other attribute that can be
* specified is `AWS_INIT_HEALTH_STATUS` . After the resource has been created, the
* `AWS_INSTANCE_IPV4` attribute contains the primary private IPv4 address.
* * **AWS_INIT_HEALTH_STATUS** - If the service configuration includes
* `HealthCheckCustomConfig` , when creating resources with a type of
* [AWS::ServiceDiscovery::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html)
* you can optionally use `AWS_INIT_HEALTH_STATUS` to specify the initial status of the custom
* health check, `HEALTHY` or `UNHEALTHY` . If you don't specify a value for
* `AWS_INIT_HEALTH_STATUS` , the initial status is `HEALTHY` . This attribute can only be used
* when creating resources and will not be seen on existing resources.
* * **AWS_INSTANCE_CNAME** - If the service configuration includes a `CNAME` record, the domain
* name that you want Route 53 to return in response to DNS queries, for example, `example.com` .
*
* This value is required if the service specified by `ServiceId` includes settings for an
* `CNAME` record.
*
* * **AWS_INSTANCE_IPV4** - If the service configuration includes an `A` record, the IPv4
* address that you want Route 53 to return in response to DNS queries, for example, `192.0.2.44` .
*
* This value is required if the service specified by `ServiceId` includes settings for an `A`
* record. If the service includes settings for an `SRV` record, you must specify a value for
* `AWS_INSTANCE_IPV4` , `AWS_INSTANCE_IPV6` , or both.
*
* * **AWS_INSTANCE_IPV6** - If the service configuration includes an `AAAA` record, the IPv6
* address that you want Route 53 to return in response to DNS queries, for example,
* `2001:0db8:85a3:0000:0000:abcd:0001:2345` .
*
* This value is required if the service specified by `ServiceId` includes settings for an
* `AAAA` record. If the service includes settings for an `SRV` record, you must specify a value
* for `AWS_INSTANCE_IPV4` , `AWS_INSTANCE_IPV6` , or both.
*
* * **AWS_INSTANCE_PORT** - If the service includes an `SRV` record, the value that you want
* Route 53 to return for the port.
*
* If the service includes `HealthCheckConfig` , the port on the endpoint that you want Route 53
* to send requests to.
*
* This value is required if you specified settings for an `SRV` record or a Route 53 health
* check when you created the service.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-instanceattributes)
* @param instanceAttributes A string map that contains the following information for the
* service that you specify in `ServiceId` :.
*/
override fun instanceAttributes(instanceAttributes: Any) {
cdkBuilder.instanceAttributes(instanceAttributes)
}
/**
* An identifier that you want to associate with the instance. Note the following:.
*
* * If the service that's specified by `ServiceId` includes settings for an `SRV` record, the
* value of `InstanceId` is automatically included as part of the value for the `SRV` record. For
* more information, see [DnsRecord >
* Type](https://docs.aws.amazon.com/cloud-map/latest/api/API_DnsRecord.html#cloudmap-Type-DnsRecord-Type)
* .
* * You can use this value to update an existing instance.
* * To register a new instance, you must specify a value that's unique among instances that you
* register by using the same service.
* * If you specify an existing `InstanceId` and `ServiceId` , AWS Cloud Map updates the
* existing DNS records, if any. If there's also an existing health check, AWS Cloud Map deletes
* the old health check and creates a new one.
*
*
* The health check isn't deleted immediately, so it will still appear for a while if you submit
* a `ListHealthChecks` request, for example.
*
*
*
* Do not include sensitive information in `InstanceId` if the namespace is discoverable by
* public DNS queries and any `Type` member of `DnsRecord` for the service contains `SRV` because
* the `InstanceId` is discoverable by public DNS queries.
*
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-instanceid)
* @param instanceId An identifier that you want to associate with the instance. Note the
* following:.
*/
override fun instanceId(instanceId: String) {
cdkBuilder.instanceId(instanceId)
}
/**
* The ID of the service that you want to use for settings for the instance.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-instance.html#cfn-servicediscovery-instance-serviceid)
* @param serviceId The ID of the service that you want to use for settings for the instance.
*/
override fun serviceId(serviceId: String) {
cdkBuilder.serviceId(serviceId)
}
public fun build(): software.amazon.awscdk.services.servicediscovery.CfnInstance =
cdkBuilder.build()
}
public companion object {
public val CFN_RESOURCE_TYPE_NAME: String =
software.amazon.awscdk.services.servicediscovery.CfnInstance.CFN_RESOURCE_TYPE_NAME
public operator fun invoke(
scope: CloudshiftdevConstructsConstruct,
id: String,
block: Builder.() -> Unit = {},
): CfnInstance {
val builderImpl = BuilderImpl(CloudshiftdevConstructsConstruct.unwrap(scope), id)
return CfnInstance(builderImpl.apply(block).build())
}
internal fun wrap(cdkObject: software.amazon.awscdk.services.servicediscovery.CfnInstance):
CfnInstance = CfnInstance(cdkObject)
internal fun unwrap(wrapped: CfnInstance):
software.amazon.awscdk.services.servicediscovery.CfnInstance = wrapped.cdkObject as
software.amazon.awscdk.services.servicediscovery.CfnInstance
}
}