Package software.amazon.awscdk.services.appmesh
AWS App Mesh 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 the Migrating to AWS CDK v2 guide.
AWS App Mesh is a service mesh based on the Envoy proxy that makes it easy to monitor and control microservices. App Mesh standardizes how your microservices communicate, giving you end-to-end visibility and helping to ensure high-availability for your applications.
App Mesh gives you consistent visibility and network traffic controls for every microservice in an application.
App Mesh supports microservice applications that use service discovery naming for their components. To use App Mesh, you must have an existing application running on AWS Fargate, Amazon ECS, Amazon EKS, Kubernetes on AWS, or Amazon EC2.
For further information on AWS App Mesh, visit the AWS App Mesh Documentation.
Create the App and Stack
App app = new App(); Stack stack = new Stack(app, "stack");
Creating the Mesh
A service mesh is a logical boundary for network traffic between the services that reside within it.
After you create your service mesh, you can create virtual services, virtual nodes, virtual routers, and routes to distribute traffic between the applications in your mesh.
The following example creates the AppMesh service mesh with the default egress filter of DROP_ALL. See the AWS CloudFormation EgressFilter resource for more info on egress filters.
Mesh mesh = Mesh.Builder.create(this, "AppMesh")
.meshName("myAwsMesh")
.build();
The mesh can instead be created with the ALLOW_ALL egress filter by providing the egressFilter property.
Mesh mesh = Mesh.Builder.create(this, "AppMesh")
.meshName("myAwsMesh")
.egressFilter(MeshFilterType.ALLOW_ALL)
.build();
Adding VirtualRouters
A mesh uses virtual routers as logical units to route requests to virtual nodes.
Virtual routers handle traffic for one or more virtual services within your mesh. After you create a virtual router, you can create and associate routes to your virtual router that direct incoming requests to different virtual nodes.
Mesh mesh;
VirtualRouter router = mesh.addVirtualRouter("router", VirtualRouterBaseProps.builder()
.listeners(List.of(VirtualRouterListener.http(8080)))
.build());
Note that creating the router using the addVirtualRouter() method places it in the same stack as the mesh
(which might be different from the current stack).
The router can also be created using the VirtualRouter constructor (passing in the mesh) instead of calling the addVirtualRouter() method.
This is particularly useful when splitting your resources between many stacks: for example, defining the mesh itself as part of an infrastructure stack, but defining the other resources, such as routers, in the application stack:
Stack infraStack;
Stack appStack;
Mesh mesh = Mesh.Builder.create(infraStack, "AppMesh")
.meshName("myAwsMesh")
.egressFilter(MeshFilterType.ALLOW_ALL)
.build();
// the VirtualRouter will belong to 'appStack',
// even though the Mesh belongs to 'infraStack'
VirtualRouter router = VirtualRouter.Builder.create(appStack, "router")
.mesh(mesh) // notice that mesh is a required property when creating a router with the 'new' statement
.listeners(List.of(VirtualRouterListener.http(8081)))
.build();
The same is true for other add*() methods in the App Mesh construct library.
The VirtualRouterListener class lets you define protocol-specific listeners.
The http(), http2(), grpc() and tcp() methods create listeners for the named protocols.
They accept a single parameter that defines the port to on which requests will be matched.
The port parameter defaults to 8080 if omitted.
Adding a VirtualService
A virtual service is an abstraction of a real service that is provided by a virtual node directly, or indirectly by means of a virtual router. Dependent services call your virtual service by its virtualServiceName, and those requests are routed to the virtual node or virtual router specified as the provider for the virtual service.
We recommend that you use the service discovery name of the real service that you're targeting (such as my-service.default.svc.cluster.local).
When creating a virtual service:
- If you want the virtual service to spread traffic across multiple virtual nodes, specify a virtual router.
- If you want the virtual service to reach a virtual node directly, without a virtual router, specify a virtual node.
Adding a virtual router as the provider:
VirtualRouter router;
VirtualService.Builder.create(this, "virtual-service")
.virtualServiceName("my-service.default.svc.cluster.local") // optional
.virtualServiceProvider(VirtualServiceProvider.virtualRouter(router))
.build();
Adding a virtual node as the provider:
VirtualNode node;
VirtualService.Builder.create(this, "virtual-service")
.virtualServiceName("my-service.default.svc.cluster.local") // optional
.virtualServiceProvider(VirtualServiceProvider.virtualNode(node))
.build();
Adding a VirtualNode
A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment.
When you create a virtual node, accept inbound traffic by specifying a listener. Outbound traffic that your virtual node expects to send should be specified as a back end.
The response metadata for your new virtual node contains the Amazon Resource Name (ARN) that is associated with the virtual node. Set this value (either the full ARN or the truncated resource name) as the APPMESH_VIRTUAL_NODE_NAME environment variable for your task group's Envoy proxy container in your task definition or pod spec. For example, the value could be mesh/default/virtualNode/simpleapp. This is then mapped to the node.id and node.cluster Envoy parameters.
Note If you require your Envoy stats or tracing to use a different name, you can override the
node.clustervalue that is set byAPPMESH_VIRTUAL_NODE_NAMEwith theAPPMESH_VIRTUAL_NODE_CLUSTERenvironment variable.
Mesh mesh;
Vpc vpc = new Vpc(this, "vpc");
PrivateDnsNamespace namespace = PrivateDnsNamespace.Builder.create(this, "test-namespace")
.vpc(vpc)
.name("domain.local")
.build();
Service service = namespace.createService("Svc");
VirtualNode node = mesh.addVirtualNode("virtual-node", VirtualNodeBaseProps.builder()
.serviceDiscovery(ServiceDiscovery.cloudMap(service))
.listeners(List.of(VirtualNodeListener.http(HttpVirtualNodeListenerOptions.builder()
.port(8081)
.healthCheck(HealthCheck.http(HttpHealthCheckOptions.builder()
.healthyThreshold(3)
.interval(Duration.seconds(5)) // minimum
.path("/health-check-path")
.timeout(Duration.seconds(2)) // minimum
.unhealthyThreshold(2)
.build()))
.build())))
.accessLog(AccessLog.fromFilePath("/dev/stdout"))
.build());
Create a VirtualNode with the constructor and add tags.
Mesh mesh;
Service service;
VirtualNode node = VirtualNode.Builder.create(this, "node")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.cloudMap(service))
.listeners(List.of(VirtualNodeListener.http(HttpVirtualNodeListenerOptions.builder()
.port(8080)
.healthCheck(HealthCheck.http(HttpHealthCheckOptions.builder()
.healthyThreshold(3)
.interval(Duration.seconds(5))
.path("/ping")
.timeout(Duration.seconds(2))
.unhealthyThreshold(2)
.build()))
.timeout(HttpTimeout.builder()
.idle(Duration.seconds(5))
.build())
.build())))
.backendDefaults(BackendDefaults.builder()
.tlsClientPolicy(TlsClientPolicy.builder()
.validation(TlsValidation.builder()
.trust(TlsValidationTrust.file("/keys/local_cert_chain.pem"))
.build())
.build())
.build())
.accessLog(AccessLog.fromFilePath("/dev/stdout"))
.build();
Tags.of(node).add("Environment", "Dev");
Create a VirtualNode with the constructor and add backend virtual service.
Mesh mesh;
VirtualRouter router;
Service service;
VirtualNode node = VirtualNode.Builder.create(this, "node")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.cloudMap(service))
.listeners(List.of(VirtualNodeListener.http(HttpVirtualNodeListenerOptions.builder()
.port(8080)
.healthCheck(HealthCheck.http(HttpHealthCheckOptions.builder()
.healthyThreshold(3)
.interval(Duration.seconds(5))
.path("/ping")
.timeout(Duration.seconds(2))
.unhealthyThreshold(2)
.build()))
.timeout(HttpTimeout.builder()
.idle(Duration.seconds(5))
.build())
.build())))
.accessLog(AccessLog.fromFilePath("/dev/stdout"))
.build();
VirtualService virtualService = VirtualService.Builder.create(this, "service-1")
.virtualServiceProvider(VirtualServiceProvider.virtualRouter(router))
.virtualServiceName("service1.domain.local")
.build();
node.addBackend(Backend.virtualService(virtualService));
The listeners property can be left blank and added later with the node.addListener() method. The serviceDiscovery property must be specified when specifying a listener.
The backends property can be added with node.addBackend(). In the example, we define a virtual service and add it to the virtual node to allow egress traffic to other nodes.
The backendDefaults property is added to the node while creating the virtual node. These are the virtual node's default settings for all backends.
The VirtualNode.addBackend() method is especially useful if you want to create a circular traffic flow by having a Virtual Service as a backend whose provider is that same Virtual Node:
Mesh mesh;
VirtualNode node = VirtualNode.Builder.create(this, "node")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.dns("node"))
.build();
VirtualService virtualService = VirtualService.Builder.create(this, "service-1")
.virtualServiceProvider(VirtualServiceProvider.virtualNode(node))
.virtualServiceName("service1.domain.local")
.build();
node.addBackend(Backend.virtualService(virtualService));
Adding TLS to a listener
The tls property specifies TLS configuration when creating a listener for a virtual node or a virtual gateway.
Provide the TLS certificate to the proxy in one of the following ways:
- A certificate from AWS Certificate Manager (ACM).
- A customer-provided certificate (specify a
certificateChainpath file and aprivateKeyfile path). - A certificate provided by a Secrets Discovery Service (SDS) endpoint over local Unix Domain Socket (specify its
secretName).
// A Virtual Node with listener TLS from an ACM provided certificate
Certificate cert;
Mesh mesh;
VirtualNode node = VirtualNode.Builder.create(this, "node")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.dns("node"))
.listeners(List.of(VirtualNodeListener.grpc(GrpcVirtualNodeListenerOptions.builder()
.port(80)
.tls(ListenerTlsOptions.builder()
.mode(TlsMode.STRICT)
.certificate(TlsCertificate.acm(cert))
.build())
.build())))
.build();
// A Virtual Gateway with listener TLS from a customer provided file certificate
VirtualGateway gateway = VirtualGateway.Builder.create(this, "gateway")
.mesh(mesh)
.listeners(List.of(VirtualGatewayListener.grpc(GrpcGatewayListenerOptions.builder()
.port(8080)
.tls(ListenerTlsOptions.builder()
.mode(TlsMode.STRICT)
.certificate(TlsCertificate.file("path/to/certChain", "path/to/privateKey"))
.build())
.build())))
.virtualGatewayName("gateway")
.build();
// A Virtual Gateway with listener TLS from a SDS provided certificate
VirtualGateway gateway2 = VirtualGateway.Builder.create(this, "gateway2")
.mesh(mesh)
.listeners(List.of(VirtualGatewayListener.http2(Http2GatewayListenerOptions.builder()
.port(8080)
.tls(ListenerTlsOptions.builder()
.mode(TlsMode.STRICT)
.certificate(TlsCertificate.sds("secrete_certificate"))
.build())
.build())))
.virtualGatewayName("gateway2")
.build();
Adding mutual TLS authentication
Mutual TLS authentication is an optional component of TLS that offers two-way peer authentication.
To enable mutual TLS authentication, add the mutualTlsCertificate property to TLS client policy and/or the mutualTlsValidation property to your TLS listener.
tls.mutualTlsValidation and tlsClientPolicy.mutualTlsCertificate can be sourced from either:
- A customer-provided certificate (specify a
certificateChainpath file and aprivateKeyfile path). - A certificate provided by a Secrets Discovery Service (SDS) endpoint over local Unix Domain Socket (specify its
secretName).
Note Currently, a certificate from AWS Certificate Manager (ACM) cannot be used for mutual TLS authentication.
Mesh mesh;
VirtualNode node1 = VirtualNode.Builder.create(this, "node1")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.dns("node"))
.listeners(List.of(VirtualNodeListener.grpc(GrpcVirtualNodeListenerOptions.builder()
.port(80)
.tls(ListenerTlsOptions.builder()
.mode(TlsMode.STRICT)
.certificate(TlsCertificate.file("path/to/certChain", "path/to/privateKey"))
// Validate a file client certificates to enable mutual TLS authentication when a client provides a certificate.
.mutualTlsValidation(MutualTlsValidation.builder()
.trust(TlsValidationTrust.file("path-to-certificate"))
.build())
.build())
.build())))
.build();
String certificateAuthorityArn = "arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012";
VirtualNode node2 = VirtualNode.Builder.create(this, "node2")
.mesh(mesh)
.serviceDiscovery(ServiceDiscovery.dns("node2"))
.backendDefaults(BackendDefaults.builder()
.tlsClientPolicy(TlsClientPolicy.builder()
.ports(List.of(8080, 8081))
.validation(TlsValidation.builder()
.subjectAlternativeNames(SubjectAlternativeNames.matchingExactly("mesh-endpoint.apps.local"))
.trust(TlsValidationTrust.acm(List.of(CertificateAuthority.fromCertificateAuthorityArn(this, "certificate", certificateAuthorityArn))))
.build())
// Provide a SDS client certificate when a server requests it and enable mutual TLS authentication.
.mutualTlsCertificate(TlsCertificate.sds("secret_certificate"))
.build())
.build())
.build();
Adding outlier detection to a Virtual Node listener
The outlierDetection property adds outlier detection to a Virtual Node listener. The properties
baseEjectionDuration, interval, maxEjectionPercent, and maxServerErrors are required.
Mesh mesh;
// Cloud Map service discovery is currently required for host ejection by outlier detection
Vpc vpc = new Vpc(this, "vpc");
PrivateDnsNamespace namespace = PrivateDnsNamespace.Builder.create(this, "test-namespace")
.vpc(vpc)
.name("domain.local")
.build();
Service service = namespace.createService("Svc");
VirtualNode node = mesh.addVirtualNode("virtual-node", VirtualNodeBaseProps.builder()
.serviceDiscovery(ServiceDiscovery.cloudMap(service))
.listeners(List.of(VirtualNodeListener.http(HttpVirtualNodeListenerOptions.builder()
.outlierDetection(OutlierDetection.builder()
.baseEjectionDuration(Duration.seconds(10))
.interval(Duration.seconds(30))
.maxEjectionPercent(50)
.maxServerErrors(5)
.build())
.build())))
.build());
Adding a connection pool to a listener
The connectionPool property can be added to a Virtual Node listener or Virtual Gateway listener to add a request connection pool. Each listener protocol type has its own connection pool properties.
// A Virtual Node with a gRPC listener with a connection pool set
Mesh mesh;
VirtualNode node = VirtualNode.Builder.create(this, "node")
.mesh(mesh)
// DNS service discovery can optionally specify the DNS response type as either LOAD_BALANCER or ENDPOINTS.
// LOAD_BALANCER means that the DNS resolver returns a loadbalanced set of endpoints,
// whereas ENDPOINTS means that the DNS resolver is returning all the endpoints.
// By default, the response type is assumed to be LOAD_BALANCER
.serviceDiscovery(ServiceDiscovery.dns("node", DnsResponseType.ENDPOINTS))
.listeners(List.of(VirtualNodeListener.http(HttpVirtualNodeListenerOptions.builder()
.port(80)
.connectionPool(HttpConnectionPool.builder()
.maxConnections(100)
.maxPendingRequests(10)
.build())
.build())))
.build();
// A Virtual Gateway with a gRPC listener with a connection pool set
VirtualGateway gateway = VirtualGateway.Builder.create(this, "gateway")
.mesh(mesh)
.listeners(List.of(VirtualGatewayListener.grpc(GrpcGatewayListenerOptions.builder()
.port(8080)
.connectionPool(GrpcConnectionPool.builder()
.maxRequests(10)
.build())
.build())))
.virtualGatewayName("gateway")
.build();
Adding a Route
A route matches requests with an associated virtual router and distributes traffic to its associated virtual nodes. The route distributes matching requests to one or more target virtual nodes with relative weighting.
The RouteSpec class lets you define protocol-specific route specifications.
The tcp(), http(), http2(), and grpc() methods create a specification for the named protocols.
For HTTP-based routes, the match field can match on path (prefix, exact, or regex), HTTP method, scheme, HTTP headers, and query parameters. By default, HTTP-based routes match all requests.
For gRPC-based routes, the match field can match on service name, method name, and metadata. When specifying the method name, the service name must also be specified.
For example, here's how to add an HTTP route that matches based on a prefix of the URL path:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-http", RouteBaseProps.builder()
.routeSpec(RouteSpec.http(HttpRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder()
.virtualNode(node)
.build()))
.match(HttpRouteMatch.builder()
// Path that is passed to this method must start with '/'.
.path(HttpRoutePathMatch.startsWith("/path-to-app"))
.build())
.build()))
.build());
Add an HTTP2 route that matches based on exact path, method, scheme, headers, and query parameters:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-http2", RouteBaseProps.builder()
.routeSpec(RouteSpec.http2(HttpRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder()
.virtualNode(node)
.build()))
.match(HttpRouteMatch.builder()
.path(HttpRoutePathMatch.exactly("/exact"))
.method(HttpRouteMethod.POST)
.protocol(HttpRouteProtocol.HTTPS)
.headers(List.of(HeaderMatch.valueIs("Content-Type", "application/json"), HeaderMatch.valueIsNot("Content-Type", "application/json")))
.queryParameters(List.of(QueryParameterMatch.valueIs("query-field", "value")))
.build())
.build()))
.build());
Add a single route with two targets and split traffic 50/50:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-http", RouteBaseProps.builder()
.routeSpec(RouteSpec.http(HttpRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder()
.virtualNode(node)
.weight(50)
.build(), WeightedTarget.builder()
.virtualNode(node)
.weight(50)
.build()))
.match(HttpRouteMatch.builder()
.path(HttpRoutePathMatch.startsWith("/path-to-app"))
.build())
.build()))
.build());
Add an http2 route with retries:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-http2-retry", RouteBaseProps.builder()
.routeSpec(RouteSpec.http2(HttpRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder().virtualNode(node).build()))
.retryPolicy(HttpRetryPolicy.builder()
// Retry if the connection failed
.tcpRetryEvents(List.of(TcpRetryEvent.CONNECTION_ERROR))
// Retry if HTTP responds with a gateway error (502, 503, 504)
.httpRetryEvents(List.of(HttpRetryEvent.GATEWAY_ERROR))
// Retry five times
.retryAttempts(5)
// Use a 1 second timeout per retry
.retryTimeout(Duration.seconds(1))
.build())
.build()))
.build());
Add a gRPC route with retries:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-grpc-retry", RouteBaseProps.builder()
.routeSpec(RouteSpec.grpc(GrpcRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder().virtualNode(node).build()))
.match(GrpcRouteMatch.builder().serviceName("servicename").build())
.retryPolicy(GrpcRetryPolicy.builder()
.tcpRetryEvents(List.of(TcpRetryEvent.CONNECTION_ERROR))
.httpRetryEvents(List.of(HttpRetryEvent.GATEWAY_ERROR))
// Retry if gRPC responds that the request was cancelled, a resource
// was exhausted, or if the service is unavailable
.grpcRetryEvents(List.of(GrpcRetryEvent.CANCELLED, GrpcRetryEvent.RESOURCE_EXHAUSTED, GrpcRetryEvent.UNAVAILABLE))
.retryAttempts(5)
.retryTimeout(Duration.seconds(1))
.build())
.build()))
.build());
Add an gRPC route that matches based on method name and metadata:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-grpc-retry", RouteBaseProps.builder()
.routeSpec(RouteSpec.grpc(GrpcRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder().virtualNode(node).build()))
.match(GrpcRouteMatch.builder()
// When method name is specified, service name must be also specified.
.methodName("methodname")
.serviceName("servicename")
.metadata(List.of(HeaderMatch.valueStartsWith("Content-Type", "application/"), HeaderMatch.valueDoesNotStartWith("Content-Type", "text/")))
.build())
.build()))
.build());
Add a gRPC route with timeout:
VirtualRouter router;
VirtualNode node;
router.addRoute("route-http", RouteBaseProps.builder()
.routeSpec(RouteSpec.grpc(GrpcRouteSpecOptions.builder()
.weightedTargets(List.of(WeightedTarget.builder()
.virtualNode(node)
.build()))
.match(GrpcRouteMatch.builder()
.serviceName("my-service.default.svc.cluster.local")
.build())
.timeout(GrpcTimeout.builder()
.idle(Duration.seconds(2))
.perRequest(Duration.seconds(1))
.build())
.build()))
.build());
Adding a Virtual Gateway
A virtual gateway allows resources outside your mesh to communicate with resources inside your mesh. The virtual gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes service, or on an Amazon EC2 instance. Unlike a virtual node, which represents Envoy running with an application, a virtual gateway represents Envoy deployed by itself.
A virtual gateway is similar to a virtual node in that it has a listener that accepts traffic for a particular port and protocol (HTTP, HTTP2, gRPC). Traffic received by the virtual gateway is directed to other services in your mesh using rules defined in gateway routes which can be added to your virtual gateway.
Create a virtual gateway with the constructor:
Mesh mesh;
String certificateAuthorityArn = "arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012";
VirtualGateway gateway = VirtualGateway.Builder.create(this, "gateway")
.mesh(mesh)
.listeners(List.of(VirtualGatewayListener.http(HttpGatewayListenerOptions.builder()
.port(443)
.healthCheck(HealthCheck.http(HttpHealthCheckOptions.builder()
.interval(Duration.seconds(10))
.build()))
.build())))
.backendDefaults(BackendDefaults.builder()
.tlsClientPolicy(TlsClientPolicy.builder()
.ports(List.of(8080, 8081))
.validation(TlsValidation.builder()
.trust(TlsValidationTrust.acm(List.of(CertificateAuthority.fromCertificateAuthorityArn(this, "certificate", certificateAuthorityArn))))
.build())
.build())
.build())
.accessLog(AccessLog.fromFilePath("/dev/stdout"))
.virtualGatewayName("virtualGateway")
.build();
Add a virtual gateway directly to the mesh:
Mesh mesh;
VirtualGateway gateway = mesh.addVirtualGateway("gateway", VirtualGatewayBaseProps.builder()
.accessLog(AccessLog.fromFilePath("/dev/stdout"))
.virtualGatewayName("virtualGateway")
.listeners(List.of(VirtualGatewayListener.http(HttpGatewayListenerOptions.builder()
.port(443)
.healthCheck(HealthCheck.http(HttpHealthCheckOptions.builder()
.interval(Duration.seconds(10))
.build()))
.build())))
.build());
The listeners field defaults to an HTTP Listener on port 8080 if omitted.
A gateway route can be added using the gateway.addGatewayRoute() method.
The backendDefaults property, provided when creating the virtual gateway, specifies the virtual gateway's default settings for all backends.
Adding a Gateway Route
A gateway route is attached to a virtual gateway and routes matching traffic to an existing virtual service.
For HTTP-based gateway routes, the match field can be used to match on
path (prefix, exact, or regex), HTTP method, host name, HTTP headers, and query parameters.
By default, HTTP-based gateway routes match all requests.
VirtualGateway gateway;
VirtualService virtualService;
gateway.addGatewayRoute("gateway-route-http", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.http(HttpGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(HttpGatewayRouteMatch.builder()
.path(HttpGatewayRoutePathMatch.regex("regex"))
.build())
.build()))
.build());
For gRPC-based gateway routes, the match field can be used to match on service name, host name, and metadata.
VirtualGateway gateway;
VirtualService virtualService;
gateway.addGatewayRoute("gateway-route-grpc", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.grpc(GrpcGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(GrpcGatewayRouteMatch.builder()
.hostname(GatewayRouteHostnameMatch.endsWith(".example.com"))
.build())
.build()))
.build());
For HTTP based gateway routes, App Mesh automatically rewrites the matched prefix path in Gateway Route to “/”. This automatic rewrite configuration can be overwritten in following ways:
VirtualGateway gateway;
VirtualService virtualService;
gateway.addGatewayRoute("gateway-route-http", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.http(HttpGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(HttpGatewayRouteMatch.builder()
// This disables the default rewrite to '/', and retains original path.
.path(HttpGatewayRoutePathMatch.startsWith("/path-to-app/", ""))
.build())
.build()))
.build());
gateway.addGatewayRoute("gateway-route-http-1", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.http(HttpGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(HttpGatewayRouteMatch.builder()
// If the request full path is '/path-to-app/xxxxx', this rewrites the path to '/rewrittenUri/xxxxx'.
// Please note both `prefixPathMatch` and `rewriteTo` must start and end with the `/` character.
.path(HttpGatewayRoutePathMatch.startsWith("/path-to-app/", "/rewrittenUri/"))
.build())
.build()))
.build());
If matching other path (exact or regex), only specific rewrite path can be specified.
Unlike startsWith() method above, no default rewrite is performed.
VirtualGateway gateway;
VirtualService virtualService;
gateway.addGatewayRoute("gateway-route-http-2", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.http(HttpGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(HttpGatewayRouteMatch.builder()
// This rewrites the path from '/test' to '/rewrittenPath'.
.path(HttpGatewayRoutePathMatch.exactly("/test", "/rewrittenPath"))
.build())
.build()))
.build());
For HTTP/gRPC based routes, App Mesh automatically rewrites
the original request received at the Virtual Gateway to the destination Virtual Service name.
This default host name rewrite can be configured by specifying the rewrite rule as one of the match property:
VirtualGateway gateway;
VirtualService virtualService;
gateway.addGatewayRoute("gateway-route-grpc", GatewayRouteBaseProps.builder()
.routeSpec(GatewayRouteSpec.grpc(GrpcGatewayRouteSpecOptions.builder()
.routeTarget(virtualService)
.match(GrpcGatewayRouteMatch.builder()
.hostname(GatewayRouteHostnameMatch.exactly("example.com"))
// This disables the default rewrite to virtual service name and retain original request.
.rewriteRequestHostname(false)
.build())
.build()))
.build());
Importing Resources
Each App Mesh resource class comes with two static methods, from<Resource>Arn and from<Resource>Attributes (where <Resource> is replaced with the resource name, such as VirtualNode) for importing a reference to an existing App Mesh resource.
These imported resources can be used with other resources in your mesh as if they were defined directly in your CDK application.
String arn = "arn:aws:appmesh:us-east-1:123456789012:mesh/testMesh/virtualNode/testNode"; VirtualNode.fromVirtualNodeArn(this, "importedVirtualNode", arn);
String virtualNodeName = "my-virtual-node";
VirtualNode.fromVirtualNodeAttributes(this, "imported-virtual-node", VirtualNodeAttributes.builder()
.mesh(Mesh.fromMeshName(this, "Mesh", "testMesh"))
.virtualNodeName(virtualNodeName)
.build());
To import a mesh, again there are two static methods, fromMeshArn and fromMeshName.
String arn = "arn:aws:appmesh:us-east-1:123456789012:mesh/testMesh"; Mesh.fromMeshArn(this, "imported-mesh", arn);
Mesh.fromMeshName(this, "imported-mesh", "abc");
IAM Grants
VirtualNode and VirtualGateway provide grantStreamAggregatedResources methods that grant identities that are running
Envoy access to stream generated config from App Mesh.
Mesh mesh; VirtualGateway gateway = VirtualGateway.Builder.create(this, "testGateway").mesh(mesh).build(); User envoyUser = new User(this, "envoyUser"); /** * This will grant `grantStreamAggregatedResources` ONLY for this gateway. */ gateway.grantStreamAggregatedResources(envoyUser);
Adding Resources to shared meshes
A shared mesh allows resources created by different accounts to communicate with each other in the same mesh:
// This is the ARN for the mesh from different AWS IAM account ID.
// Ensure mesh is properly shared with your account. For more details, see: https://github.com/aws/aws-cdk/issues/15404
String arn = "arn:aws:appmesh:us-east-1:123456789012:mesh/testMesh";
IMesh sharedMesh = Mesh.fromMeshArn(this, "imported-mesh", arn);
// This VirtualNode resource can communicate with the resources in the mesh from different AWS IAM account ID.
// This VirtualNode resource can communicate with the resources in the mesh from different AWS IAM account ID.
VirtualNode.Builder.create(this, "test-node")
.mesh(sharedMesh)
.build();
Deprecated: 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 https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html-
ClassDescriptionConfiguration for Envoy Access logs for mesh endpoints.All Properties for Envoy Access logs for mesh endpoints.A builder for
AccessLogConfigAn implementation forAccessLogConfigContains static factory methods to create backends.Properties for a backend.A builder forBackendConfigAn implementation forBackendConfigRepresents the properties needed to define backend defaults.A builder forBackendDefaultsAn implementation forBackendDefaultsA CloudFormationAWS::AppMesh::GatewayRoute.A fluent builder forCfnGatewayRoute.An object representing the gateway route host name to match.A builder forCfnGatewayRoute.GatewayRouteHostnameMatchPropertyAn implementation forCfnGatewayRoute.GatewayRouteHostnameMatchPropertyAn object representing the gateway route host name to rewrite.A builder forCfnGatewayRoute.GatewayRouteHostnameRewritePropertyAn implementation forCfnGatewayRoute.GatewayRouteHostnameRewritePropertyAn object representing the method header to be matched.A builder forCfnGatewayRoute.GatewayRouteMetadataMatchPropertyAn implementation forCfnGatewayRoute.GatewayRouteMetadataMatchPropertyAn object that represents the range of values to match on.A builder forCfnGatewayRoute.GatewayRouteRangeMatchPropertyAn implementation forCfnGatewayRoute.GatewayRouteRangeMatchPropertyAn object that represents a gateway route specification.A builder forCfnGatewayRoute.GatewayRouteSpecPropertyAn implementation forCfnGatewayRoute.GatewayRouteSpecPropertyAn object that represents a gateway route target.A builder forCfnGatewayRoute.GatewayRouteTargetPropertyAn implementation forCfnGatewayRoute.GatewayRouteTargetPropertyAn object that represents the virtual service that traffic is routed to.A builder forCfnGatewayRoute.GatewayRouteVirtualServicePropertyAn implementation forCfnGatewayRoute.GatewayRouteVirtualServicePropertyAn object that represents the action to take if a match is determined.A builder forCfnGatewayRoute.GrpcGatewayRouteActionPropertyAn implementation forCfnGatewayRoute.GrpcGatewayRouteActionPropertyAn object that represents the criteria for determining a request match.A builder forCfnGatewayRoute.GrpcGatewayRouteMatchPropertyAn implementation forCfnGatewayRoute.GrpcGatewayRouteMatchPropertyAn object representing the metadata of the gateway route.A builder forCfnGatewayRoute.GrpcGatewayRouteMetadataPropertyAn implementation forCfnGatewayRoute.GrpcGatewayRouteMetadataPropertyAn object that represents a gRPC gateway route.A builder forCfnGatewayRoute.GrpcGatewayRoutePropertyAn implementation forCfnGatewayRoute.GrpcGatewayRoutePropertyAn object that represents the gateway route to rewrite.A builder forCfnGatewayRoute.GrpcGatewayRouteRewritePropertyAn implementation forCfnGatewayRoute.GrpcGatewayRouteRewritePropertyAn object that represents the action to take if a match is determined.A builder forCfnGatewayRoute.HttpGatewayRouteActionPropertyAn implementation forCfnGatewayRoute.HttpGatewayRouteActionPropertyAn object that represents the method and value to match with the header value sent in a request.A builder forCfnGatewayRoute.HttpGatewayRouteHeaderMatchPropertyAn implementation forCfnGatewayRoute.HttpGatewayRouteHeaderMatchPropertyAn object that represents the HTTP header in the gateway route.A builder forCfnGatewayRoute.HttpGatewayRouteHeaderPropertyAn implementation forCfnGatewayRoute.HttpGatewayRouteHeaderPropertyAn object that represents the criteria for determining a request match.A builder forCfnGatewayRoute.HttpGatewayRouteMatchPropertyAn implementation forCfnGatewayRoute.HttpGatewayRouteMatchPropertyAn object that represents the path to rewrite.A builder forCfnGatewayRoute.HttpGatewayRoutePathRewritePropertyAn implementation forCfnGatewayRoute.HttpGatewayRoutePathRewritePropertyAn object representing the beginning characters of the route to rewrite.A builder forCfnGatewayRoute.HttpGatewayRoutePrefixRewritePropertyAn implementation forCfnGatewayRoute.HttpGatewayRoutePrefixRewritePropertyAn object that represents an HTTP gateway route.A builder forCfnGatewayRoute.HttpGatewayRoutePropertyAn implementation forCfnGatewayRoute.HttpGatewayRoutePropertyAn object representing the gateway route to rewrite.A builder forCfnGatewayRoute.HttpGatewayRouteRewritePropertyAn implementation forCfnGatewayRoute.HttpGatewayRouteRewritePropertyAn object representing the path to match in the request.A builder forCfnGatewayRoute.HttpPathMatchPropertyAn implementation forCfnGatewayRoute.HttpPathMatchPropertyAn object representing the query parameter to match.A builder forCfnGatewayRoute.HttpQueryParameterMatchPropertyAn implementation forCfnGatewayRoute.HttpQueryParameterMatchPropertyAn object that represents the query parameter in the request.A builder forCfnGatewayRoute.QueryParameterPropertyAn implementation forCfnGatewayRoute.QueryParameterPropertyProperties for defining aCfnGatewayRoute.A builder forCfnGatewayRoutePropsAn implementation forCfnGatewayRoutePropsA CloudFormationAWS::AppMesh::Mesh.A fluent builder forCfnMesh.An object that represents the egress filter rules for a service mesh.A builder forCfnMesh.EgressFilterPropertyAn implementation forCfnMesh.EgressFilterPropertyAn object that represents the service discovery information for a service mesh.A builder forCfnMesh.MeshServiceDiscoveryPropertyAn implementation forCfnMesh.MeshServiceDiscoveryPropertyAn object that represents the specification of a service mesh.A builder forCfnMesh.MeshSpecPropertyAn implementation forCfnMesh.MeshSpecPropertyProperties for defining aCfnMesh.A builder forCfnMeshPropsAn implementation forCfnMeshPropsA CloudFormationAWS::AppMesh::Route.A fluent builder forCfnRoute.An object that represents a duration of time.A builder forCfnRoute.DurationPropertyAn implementation forCfnRoute.DurationPropertyAn object that represents a retry policy.A builder forCfnRoute.GrpcRetryPolicyPropertyAn implementation forCfnRoute.GrpcRetryPolicyPropertyAn object that represents the action to take if a match is determined.A builder forCfnRoute.GrpcRouteActionPropertyAn implementation forCfnRoute.GrpcRouteActionPropertyAn object that represents the criteria for determining a request match.A builder forCfnRoute.GrpcRouteMatchPropertyAn implementation forCfnRoute.GrpcRouteMatchPropertyAn object that represents the match method.A builder forCfnRoute.GrpcRouteMetadataMatchMethodPropertyAn implementation forCfnRoute.GrpcRouteMetadataMatchMethodPropertyAn object that represents the match metadata for the route.A builder forCfnRoute.GrpcRouteMetadataPropertyAn implementation forCfnRoute.GrpcRouteMetadataPropertyAn object that represents a gRPC route type.A builder forCfnRoute.GrpcRoutePropertyAn implementation forCfnRoute.GrpcRoutePropertyAn object that represents types of timeouts.A builder forCfnRoute.GrpcTimeoutPropertyAn implementation forCfnRoute.GrpcTimeoutPropertyAn object that represents the method and value to match with the header value sent in a request.A builder forCfnRoute.HeaderMatchMethodPropertyAn implementation forCfnRoute.HeaderMatchMethodPropertyAn object representing the path to match in the request.A builder forCfnRoute.HttpPathMatchPropertyAn implementation forCfnRoute.HttpPathMatchPropertyAn object representing the query parameter to match.A builder forCfnRoute.HttpQueryParameterMatchPropertyAn implementation forCfnRoute.HttpQueryParameterMatchPropertyAn object that represents a retry policy.A builder forCfnRoute.HttpRetryPolicyPropertyAn implementation forCfnRoute.HttpRetryPolicyPropertyAn object that represents the action to take if a match is determined.A builder forCfnRoute.HttpRouteActionPropertyAn implementation forCfnRoute.HttpRouteActionPropertyAn object that represents the HTTP header in the request.A builder forCfnRoute.HttpRouteHeaderPropertyAn implementation forCfnRoute.HttpRouteHeaderPropertyAn object that represents the requirements for a route to match HTTP requests for a virtual router.A builder forCfnRoute.HttpRouteMatchPropertyAn implementation forCfnRoute.HttpRouteMatchPropertyAn object that represents an HTTP or HTTP/2 route type.A builder forCfnRoute.HttpRoutePropertyAn implementation forCfnRoute.HttpRoutePropertyAn object that represents types of timeouts.A builder forCfnRoute.HttpTimeoutPropertyAn implementation forCfnRoute.HttpTimeoutPropertyAn object that represents the range of values to match on.A builder forCfnRoute.MatchRangePropertyAn implementation forCfnRoute.MatchRangePropertyAn object that represents the query parameter in the request.A builder forCfnRoute.QueryParameterPropertyAn implementation forCfnRoute.QueryParameterPropertyAn object that represents a route specification.A builder forCfnRoute.RouteSpecPropertyAn implementation forCfnRoute.RouteSpecPropertyAn object that represents the action to take if a match is determined.A builder forCfnRoute.TcpRouteActionPropertyAn implementation forCfnRoute.TcpRouteActionPropertyAn object representing the TCP route to match.A builder forCfnRoute.TcpRouteMatchPropertyAn implementation forCfnRoute.TcpRouteMatchPropertyAn object that represents a TCP route type.A builder forCfnRoute.TcpRoutePropertyAn implementation forCfnRoute.TcpRoutePropertyAn object that represents types of timeouts.A builder forCfnRoute.TcpTimeoutPropertyAn implementation forCfnRoute.TcpTimeoutPropertyAn object that represents a target and its relative weight.A builder forCfnRoute.WeightedTargetPropertyAn implementation forCfnRoute.WeightedTargetPropertyProperties for defining aCfnRoute.A builder forCfnRoutePropsAn implementation forCfnRoutePropsA CloudFormationAWS::AppMesh::VirtualGateway.A fluent builder forCfnVirtualGateway.An object that represents the key value pairs for the JSON.A builder forCfnVirtualGateway.JsonFormatRefPropertyAn implementation forCfnVirtualGateway.JsonFormatRefPropertyAn object that represents the format for the logs.A builder forCfnVirtualGateway.LoggingFormatPropertyAn implementation forCfnVirtualGateway.LoggingFormatPropertyAn object that represents the methods by which a subject alternative name on a peer Transport Layer Security (TLS) certificate can be matched.A builder forCfnVirtualGateway.SubjectAlternativeNameMatchersPropertyAn implementation forCfnVirtualGateway.SubjectAlternativeNameMatchersPropertyAn object that represents the subject alternative names secured by the certificate.A builder forCfnVirtualGateway.SubjectAlternativeNamesPropertyAn implementation forCfnVirtualGateway.SubjectAlternativeNamesPropertyThe access log configuration for a virtual gateway.A builder forCfnVirtualGateway.VirtualGatewayAccessLogPropertyAn implementation forCfnVirtualGateway.VirtualGatewayAccessLogPropertyAn object that represents the default properties for a backend.A builder forCfnVirtualGateway.VirtualGatewayBackendDefaultsPropertyAn implementation forCfnVirtualGateway.VirtualGatewayBackendDefaultsPropertyAn object that represents a client policy.A builder forCfnVirtualGateway.VirtualGatewayClientPolicyPropertyAn implementation forCfnVirtualGateway.VirtualGatewayClientPolicyPropertyAn object that represents a Transport Layer Security (TLS) client policy.A builder forCfnVirtualGateway.VirtualGatewayClientPolicyTlsPropertyAn implementation forCfnVirtualGateway.VirtualGatewayClientPolicyTlsPropertyAn object that represents the virtual gateway's client's Transport Layer Security (TLS) certificate.An implementation forCfnVirtualGateway.VirtualGatewayClientTlsCertificatePropertyAn object that represents the type of virtual gateway connection pool.A builder forCfnVirtualGateway.VirtualGatewayConnectionPoolPropertyAn implementation forCfnVirtualGateway.VirtualGatewayConnectionPoolPropertyAn object that represents an access log file.A builder forCfnVirtualGateway.VirtualGatewayFileAccessLogPropertyAn implementation forCfnVirtualGateway.VirtualGatewayFileAccessLogPropertyAn object that represents a type of connection pool.An implementation forCfnVirtualGateway.VirtualGatewayGrpcConnectionPoolPropertyAn object that represents the health check policy for a virtual gateway's listener.An implementation forCfnVirtualGateway.VirtualGatewayHealthCheckPolicyPropertyAn object that represents a type of connection pool.An implementation forCfnVirtualGateway.VirtualGatewayHttp2ConnectionPoolPropertyAn object that represents a type of connection pool.An implementation forCfnVirtualGateway.VirtualGatewayHttpConnectionPoolPropertyAn object that represents a listener for a virtual gateway.A builder forCfnVirtualGateway.VirtualGatewayListenerPropertyAn implementation forCfnVirtualGateway.VirtualGatewayListenerPropertyAn object that represents an AWS Certificate Manager certificate.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsAcmCertificatePropertyAn object that represents a listener's Transport Layer Security (TLS) certificate.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsCertificatePropertyAn object that represents a local file certificate.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsFileCertificatePropertyAn object that represents the Transport Layer Security (TLS) properties for a listener.A builder forCfnVirtualGateway.VirtualGatewayListenerTlsPropertyAn implementation forCfnVirtualGateway.VirtualGatewayListenerTlsPropertyAn object that represents the virtual gateway's listener's Secret Discovery Service certificate.The proxy must be configured with a local SDS provider via a Unix Domain Socket.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsSdsCertificatePropertyAn object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsValidationContextPropertyAn object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context trust.An implementation forCfnVirtualGateway.VirtualGatewayListenerTlsValidationContextTrustPropertyAn object that represents logging information.A builder forCfnVirtualGateway.VirtualGatewayLoggingPropertyAn implementation forCfnVirtualGateway.VirtualGatewayLoggingPropertyAn object that represents a port mapping.A builder forCfnVirtualGateway.VirtualGatewayPortMappingPropertyAn implementation forCfnVirtualGateway.VirtualGatewayPortMappingPropertyAn object that represents the specification of a service mesh resource.A builder forCfnVirtualGateway.VirtualGatewaySpecPropertyAn implementation forCfnVirtualGateway.VirtualGatewaySpecPropertyAn object that represents a Transport Layer Security (TLS) validation context trust for an AWS Certificate Manager certificate.An implementation forCfnVirtualGateway.VirtualGatewayTlsValidationContextAcmTrustPropertyAn object that represents a Transport Layer Security (TLS) validation context trust for a local file.An implementation forCfnVirtualGateway.VirtualGatewayTlsValidationContextFileTrustPropertyAn object that represents a Transport Layer Security (TLS) validation context.An implementation forCfnVirtualGateway.VirtualGatewayTlsValidationContextPropertyAn object that represents a virtual gateway's listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust.An implementation forCfnVirtualGateway.VirtualGatewayTlsValidationContextSdsTrustPropertyAn object that represents a Transport Layer Security (TLS) validation context trust.An implementation forCfnVirtualGateway.VirtualGatewayTlsValidationContextTrustPropertyProperties for defining aCfnVirtualGateway.A builder forCfnVirtualGatewayPropsAn implementation forCfnVirtualGatewayPropsA CloudFormationAWS::AppMesh::VirtualNode.An object that represents the access logging information for a virtual node.A builder forCfnVirtualNode.AccessLogPropertyAn implementation forCfnVirtualNode.AccessLogPropertyAn object that represents the AWS Cloud Map attribute information for your virtual node.A builder forCfnVirtualNode.AwsCloudMapInstanceAttributePropertyAn implementation forCfnVirtualNode.AwsCloudMapInstanceAttributePropertyAn object that represents the AWS Cloud Map service discovery information for your virtual node.A builder forCfnVirtualNode.AwsCloudMapServiceDiscoveryPropertyAn implementation forCfnVirtualNode.AwsCloudMapServiceDiscoveryPropertyAn object that represents the default properties for a backend.A builder forCfnVirtualNode.BackendDefaultsPropertyAn implementation forCfnVirtualNode.BackendDefaultsPropertyAn object that represents the backends that a virtual node is expected to send outbound traffic to.A builder forCfnVirtualNode.BackendPropertyAn implementation forCfnVirtualNode.BackendPropertyA fluent builder forCfnVirtualNode.An object that represents a client policy.A builder forCfnVirtualNode.ClientPolicyPropertyAn implementation forCfnVirtualNode.ClientPolicyPropertyA reference to an object that represents a Transport Layer Security (TLS) client policy.A builder forCfnVirtualNode.ClientPolicyTlsPropertyAn implementation forCfnVirtualNode.ClientPolicyTlsPropertyAn object that represents the client's certificate.A builder forCfnVirtualNode.ClientTlsCertificatePropertyAn implementation forCfnVirtualNode.ClientTlsCertificatePropertyAn object that represents the DNS service discovery information for your virtual node.A builder forCfnVirtualNode.DnsServiceDiscoveryPropertyAn implementation forCfnVirtualNode.DnsServiceDiscoveryPropertyAn object that represents a duration of time.A builder forCfnVirtualNode.DurationPropertyAn implementation forCfnVirtualNode.DurationPropertyAn object that represents an access log file.A builder forCfnVirtualNode.FileAccessLogPropertyAn implementation forCfnVirtualNode.FileAccessLogPropertyAn object that represents types of timeouts.A builder forCfnVirtualNode.GrpcTimeoutPropertyAn implementation forCfnVirtualNode.GrpcTimeoutPropertyAn object that represents the health check policy for a virtual node's listener.A builder forCfnVirtualNode.HealthCheckPropertyAn implementation forCfnVirtualNode.HealthCheckPropertyAn object that represents types of timeouts.A builder forCfnVirtualNode.HttpTimeoutPropertyAn implementation forCfnVirtualNode.HttpTimeoutPropertyAn object that represents the key value pairs for the JSON.A builder forCfnVirtualNode.JsonFormatRefPropertyAn implementation forCfnVirtualNode.JsonFormatRefPropertyAn object that represents a listener for a virtual node.A builder forCfnVirtualNode.ListenerPropertyAn implementation forCfnVirtualNode.ListenerPropertyAn object that represents timeouts for different protocols.A builder forCfnVirtualNode.ListenerTimeoutPropertyAn implementation forCfnVirtualNode.ListenerTimeoutPropertyAn object that represents an AWS Certificate Manager certificate.A builder forCfnVirtualNode.ListenerTlsAcmCertificatePropertyAn implementation forCfnVirtualNode.ListenerTlsAcmCertificatePropertyAn object that represents a listener's Transport Layer Security (TLS) certificate.A builder forCfnVirtualNode.ListenerTlsCertificatePropertyAn implementation forCfnVirtualNode.ListenerTlsCertificatePropertyAn object that represents a local file certificate.A builder forCfnVirtualNode.ListenerTlsFileCertificatePropertyAn implementation forCfnVirtualNode.ListenerTlsFileCertificatePropertyAn object that represents the Transport Layer Security (TLS) properties for a listener.A builder forCfnVirtualNode.ListenerTlsPropertyAn implementation forCfnVirtualNode.ListenerTlsPropertyAn object that represents the listener's Secret Discovery Service certificate.A builder forCfnVirtualNode.ListenerTlsSdsCertificatePropertyAn implementation forCfnVirtualNode.ListenerTlsSdsCertificatePropertyAn object that represents a listener's Transport Layer Security (TLS) validation context.A builder forCfnVirtualNode.ListenerTlsValidationContextPropertyAn implementation forCfnVirtualNode.ListenerTlsValidationContextPropertyAn object that represents a listener's Transport Layer Security (TLS) validation context trust.A builder forCfnVirtualNode.ListenerTlsValidationContextTrustPropertyAn implementation forCfnVirtualNode.ListenerTlsValidationContextTrustPropertyAn object that represents the format for the logs.A builder forCfnVirtualNode.LoggingFormatPropertyAn implementation forCfnVirtualNode.LoggingFormatPropertyAn object that represents the logging information for a virtual node.A builder forCfnVirtualNode.LoggingPropertyAn implementation forCfnVirtualNode.LoggingPropertyAn object that represents the outlier detection for a virtual node's listener.A builder forCfnVirtualNode.OutlierDetectionPropertyAn implementation forCfnVirtualNode.OutlierDetectionPropertyAn object representing a virtual node or virtual router listener port mapping.A builder forCfnVirtualNode.PortMappingPropertyAn implementation forCfnVirtualNode.PortMappingPropertyAn object that represents the service discovery information for a virtual node.A builder forCfnVirtualNode.ServiceDiscoveryPropertyAn implementation forCfnVirtualNode.ServiceDiscoveryPropertyAn object that represents the methods by which a subject alternative name on a peer Transport Layer Security (TLS) certificate can be matched.A builder forCfnVirtualNode.SubjectAlternativeNameMatchersPropertyAn implementation forCfnVirtualNode.SubjectAlternativeNameMatchersPropertyAn object that represents the subject alternative names secured by the certificate.A builder forCfnVirtualNode.SubjectAlternativeNamesPropertyAn implementation forCfnVirtualNode.SubjectAlternativeNamesPropertyAn object that represents types of timeouts.A builder forCfnVirtualNode.TcpTimeoutPropertyAn implementation forCfnVirtualNode.TcpTimeoutPropertyAn object that represents a Transport Layer Security (TLS) validation context trust for an AWS Certificate Manager certificate.A builder forCfnVirtualNode.TlsValidationContextAcmTrustPropertyAn implementation forCfnVirtualNode.TlsValidationContextAcmTrustPropertyAn object that represents a Transport Layer Security (TLS) validation context trust for a local file.A builder forCfnVirtualNode.TlsValidationContextFileTrustPropertyAn implementation forCfnVirtualNode.TlsValidationContextFileTrustPropertyAn object that represents how the proxy will validate its peer during Transport Layer Security (TLS) negotiation.A builder forCfnVirtualNode.TlsValidationContextPropertyAn implementation forCfnVirtualNode.TlsValidationContextPropertyAn object that represents a Transport Layer Security (TLS) Secret Discovery Service validation context trust.A builder forCfnVirtualNode.TlsValidationContextSdsTrustPropertyAn implementation forCfnVirtualNode.TlsValidationContextSdsTrustPropertyAn object that represents a Transport Layer Security (TLS) validation context trust.A builder forCfnVirtualNode.TlsValidationContextTrustPropertyAn implementation forCfnVirtualNode.TlsValidationContextTrustPropertyAn object that represents the type of virtual node connection pool.A builder forCfnVirtualNode.VirtualNodeConnectionPoolPropertyAn implementation forCfnVirtualNode.VirtualNodeConnectionPoolPropertyAn object that represents a type of connection pool.A builder forCfnVirtualNode.VirtualNodeGrpcConnectionPoolPropertyAn implementation forCfnVirtualNode.VirtualNodeGrpcConnectionPoolPropertyAn object that represents a type of connection pool.A builder forCfnVirtualNode.VirtualNodeHttp2ConnectionPoolPropertyAn implementation forCfnVirtualNode.VirtualNodeHttp2ConnectionPoolPropertyAn object that represents a type of connection pool.A builder forCfnVirtualNode.VirtualNodeHttpConnectionPoolPropertyAn implementation forCfnVirtualNode.VirtualNodeHttpConnectionPoolPropertyAn object that represents the specification of a virtual node.A builder forCfnVirtualNode.VirtualNodeSpecPropertyAn implementation forCfnVirtualNode.VirtualNodeSpecPropertyAn object that represents a type of connection pool.A builder forCfnVirtualNode.VirtualNodeTcpConnectionPoolPropertyAn implementation forCfnVirtualNode.VirtualNodeTcpConnectionPoolPropertyAn object that represents a virtual service backend for a virtual node.A builder forCfnVirtualNode.VirtualServiceBackendPropertyAn implementation forCfnVirtualNode.VirtualServiceBackendPropertyProperties for defining aCfnVirtualNode.A builder forCfnVirtualNodePropsAn implementation forCfnVirtualNodePropsA CloudFormationAWS::AppMesh::VirtualRouter.A fluent builder forCfnVirtualRouter.An object representing a virtual router listener port mapping.A builder forCfnVirtualRouter.PortMappingPropertyAn implementation forCfnVirtualRouter.PortMappingPropertyAn object that represents a virtual router listener.A builder forCfnVirtualRouter.VirtualRouterListenerPropertyAn implementation forCfnVirtualRouter.VirtualRouterListenerPropertyAn object that represents the specification of a virtual router.A builder forCfnVirtualRouter.VirtualRouterSpecPropertyAn implementation forCfnVirtualRouter.VirtualRouterSpecPropertyProperties for defining aCfnVirtualRouter.A builder forCfnVirtualRouterPropsAn implementation forCfnVirtualRouterPropsA CloudFormationAWS::AppMesh::VirtualService.A fluent builder forCfnVirtualService.An object that represents a virtual node service provider.A builder forCfnVirtualService.VirtualNodeServiceProviderPropertyAn implementation forCfnVirtualService.VirtualNodeServiceProviderPropertyAn object that represents a virtual node service provider.A builder forCfnVirtualService.VirtualRouterServiceProviderPropertyAn implementation forCfnVirtualService.VirtualRouterServiceProviderPropertyAn object that represents the provider for a virtual service.A builder forCfnVirtualService.VirtualServiceProviderPropertyAn implementation forCfnVirtualService.VirtualServiceProviderPropertyAn object that represents the specification of a virtual service.A builder forCfnVirtualService.VirtualServiceSpecPropertyAn implementation forCfnVirtualService.VirtualServiceSpecPropertyProperties for defining aCfnVirtualService.A builder forCfnVirtualServicePropsAn implementation forCfnVirtualServicePropsBase options for all gateway route specs.A builder forCommonGatewayRouteSpecOptionsAn implementation forCommonGatewayRouteSpecOptionsEnum of DNS service discovery response type.GatewayRoute represents a new or existing gateway route attached to a VirtualGateway and Mesh.A fluent builder forGatewayRoute.Interface with properties necessary to import a reusable GatewayRoute.A builder forGatewayRouteAttributesAn implementation forGatewayRouteAttributesBasic configuration properties for a GatewayRoute.A builder forGatewayRouteBasePropsAn implementation forGatewayRouteBasePropsUsed to generate host name matching methods.Configuration for gateway route host name match.A builder forGatewayRouteHostnameMatchConfigAn implementation forGatewayRouteHostnameMatchConfigProperties to define a new GatewayRoute.A builder forGatewayRoutePropsAn implementation forGatewayRoutePropsUsed to generate specs with different protocols for a GatewayRoute.All Properties for GatewayRoute Specs.A builder forGatewayRouteSpecConfigAn implementation forGatewayRouteSpecConfigConnection pool properties for gRPC listeners.A builder forGrpcConnectionPoolAn implementation forGrpcConnectionPoolRepresents the properties needed to define GRPC Listeners for a VirtualGateway.A builder forGrpcGatewayListenerOptionsAn implementation forGrpcGatewayListenerOptionsThe criterion for determining a request match for this GatewayRoute.A builder forGrpcGatewayRouteMatchAn implementation forGrpcGatewayRouteMatchProperties specific for a gRPC GatewayRoute.A builder forGrpcGatewayRouteSpecOptionsAn implementation forGrpcGatewayRouteSpecOptionsProperties used to define GRPC Based healthchecks.A builder forGrpcHealthCheckOptionsAn implementation forGrpcHealthCheckOptionsgRPC events.gRPC retry policy.A builder forGrpcRetryPolicyAn implementation forGrpcRetryPolicyThe criterion for determining a request match for this Route.A builder forGrpcRouteMatchAn implementation forGrpcRouteMatchProperties specific for a GRPC Based Routes.A builder forGrpcRouteSpecOptionsAn implementation forGrpcRouteSpecOptionsRepresents timeouts for GRPC protocols.A builder forGrpcTimeoutAn implementation forGrpcTimeoutRepresent the GRPC Node Listener prorperty.A builder forGrpcVirtualNodeListenerOptionsAn implementation forGrpcVirtualNodeListenerOptionsUsed to generate header matching methods.Configuration forHeaderMatch.A builder forHeaderMatchConfigAn implementation forHeaderMatchConfigContains static factory methods for creating health checks for different protocols.Options used for creating the Health Check object.A builder forHealthCheckBindOptionsAn implementation forHealthCheckBindOptionsAll Properties for Health Checks for mesh endpoints.A builder forHealthCheckConfigAn implementation forHealthCheckConfigConnection pool properties for HTTP2 listeners.A builder forHttp2ConnectionPoolAn implementation forHttp2ConnectionPoolRepresents the properties needed to define HTTP2 Listeners for a VirtualGateway.A builder forHttp2GatewayListenerOptionsAn implementation forHttp2GatewayListenerOptionsRepresent the HTTP2 Node Listener prorperty.A builder forHttp2VirtualNodeListenerOptionsAn implementation forHttp2VirtualNodeListenerOptionsConnection pool properties for HTTP listeners.A builder forHttpConnectionPoolAn implementation forHttpConnectionPoolRepresents the properties needed to define HTTP Listeners for a VirtualGateway.A builder forHttpGatewayListenerOptionsAn implementation forHttpGatewayListenerOptionsThe criterion for determining a request match for this GatewayRoute.A builder forHttpGatewayRouteMatchAn implementation forHttpGatewayRouteMatchDefines HTTP gateway route matching based on the URL path of the request.The type returned from the `bind()` method inHttpGatewayRoutePathMatch.A builder forHttpGatewayRoutePathMatchConfigAn implementation forHttpGatewayRoutePathMatchConfigProperties specific for HTTP Based GatewayRoutes.A builder forHttpGatewayRouteSpecOptionsAn implementation forHttpGatewayRouteSpecOptionsProperties used to define HTTP Based healthchecks.A builder forHttpHealthCheckOptionsAn implementation forHttpHealthCheckOptionsHTTP events on which to retry.HTTP retry policy.A builder forHttpRetryPolicyAn implementation forHttpRetryPolicyThe criterion for determining a request match for this Route.A builder forHttpRouteMatchAn implementation forHttpRouteMatchSupported values for matching routes based on the HTTP request method.Defines HTTP route matching based on the URL path of the request.The type returned from the `bind()` method inHttpRoutePathMatch.A builder forHttpRoutePathMatchConfigAn implementation forHttpRoutePathMatchConfigSupported :scheme options for HTTP2.Properties specific for HTTP Based Routes.A builder forHttpRouteSpecOptionsAn implementation forHttpRouteSpecOptionsRepresents timeouts for HTTP protocols.A builder forHttpTimeoutAn implementation forHttpTimeoutRepresent the HTTP Node Listener prorperty.A builder forHttpVirtualNodeListenerOptionsAn implementation forHttpVirtualNodeListenerOptionsInterface for which all GatewayRoute based classes MUST implement.Internal default implementation forIGatewayRoute.A proxy class which represents a concrete javascript instance of this type.Interface which all Mesh based classes MUST implement.Internal default implementation forIMesh.A proxy class which represents a concrete javascript instance of this type.Interface for which all Route based classes MUST implement.Internal default implementation forIRoute.A proxy class which represents a concrete javascript instance of this type.Interface which all Virtual Gateway based classes must implement.Internal default implementation forIVirtualGateway.A proxy class which represents a concrete javascript instance of this type.Interface which all VirtualNode based classes must implement.Internal default implementation forIVirtualNode.A proxy class which represents a concrete javascript instance of this type.Interface which all VirtualRouter based classes MUST implement.Internal default implementation forIVirtualRouter.A proxy class which represents a concrete javascript instance of this type.Represents the interface which all VirtualService based classes MUST implement.Internal default implementation forIVirtualService.A proxy class which represents a concrete javascript instance of this type.Represents TLS properties for listener.A builder forListenerTlsOptionsAn implementation forListenerTlsOptionsDefine a new AppMesh mesh.A fluent builder forMesh.A utility enum defined for the egressFilter type property, the default of DROP_ALL, allows traffic only to other resources inside the mesh, or API calls to amazon resources.The set of properties used when creating a Mesh.A builder forMeshPropsAn implementation forMeshPropsRepresents a TLS certificate that is supported for mutual TLS authentication.Represents the properties needed to define TLS Validation context that is supported for mutual TLS authentication.A builder forMutualTlsValidationAn implementation forMutualTlsValidationRepresents a TLS Validation Context Trust that is supported for mutual TLS authentication.Represents the outlier detection for a listener.A builder forOutlierDetectionAn implementation forOutlierDetectionDeprecated.not for use outside packageUsed to generate query parameter matching methods.Configuration forQueryParameterMatch.A builder forQueryParameterMatchConfigAn implementation forQueryParameterMatchConfigRoute represents a new or existing route attached to a VirtualRouter and Mesh.A fluent builder forRoute.Interface with properties ncecessary to import a reusable Route.A builder forRouteAttributesAn implementation forRouteAttributesBase interface properties for all Routes.A builder forRouteBasePropsAn implementation forRouteBasePropsProperties to define new Routes.A builder forRoutePropsAn implementation forRoutePropsUsed to generate specs with different protocols for a RouteSpec.All Properties for Route Specs.A builder forRouteSpecConfigAn implementation forRouteSpecConfigBase options for all route specs.A builder forRouteSpecOptionsBaseAn implementation forRouteSpecOptionsBaseProvides the Service Discovery method a VirtualNode uses.Properties for VirtualNode Service Discovery.A builder forServiceDiscoveryConfigAn implementation forServiceDiscoveryConfigUsed to generate Subject Alternative Names Matchers.All Properties for Subject Alternative Names Matcher for both Client Policy and Listener.A builder forSubjectAlternativeNamesMatcherConfigAn implementation forSubjectAlternativeNamesMatcherConfigConnection pool properties for TCP listeners.A builder forTcpConnectionPoolAn implementation forTcpConnectionPoolProperties used to define TCP Based healthchecks.A builder forTcpHealthCheckOptionsAn implementation forTcpHealthCheckOptionsTCP events on which you may retry.Properties specific for a TCP Based Routes.A builder forTcpRouteSpecOptionsAn implementation forTcpRouteSpecOptionsRepresents timeouts for TCP protocols.A builder forTcpTimeoutAn implementation forTcpTimeoutRepresent the TCP Node Listener prorperty.A builder forTcpVirtualNodeListenerOptionsAn implementation forTcpVirtualNodeListenerOptionsRepresents a TLS certificate.A wrapper for the tls config returned byTlsCertificate.bind.A builder forTlsCertificateConfigAn implementation forTlsCertificateConfigRepresents the properties needed to define client policy.A builder forTlsClientPolicyAn implementation forTlsClientPolicyEnum of supported TLS modes.Represents the properties needed to define TLS Validation context.A builder forTlsValidationAn implementation forTlsValidationDefines the TLS Validation Context Trust.All Properties for TLS Validation Trusts for both Client Policy and Listener.A builder forTlsValidationTrustConfigAn implementation forTlsValidationTrustConfigVirtualGateway represents a newly defined App Mesh Virtual Gateway.A fluent builder forVirtualGateway.Unterface with properties necessary to import a reusable VirtualGateway.A builder forVirtualGatewayAttributesAn implementation forVirtualGatewayAttributesBasic configuration properties for a VirtualGateway.A builder forVirtualGatewayBasePropsAn implementation forVirtualGatewayBasePropsRepresents the properties needed to define listeners for a VirtualGateway.Properties for a VirtualGateway listener.A builder forVirtualGatewayListenerConfigAn implementation forVirtualGatewayListenerConfigProperties used when creating a new VirtualGateway.A builder forVirtualGatewayPropsAn implementation forVirtualGatewayPropsVirtualNode represents a newly defined AppMesh VirtualNode.A fluent builder forVirtualNode.Interface with properties necessary to import a reusable VirtualNode.A builder forVirtualNodeAttributesAn implementation forVirtualNodeAttributesBasic configuration properties for a VirtualNode.A builder forVirtualNodeBasePropsAn implementation forVirtualNodeBasePropsDefines listener for a VirtualNode.Properties for a VirtualNode listener.A builder forVirtualNodeListenerConfigAn implementation forVirtualNodeListenerConfigThe properties used when creating a new VirtualNode.A builder forVirtualNodePropsAn implementation forVirtualNodePropsExample:A fluent builder forVirtualRouter.Interface with properties ncecessary to import a reusable VirtualRouter.A builder forVirtualRouterAttributesAn implementation forVirtualRouterAttributesInterface with base properties all routers willl inherit.A builder forVirtualRouterBasePropsAn implementation forVirtualRouterBasePropsRepresents the properties needed to define listeners for a VirtualRouter.Properties for a VirtualRouter listener.A builder forVirtualRouterListenerConfigAn implementation forVirtualRouterListenerConfigThe properties used when creating a new VirtualRouter.A builder forVirtualRouterPropsAn implementation forVirtualRouterPropsVirtualService represents a service inside an AppMesh.A fluent builder forVirtualService.Interface with properties ncecessary to import a reusable VirtualService.A builder forVirtualServiceAttributesAn implementation forVirtualServiceAttributesRepresents the properties needed to define a Virtual Service backend.A builder forVirtualServiceBackendOptionsAn implementation forVirtualServiceBackendOptionsThe properties applied to the VirtualService being defined.A builder forVirtualServicePropsAn implementation forVirtualServicePropsRepresents the properties needed to define the provider for a VirtualService.Properties for a VirtualService provider.A builder forVirtualServiceProviderConfigAn implementation forVirtualServiceProviderConfigProperties for the Weighted Targets in the route.A builder forWeightedTargetAn implementation forWeightedTarget