walkthroughs/howto-cross-account/primary-account/mesh.yaml (85 lines of code) (raw):
Parameters:
ProjectName:
Type: String
Description: Project name to link stacks
Resources:
Mesh:
Type: AWS::AppMesh::Mesh
Properties:
MeshName: !Sub '${ProjectName}-mesh'
VirtualGateway:
Type: AWS::AppMesh::VirtualGateway
Properties:
MeshName: !GetAtt Mesh.MeshName
Spec:
Listeners:
- PortMapping:
Port: 80
Protocol: http
VirtualGatewayName: gateway-vg
GatewayRoute:
Type: AWS::AppMesh::GatewayRoute
Properties:
GatewayRouteName: gateway-gr
MeshName: !GetAtt Mesh.MeshName
Spec:
HttpRoute:
Action:
Target:
VirtualService:
VirtualServiceName: !GetAtt VirtualService.VirtualServiceName
Match:
Prefix: /
VirtualGatewayName: !GetAtt VirtualGateway.VirtualGatewayName
BackendNode:
Type: AWS::AppMesh::VirtualNode
Properties:
MeshName: !GetAtt Mesh.MeshName
VirtualNodeName: backend-1-vn
Spec:
Listeners:
- PortMapping:
Port: 80
Protocol: http
ServiceDiscovery:
AWSCloudMap:
NamespaceName: !Sub '${ProjectName}.local'
ServiceName: backend
VirtualRouter:
Type: AWS::AppMesh::VirtualRouter
Properties:
MeshName: !GetAtt Mesh.MeshName
VirtualRouterName: backend-vr
Spec:
Listeners:
- PortMapping:
Port: 80
Protocol: http
VirtualService:
DependsOn:
- VirtualRouter
Type: AWS::AppMesh::VirtualService
Properties:
MeshName: !GetAtt Mesh.MeshName
VirtualServiceName: !Sub 'backend.${ProjectName}.local'
Spec:
Provider:
VirtualRouter:
VirtualRouterName: backend-vr
Route:
DependsOn:
- VirtualRouter
- BackendNode
Type: AWS::AppMesh::Route
Properties:
MeshName: !GetAtt Mesh.MeshName
VirtualRouterName: backend-vr
RouteName: backend-route
Spec:
HttpRoute:
Action:
WeightedTargets:
- VirtualNode: backend-1-vn
Weight: 1
Match:
Prefix: /