aws-cdk-lib.aws_servicediscovery.Service

class Service (construct)

LanguageType name
.NETAmazon.CDK.AWS.ServiceDiscovery.Service
Gogithub.com/aws/aws-cdk-go/awscdk/v2/awsservicediscovery#Service
Javasoftware.amazon.awscdk.services.servicediscovery.Service
Pythonaws_cdk.aws_servicediscovery.Service
TypeScript (source)aws-cdk-lib » aws_servicediscovery » Service

Implements IConstruct, IDependable, IResource, IService

Define a CloudMap Service.

Example

import * as cdk from '../../core';
import * as servicediscovery from '../lib';

const app = new cdk.App();
const stack = new cdk.Stack(app, 'aws-servicediscovery-integ');

const namespace = new servicediscovery.PublicDnsNamespace(stack, 'Namespace', {
  name: 'foobar.com',
});

const service = namespace.createService('Service', {
  name: 'foo',
  dnsRecordType: servicediscovery.DnsRecordType.A,
  dnsTtl: cdk.Duration.seconds(30),
  healthCheck: {
    type: servicediscovery.HealthCheckType.HTTPS,
    resourcePath: '/healthcheck',
    failureThreshold: 2,
  },
});

service.registerIpInstance('IpInstance', {
  ipv4: '54.239.25.192',
  port: 443,
});

app.synth();

Initializer

new Service(scope: Construct, id: string, props: ServiceProps)

Parameters

  • scope Construct
  • id string
  • props ServiceProps

Construct Props

NameTypeDescription
namespaceINamespaceThe namespace that you want to use for DNS configuration.
customHealthCheck?HealthCheckCustomConfigStructure containing failure threshold for a custom health checker.
description?stringA description of the service.
discoveryType?DiscoveryTypeControls how instances within this service can be discovered.
dnsRecordType?DnsRecordTypeThe DNS type of the record that you want AWS Cloud Map to create.
dnsTtl?DurationThe amount of time, in seconds, that you want DNS resolvers to cache the settings for this record.
healthCheck?HealthCheckConfigSettings for an optional health check.
loadBalancer?booleanWhether or not this service will have an Elastic LoadBalancer registered to it as an AliasTargetInstance.
name?stringA name for the Service.
routingPolicy?RoutingPolicyThe 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.

namespace

Type: INamespace

The namespace that you want to use for DNS configuration.


customHealthCheck?

Type: HealthCheckCustomConfig (optional, default: 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


description?

Type: string (optional, default: none)

A description of the service.


discoveryType?

Type: DiscoveryType (optional, default: DNS_AND_API)

Controls how instances within this service can be discovered.


dnsRecordType?

Type: DnsRecordType (optional, default: A)

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.


dnsTtl?

Type: Duration (optional, default: Duration.minutes(1))

The amount of time, in seconds, that you want DNS resolvers to cache the settings for this record.


healthCheck?

Type: HealthCheckConfig (optional, default: 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.


loadBalancer?

Type: boolean (optional, default: false)

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.


name?

Type: string (optional, default: CloudFormation-generated name)

A name for the Service.


routingPolicy?

Type: RoutingPolicy (optional, default: WEIGHTED for CNAME records and when loadBalancer is true, MULTIVALUE otherwise)

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.

Properties

NameTypeDescription
discoveryTypeDiscoveryTypeThe discovery type used by this service.
dnsRecordTypeDnsRecordTypeThe DnsRecordType used by the service.
envResourceEnvironmentThe environment this resource belongs to.
namespaceINamespaceThe namespace for the Cloudmap Service.
nodeNodeThe tree node.
routingPolicyRoutingPolicyThe Routing Policy used by the service.
serviceArnstringThe Arn of the namespace that you want to use for DNS configuration.
serviceIdstringThe ID of the namespace that you want to use for DNS configuration.
serviceNamestringA name for the Cloudmap Service.
stackStackThe stack in which this resource is defined.

discoveryType

Type: DiscoveryType

The discovery type used by this service.


dnsRecordType

Type: DnsRecordType

The DnsRecordType used by the service.


env

Type: ResourceEnvironment

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

Type: INamespace

The namespace for the Cloudmap Service.


node

Type: Node

The tree node.


routingPolicy

Type: RoutingPolicy

The Routing Policy used by the service.


serviceArn

Type: string

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


serviceId

Type: string

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


serviceName

Type: string

A name for the Cloudmap Service.


stack

Type: Stack

The stack in which this resource is defined.

Methods

NameDescription
applyRemovalPolicy(policy)Apply the given removal policy to this resource.
registerCnameInstance(id, props)Registers a resource that is accessible using a CNAME.
registerIpInstance(id, props)Registers a resource that is accessible using an IP address.
registerLoadBalancer(id, loadBalancer, customAttributes?)Registers an ELB as a new instance with unique name instanceId in this service.
registerNonIpInstance(id, props)Registers a resource that is accessible using values other than an IP address or a domain name (CNAME).
toString()Returns a string representation of this construct.
static fromServiceAttributes(scope, id, attrs)

applyRemovalPolicy(policy)

public applyRemovalPolicy(policy: RemovalPolicy): void

Parameters

  • policy RemovalPolicy

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).


registerCnameInstance(id, props)

public registerCnameInstance(id: string, props: CnameInstanceBaseProps): IInstance

Parameters

  • id string
  • props CnameInstanceBaseProps

Returns

  • IInstance

Registers a resource that is accessible using a CNAME.


registerIpInstance(id, props)

public registerIpInstance(id: string, props: IpInstanceBaseProps): IInstance

Parameters

  • id string
  • props IpInstanceBaseProps

Returns

  • IInstance

Registers a resource that is accessible using an IP address.


registerLoadBalancer(id, loadBalancer, customAttributes?)

public registerLoadBalancer(id: string, loadBalancer: ILoadBalancerV2, customAttributes?: { [string]: string }): IInstance

Parameters

  • id string
  • loadBalancer ILoadBalancerV2
  • customAttributes { [string]: string }

Returns

  • IInstance

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


registerNonIpInstance(id, props)

public registerNonIpInstance(id: string, props: NonIpInstanceBaseProps): IInstance

Parameters

  • id string
  • props NonIpInstanceBaseProps

Returns

  • IInstance

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


toString()

public toString(): string

Returns

  • string

Returns a string representation of this construct.


static fromServiceAttributes(scope, id, attrs)

public static fromServiceAttributes(scope: Construct, id: string, attrs: ServiceAttributes): IService

Parameters

  • scope Construct
  • id string
  • attrs ServiceAttributes

Returns

  • IService