Service

class aws_cdk.aws_servicediscovery.Service(scope, id, *, namespace, discovery_type=None, dns_record_type=None, dns_ttl=None, load_balancer=None, routing_policy=None, custom_health_check=None, description=None, health_check=None, name=None)

Bases: Resource

Define a CloudMap Service.

ExampleMetadata:

lit=aws-servicediscovery/test/integ.service-with-public-dns-namespace.lit.ts infused

Example:

import aws_cdk as cdk
import aws_cdk as servicediscovery

app = cdk.App()
stack = cdk.Stack(app, "aws-servicediscovery-integ")

namespace = servicediscovery.PublicDnsNamespace(stack, "Namespace",
    name="foobar.com"
)

service = namespace.create_service("Service",
    name="foo",
    dns_record_type=servicediscovery.DnsRecordType.A,
    dns_ttl=cdk.Duration.seconds(30),
    health_check=cdk.aws_servicediscovery.HealthCheckConfig(
        type=servicediscovery.HealthCheckType.HTTPS,
        resource_path="/healthcheck",
        failure_threshold=2
    )
)

service.register_ip_instance("IpInstance",
    ipv4="54.239.25.192",
    port=443
)

app.synth()
Parameters:
  • scope (Construct) –

  • id (str) –

  • namespace (INamespace) – The namespace that you want to use for DNS configuration.

  • discovery_type (Optional[DiscoveryType]) – Controls how instances within this service can be discovered. Default: DNS_AND_API

  • dns_record_type (Optional[DnsRecordType]) – The DNS type of the record that you want AWS Cloud Map to create. Supported record types include A, AAAA, A and AAAA (A_AAAA), CNAME, and SRV. Default: A

  • dns_ttl (Optional[Duration]) – The amount of time, in seconds, that you want DNS resolvers to cache the settings for this record. Default: Duration.minutes(1)

  • load_balancer (Optional[bool]) – Whether or not this service will have an Elastic LoadBalancer registered to it as an AliasTargetInstance. Setting this to true correctly configures the routingPolicy and performs some additional validation. Default: false

  • routing_policy (Optional[RoutingPolicy]) – The routing policy that you want to apply to all DNS records that AWS Cloud Map creates when you register an instance and specify this service. Default: WEIGHTED for CNAME records and when loadBalancer is true, MULTIVALUE otherwise

  • custom_health_check (Union[HealthCheckCustomConfig, Dict[str, Any], None]) – Structure containing failure threshold for a custom health checker. Only one of healthCheckConfig or healthCheckCustomConfig can be specified. See: https://docs.aws.amazon.com/cloud-map/latest/api/API_HealthCheckCustomConfig.html Default: none

  • description (Optional[str]) – A description of the service. Default: none

  • health_check (Union[HealthCheckConfig, Dict[str, Any], None]) – Settings for an optional health check. If you specify health check settings, AWS Cloud Map associates the health check with the records that you specify in DnsConfig. Only one of healthCheckConfig or healthCheckCustomConfig can be specified. Not valid for PrivateDnsNamespaces. If you use healthCheck, you can only register IP instances to this service. Default: none

  • name (Optional[str]) – A name for the Service. Default: CloudFormation-generated name

Methods

apply_removal_policy(policy)

Apply the given removal policy to this resource.

The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you’ve removed it from the CDK application or because you’ve made a change that requires the resource to be replaced.

The resource can be deleted (RemovalPolicy.DESTROY), or left in your AWS account for data recovery and cleanup later (RemovalPolicy.RETAIN).

Parameters:

policy (RemovalPolicy) –

Return type:

None

register_cname_instance(id, *, instance_cname, custom_attributes=None, instance_id=None)

Registers a resource that is accessible using a CNAME.

Parameters:
  • id (str) –

  • instance_cname (str) – 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.

  • custom_attributes (Optional[Mapping[str, str]]) – Custom attributes of the instance. Default: none

  • instance_id (Optional[str]) – The id of the instance resource. Default: Automatically generated name

Return type:

IInstance

register_ip_instance(id, *, ipv4=None, ipv6=None, port=None, custom_attributes=None, instance_id=None)

Registers a resource that is accessible using an IP address.

Parameters:
  • id (str) –

  • ipv4 (Optional[str]) – If the service that you specify contains a template for an A record, the IPv4 address that you want AWS Cloud Map to use for the value of the A record. Default: none

  • ipv6 (Optional[str]) – If the service that you specify contains a template for an AAAA record, the IPv6 address that you want AWS Cloud Map to use for the value of the AAAA record. Default: none

  • port (Union[int, float, None]) – The port on the endpoint that you want AWS Cloud Map to perform health checks on. This value is also used for the port value in an SRV record if the service that you specify includes an SRV record. You can also specify a default port that is applied to all instances in the Service configuration. Default: 80

  • custom_attributes (Optional[Mapping[str, str]]) – Custom attributes of the instance. Default: none

  • instance_id (Optional[str]) – The id of the instance resource. Default: Automatically generated name

Return type:

IInstance

register_load_balancer(id, load_balancer, custom_attributes=None)

Registers an ELB as a new instance with unique name instanceId in this service.

Parameters:
  • id (str) –

  • load_balancer (ILoadBalancerV2) –

  • custom_attributes (Optional[Mapping[str, str]]) –

Return type:

IInstance

register_non_ip_instance(id, *, custom_attributes=None, instance_id=None)

Registers a resource that is accessible using values other than an IP address or a domain name (CNAME).

Parameters:
  • id (str) –

  • custom_attributes (Optional[Mapping[str, str]]) – Custom attributes of the instance. Default: none

  • instance_id (Optional[str]) – The id of the instance resource. Default: Automatically generated name

Return type:

IInstance

to_string()

Returns a string representation of this construct.

Return type:

str

Attributes

discovery_type

The discovery type used by this service.

dns_record_type

The DnsRecordType used by the service.

env

The environment this resource belongs to.

For resources that are created and managed by the CDK (generally, those created by creating new class instances like Role, Bucket, etc.), this is always the same as the environment of the stack they belong to; however, for imported resources (those obtained from static methods like fromRoleArn, fromBucketName, etc.), that might be different than the stack they were imported into.

namespace

The namespace for the Cloudmap Service.

node

The tree node.

routing_policy

The Routing Policy used by the service.

service_arn

The Arn of the namespace that you want to use for DNS configuration.

service_id

The ID of the namespace that you want to use for DNS configuration.

service_name

A name for the Cloudmap Service.

stack

The stack in which this resource is defined.

Static Methods

classmethod from_service_attributes(scope, id, *, dns_record_type, namespace, routing_policy, service_arn, service_id, service_name, discovery_type=None)
Parameters:
Return type:

IService

classmethod is_construct(x)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

Parameters:

x (Any) – Any object.

Return type:

bool

Returns:

true if x is an object created from a class which extends Construct.

classmethod is_owned_resource(construct)

Returns true if the construct was created by CDK, and false otherwise.

Parameters:

construct (IConstruct) –

Return type:

bool

classmethod is_resource(construct)

Check whether the given construct is a Resource.

Parameters:

construct (IConstruct) –

Return type:

bool