» Resource: aws_appmesh_virtual_node
Provides an AWS App Mesh virtual node resource.
» Breaking Changes
Because of backward incompatible API changes (read here), aws_appmesh_virtual_node resource definitions created with provider versions earlier than v2.3.0 will need to be modified:
-
Rename the
service_nameattribute of thednsobject tohostname. -
Replace the
backendsattribute of thespecobject with one or morebackendconfiguration blocks, settingvirtual_service_nameto the name of the service.
The Terraform state associated with existing resources will automatically be migrated.
» Example Usage
» Basic
resource "aws_appmesh_virtual_node" "serviceb1" {
name = "serviceBv1"
mesh_name = "${aws_appmesh_mesh.simple.id}"
spec {
backend {
virtual_service {
virtual_service_name = "servicea.simpleapp.local"
}
}
listener {
port_mapping {
port = 8080
protocol = "http"
}
}
service_discovery {
dns {
hostname = "serviceb.simpleapp.local"
}
}
}
}
» Listener Health Check
resource "aws_appmesh_virtual_node" "serviceb1" {
name = "serviceBv1"
mesh_name = "${aws_appmesh_mesh.simple.id}"
spec {
backend {
virtual_service {
virtual_service_name = "servicea.simpleapp.local"
}
}
listener {
port_mapping {
port = 8080
protocol = "http"
}
health_check {
protocol = "http"
path = "/ping"
healthy_threshold = 2
unhealthy_threshold = 2
timeout_millis = 2000
interval_millis = 5000
}
}
service_discovery {
dns {
hostname = "serviceb.simpleapp.local"
}
}
}
}
» Logging
resource "aws_appmesh_virtual_node" "serviceb1" {
name = "serviceBv1"
mesh_name = "${aws_appmesh_mesh.simple.id}"
spec {
backend {
virtual_service {
virtual_service_name = "servicea.simpleapp.local"
}
}
listener {
port_mapping {
port = 8080
protocol = "http"
}
}
service_discovery {
dns {
hostname = "serviceb.simpleapp.local"
}
}
logging {
access_log {
file {
path = "/dev/stdout"
}
}
}
}
}
» Argument Reference
The following arguments are supported:
-
name- (Required) The name to use for the virtual node. -
mesh_name- (Required) The name of the service mesh in which to create the virtual node. -
spec- (Required) The virtual node specification to apply.
The spec object supports the following:
-
backend- (Optional) The backends to which the virtual node is expected to send outbound traffic. -
listener- (Optional) The listeners from which the virtual node is expected to receive inbound traffic. -
logging- (Optional) The inbound and outbound access logging information for the virtual node. -
service_discovery- (Optional) The service discovery information for the virtual node.
The backend object supports the following:
-
virtual_service- (Optional) Specifies a virtual service to use as a backend for a virtual node.
The virtual_service object supports the following:
-
virtual_service_name- (Required) The name of the virtual service that is acting as a virtual node backend.
The listener object supports the following:
-
port_mapping- (Required) The port mapping information for the listener. -
health_check- (Optional) The health check information for the listener.
The logging object supports the following:
-
access_log- (Optional) The access log configuration for a virtual node.
The access_log object supports the following:
-
file- (Optional) The file object to send virtual node access logs to.
The file object supports the following:
-
path- (Required) The file path to write access logs to. You can use/dev/stdoutto send access logs to standard out.
The service_discovery object supports the following:
-
dns- (Required) Specifies the DNS service name for the virtual node.
The dns object supports the following:
-
hostname- (Required) The DNS host name for your virtual node.
The port_mapping object supports the following:
-
port- (Required) The port used for the port mapping. -
protocol- (Required) The protocol used for the port mapping. Valid values arehttpandtcp.
The health_check object supports the following:
-
healthy_threshold- (Required) The number of consecutive successful health checks that must occur before declaring listener healthy. -
interval_millis- (Required) The time period in milliseconds between each health check execution. -
protocol- (Required) The protocol for the health check request. Valid values arehttpandtcp. -
timeout_millis- (Required) The amount of time to wait when receiving a response from the health check, in milliseconds. -
unhealthy_threshold- (Required) The number of consecutive failed health checks that must occur before declaring a virtual node unhealthy. -
path- (Optional) The destination path for the health check request. This is only required if the specified protocol ishttp. -
port- (Optional) The destination port for the health check request. This port must match the port defined in theport_mappingfor the listener.
» Attributes Reference
In addition to all arguments above, the following attributes are exported:
-
id- The ID of the virtual node. -
arn- The ARN of the virtual node. -
created_date- The creation date of the virtual node. -
last_updated_date- The last update date of the virtual node.
» Import
App Mesh virtual nodes can be imported using mesh_name together with the virtual node's name,
e.g.
$ terraform import aws_appmesh_virtual_node.serviceb1 simpleapp/serviceBv1