Package: aws-cdk.aws-servicediscovery
Amazon ECS Service Discovery Construct Library---AWS CDK v1 has reached End-of-Support on 2023-06-01.
This package is no longer being updated, and users should migrate to AWS CDK v2.For more information on how to migrate, see theMigrating to AWS CDK v2guide.This module is part of theAWS Cloud Development Kitproject.This package contains constructs for working withAWS Cloud MapAWS Cloud Map is a fully managed service that you can use to create and
maintain a map of the backend services and resources that your applications
depend on.For further information on AWS Cloud Map,
see theAWS Cloud Map documentationHTTP Namespace ExampleThe following example creates an AWS Cloud Map namespace that
supports API calls, creates a service in that namespace, and
registers an instance to it:importaws_cdk.coreascdkimportaws_cdk.aws_servicediscoveryasservicediscoveryapp=cdk.App()stack=cdk.Stack(app,"aws-servicediscovery-integ")namespace=servicediscovery.HttpNamespace(stack,"MyNamespace",name="covfefe")service1=namespace.create_service("NonIpService",description="service registering non-ip instances")service1.register_non_ip_instance("NonIpInstance",custom_attributes={"arn":"arn:aws:s3:::mybucket"})service2=namespace.create_service("IpService",description="service registering ip instances",health_check=servicediscovery.HealthCheckConfig(type=servicediscovery.HealthCheckType.HTTP,resource_path="/check"))service2.register_ip_instance("IpInstance",ipv4="54.239.25.192")app.synth()Private DNS Namespace ExampleThe following example creates an AWS Cloud Map namespace that
supports both API calls and DNS queries within a vpc, creates a
service in that namespace, and registers a loadbalancer as an
instance:importaws_cdk.aws_ec2asec2importaws_cdk.aws_elasticloadbalancingv2aselbv2importaws_cdk.coreascdkimportaws_cdk.aws_servicediscoveryasservicediscoveryapp=cdk.App()stack=cdk.Stack(app,"aws-servicediscovery-integ")vpc=ec2.Vpc(stack,"Vpc",max_azs=2)namespace=servicediscovery.PrivateDnsNamespace(stack,"Namespace",name="boobar.com",vpc=vpc)service=namespace.create_service("Service",dns_record_type=servicediscovery.DnsRecordType.A_AAAA,dns_ttl=cdk.Duration.seconds(30),load_balancer=True)loadbalancer=elbv2.ApplicationLoadBalancer(stack,"LB",vpc=vpc,internet_facing=True)service.register_load_balancer("Loadbalancer",loadbalancer)app.synth()Public DNS Namespace ExampleThe following example creates an AWS Cloud Map namespace that
supports both API calls and public DNS queries, creates a service in
that namespace, and registers an IP instance:importaws_cdk.coreascdkimportaws_cdk.aws_servicediscoveryasservicediscoveryapp=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=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()For DNS namespaces, you can also register instances to services with CNAME records:importaws_cdk.coreascdkimportaws_cdk.aws_servicediscoveryasservicediscoveryapp=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.CNAME,dns_ttl=cdk.Duration.seconds(30))service.register_cname_instance("CnameInstance",instance_cname="service.pizza")app.synth()