VirtualNode
The VirtualNode resource lets you manage AWS AppMesh VirtualNodes that define the communication between your services in a mesh. VirtualNodes are key components that represent a logical pointer to a service and facilitate traffic routing.
Minimal Example
Section titled “Minimal Example”This example demonstrates how to create a basic VirtualNode with required properties and one optional property.
import AWS from "alchemy/aws/control";
const virtualNode = await AWS.AppMesh.VirtualNode("basicVirtualNode", { MeshName: "myAppMesh", Spec: { ServiceDiscovery: { DNS: { Hostname: "my-service.local" } }, Listeners: [ { PortMapping: { Port: 8080, Protocol: "http" } } ] }, VirtualNodeName: "myVirtualNode"});
Advanced Configuration
Section titled “Advanced Configuration”This example illustrates how to configure a VirtualNode with enhanced settings, such as health checks and additional listeners.
const advancedVirtualNode = await AWS.AppMesh.VirtualNode("advancedVirtualNode", { MeshName: "myAppMesh", Spec: { ServiceDiscovery: { DNS: { Hostname: "my-service.local" } }, Listeners: [ { PortMapping: { Port: 8080, Protocol: "http" }, HealthCheck: { HealthyThreshold: 2, IntervalMillis: 5000, TimeoutMillis: 2000, UnhealthyThreshold: 2, Path: "/health", Protocol: "http" } }, { PortMapping: { Port: 8443, Protocol: "http2" } } ] }, VirtualNodeName: "myAdvancedVirtualNode", Tags: [{ Key: "Environment", Value: "Production" }]});
Traffic Routing Example
Section titled “Traffic Routing Example”This example shows how to define a VirtualNode with traffic routing to multiple services based on weights.
const trafficRoutingVirtualNode = await AWS.AppMesh.VirtualNode("trafficRoutingVirtualNode", { MeshName: "myAppMesh", Spec: { ServiceDiscovery: { DNS: { Hostname: "my-service.local" } }, Listeners: [ { PortMapping: { Port: 8080, Protocol: "http" } } ], BackendDefaults: { ClientPolicy: { TLS: { Enforce: true, Ports: [8080], Validation: { Trust: { CertificateAuthorityArns: ["arn:aws:acm:region:account-id:certificate/certificate-id"] } } } } } }, VirtualNodeName: "myTrafficRoutingVirtualNode"});