Create the virtual service
- Like you did previously, start by creating a virtual node.
# Define variables #
EXT_LOAD_BALANCER=$(jq < cfn-output.json -r '.ExternalLoadBalancerDNS');
SPEC=$(cat <<-EOF
{
"serviceDiscovery": {
"dns": {
"hostname": "$EXT_LOAD_BALANCER"
}
},
"backends": [
{
"virtualService": {
"virtualServiceName": "crystal.appmeshworkshop.hosted.local"
}
},
{
"virtualService": {
"virtualServiceName": "nodejs.appmeshworkshop.hosted.local"
}
}
],
"logging": {
"accessLog": {
"file": {
"path": "/dev/stdout"
}
}
},
"listeners": [
{
"healthCheck": {
"healthyThreshold": 3,
"intervalMillis": 10000,
"path": "/health",
"port": 3000,
"protocol": "http",
"timeoutMillis": 5000,
"unhealthyThreshold": 3
},
"portMapping": { "port": 3000, "protocol": "http" }
}
]
}
EOF
); \
# Create app mesh virtual node #
aws appmesh create-virtual-node \
--mesh-name appmesh-workshop \
--virtual-node-name frontend \
--spec "$SPEC"
- Create the virtual service.
# Define variables #
SPEC=$(cat <<-EOF
{
"provider": {
"virtualNode": {
"virtualNodeName": "frontend"
}
}
}
EOF
); \
# Create app mesh virtual service #
aws appmesh create-virtual-service \
--mesh-name appmesh-workshop \
--virtual-service-name frontend.appmeshworkshop.hosted.local \
--spec "$SPEC"