Creates a virtual router within a service mesh.
Specify a listener
for any inbound traffic that your virtual router
receives. Create a virtual router for each protocol and port that you need to route.
Virtual routers handle traffic for one or more virtual services within your mesh. After you
create your virtual router, create and associate routes for your virtual router that direct
incoming requests to different virtual nodes.
For more information about virtual routers, see Virtual routers.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{
"Type" : "AWS::AppMesh::VirtualRouter",
"Properties" : {
"MeshName" : String
,
"MeshOwner" : String
,
"Spec" : VirtualRouterSpec
,
"Tags" : [ Tag, ... ]
,
"VirtualRouterName" : String
}
}
YAML
Type: AWS::AppMesh::VirtualRouter
Properties:
MeshName: String
MeshOwner: String
Spec:
VirtualRouterSpec
Tags:
- Tag
VirtualRouterName: String
Properties
MeshName
-
The name of the service mesh to create the virtual router in.
Required: Yes
Type: String
Minimum:
1
Maximum:
255
Update requires: Replacement
MeshOwner
-
The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see Working with shared meshes.
Required: No
Type: String
Minimum:
12
Maximum:
12
Update requires: Replacement
Spec
-
The virtual router specification to apply.
Required: Yes
Type: VirtualRouterSpec
Update requires: No interruption
-
Optional metadata that you can apply to the virtual router to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.
Required: No
Type: Array of Tag
Minimum:
0
Maximum:
50
Update requires: No interruption
VirtualRouterName
-
The name to use for the virtual router.
Required: No
Type: String
Minimum:
1
Maximum:
255
Update requires: Replacement
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the resource ARN. For example:
{ "Ref": "myVirtualRouter" }
When you pass the logical ID of an AWS::AppMesh::VirtualRouter
resource to
the intrinsic Ref function, the function returns the virtual router ARN, such as
arn:aws:appmesh:us-east-1:555555555555:virtualRouter/myVirtualRouter
.
For more information about using the Ref
function, see Ref
.
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt
.
Arn
-
The full Amazon Resource Name (ARN) for the virtual router.
MeshName
-
The name of the service mesh that the virtual router resides in.
MeshOwner
-
The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see Working with Shared Meshes.
ResourceOwner
-
The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see Working with Shared Meshes.
Uid
-
The unique identifier for the virtual router.
VirtualRouterName
-
The name of the virtual router.
Examples
Create a Virtual Router
This example creates a basic virtual router with an HTTP port mapping and two tags.
JSON
{
"Description": "Basic Test Virtual Router",
"Resources": {
"BasicVirtualRouter": {
"Type": "AWS::AppMesh::VirtualRouter",
"Properties": {
"VirtualRouterName": "TestVirtualRouter",
"MeshName": null,
"Spec": {
"Listeners": [
{
"PortMapping": {
"Port": 8080,
"Protocol": "http"
}
}
]
},
"Tags": [
{
"Key": "Key1",
"Value": "Value1"
},
{
"Key": "Key2",
"Value": "Value2"
}
]
}
}
},
"Outputs": {
"VirtualRouterName": {
"Description": "Name of the VirtualRouter",
"Value": {
"Fn::GetAtt": [
"BasicVirtualRouter",
"VirtualRouterName"
]
}
},
"MeshName": {
"Description": "Name of the Mesh",
"Value": {
"Fn::GetAtt": [
"BasicVirtualRouter",
"MeshName"
]
}
},
"Arn": {
"Description": "Arn of the VirtualRouter created",
"Value": {
"Fn::GetAtt": [
"BasicVirtualRouter",
"Arn"
]
}
},
"Uid": {
"Description": "Uid of the VirtualRouter created",
"Value": {
"Fn::GetAtt": [
"BasicVirtualRouter",
"Uid"
]
}
}
}
}
YAML
Description: Basic Test Virtual Router
Resources:
BasicVirtualRouter:
Type: AWS::AppMesh::VirtualRouter
Properties:
VirtualRouterName: TestVirtualRouter
MeshName:
Spec:
Listeners:
- PortMapping:
Port: 8080
Protocol: http
Tags:
- Key: Key1
Value: Value1
- Key: Key2
Value: Value2
Outputs:
VirtualRouterName:
Description: Name of the VirtualRouter
Value:
Fn::GetAtt:
- BasicVirtualRouter
- VirtualRouterName
MeshName:
Description: Name of the Mesh
Value:
Fn::GetAtt:
- BasicVirtualRouter
- MeshName
Arn:
Description: Arn of the VirtualRouter created
Value:
Fn::GetAtt:
- BasicVirtualRouter
- Arn
Uid:
Description: Uid of the VirtualRouter created
Value:
Fn::GetAtt:
- BasicVirtualRouter
- Uid
See also
-
Virtual Routers in the AWS App Mesh User Guide .
-
CreateVirtualRouter in the AWS App Mesh API Reference .