

This is the new *CloudFormation Template Reference Guide*. Please update your bookmarks and links. For help getting started with CloudFormation, see the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# AWS::AppMesh::VirtualNode
<a name="aws-resource-appmesh-virtualnode"></a>

Creates a virtual node within a service mesh.

 A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment. When you create a virtual node, you can specify the service discovery information for your task group, and whether the proxy running in a task group will communicate with other proxies using Transport Layer Security (TLS).

You define a `listener` for any inbound traffic that your virtual node expects. Any virtual service that your virtual node expects to communicate to is specified as a `backend`.

The response metadata for your new virtual node contains the `arn` that is associated with the virtual node. Set this value to the full ARN; for example, `arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp`) as the `APPMESH_RESOURCE_ARN` environment variable for your task group's Envoy proxy container in your task definition or pod spec. This is then mapped to the `node.id` and `node.cluster` Envoy parameters.

**Note**  
By default, App Mesh uses the name of the resource you specified in `APPMESH_RESOURCE_ARN` when Envoy is referring to itself in metrics and traces. You can override this behavior by setting the `APPMESH_RESOURCE_CLUSTER` environment variable with your own name.

For more information about virtual nodes, see [Virtual nodes](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html). You must be using `1.15.0` or later of the Envoy image when setting these variables. For more information aboutApp Mesh Envoy variables, see [Envoy image](https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html) in the AWS App Mesh User Guide.

## Syntax
<a name="aws-resource-appmesh-virtualnode-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-resource-appmesh-virtualnode-syntax.json"></a>

```
{
  "Type" : "AWS::AppMesh::VirtualNode",
  "Properties" : {
      "[MeshName](#cfn-appmesh-virtualnode-meshname)" : String,
      "[MeshOwner](#cfn-appmesh-virtualnode-meshowner)" : String,
      "[Spec](#cfn-appmesh-virtualnode-spec)" : VirtualNodeSpec,
      "[Tags](#cfn-appmesh-virtualnode-tags)" : [ Tag, ... ],
      "[VirtualNodeName](#cfn-appmesh-virtualnode-virtualnodename)" : String
    }
}
```

### YAML
<a name="aws-resource-appmesh-virtualnode-syntax.yaml"></a>

```
Type: AWS::AppMesh::VirtualNode
Properties:
  [MeshName](#cfn-appmesh-virtualnode-meshname): String
  [MeshOwner](#cfn-appmesh-virtualnode-meshowner): String
  [Spec](#cfn-appmesh-virtualnode-spec): 
    VirtualNodeSpec
  [Tags](#cfn-appmesh-virtualnode-tags): 
    - Tag
  [VirtualNodeName](#cfn-appmesh-virtualnode-virtualnodename): String
```

## Properties
<a name="aws-resource-appmesh-virtualnode-properties"></a>

`MeshName`  <a name="cfn-appmesh-virtualnode-meshname"></a>
The name of the service mesh to create the virtual node in.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`MeshOwner`  <a name="cfn-appmesh-virtualnode-meshowner"></a>
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](https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).  
*Required*: No  
*Type*: String  
*Minimum*: `12`  
*Maximum*: `12`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Spec`  <a name="cfn-appmesh-virtualnode-spec"></a>
The virtual node specification to apply.  
*Required*: Yes  
*Type*: [VirtualNodeSpec](aws-properties-appmesh-virtualnode-virtualnodespec.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Tags`  <a name="cfn-appmesh-virtualnode-tags"></a>
Optional metadata that you can apply to the virtual node 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](aws-properties-appmesh-virtualnode-tag.md)  
*Minimum*: `0`  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`VirtualNodeName`  <a name="cfn-appmesh-virtualnode-virtualnodename"></a>
The name to use for the virtual node.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-appmesh-virtualnode-return-values"></a>

### Ref
<a name="aws-resource-appmesh-virtualnode-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the resource ARN. For example:

 `{ "Ref": "myVirtualNode" }` 

When you pass the logical ID of an `AWS::AppMesh::VirtualNode` resource to the intrinsic Ref function, the function returns the virtual node ARN, such as `arn:aws:appmesh:us-east-1:555555555555:virtualNode/myVirtualNode`.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

### Fn::GetAtt
<a name="aws-resource-appmesh-virtualnode-return-values-fn--getatt"></a>

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 [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-appmesh-virtualnode-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The full Amazon Resource Name (ARN) for the virtual node.

`MeshName`  <a name="MeshName-fn::getatt"></a>
The name of the service mesh that the virtual node resides in.

`MeshOwner`  <a name="MeshOwner-fn::getatt"></a>
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](https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).

`ResourceOwner`  <a name="ResourceOwner-fn::getatt"></a>
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](https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).

`Uid`  <a name="Uid-fn::getatt"></a>
The unique identifier for the virtual node.

`VirtualNodeName`  <a name="VirtualNodeName-fn::getatt"></a>
The name of the virtual node.

## Examples
<a name="aws-resource-appmesh-virtualnode--examples"></a>

### Create a Virtual Node
<a name="aws-resource-appmesh-virtualnode--examples--Create_a_Virtual_Node"></a>

This example creates a virtual node with two backends and a listener with a health check policy. It also sends access logs to a file path and uses DNS service discovery.

#### JSON
<a name="aws-resource-appmesh-virtualnode--examples--Create_a_Virtual_Node--json"></a>

```
{
   "Description": "Basic Test Virtual Node",
   "Resources": {
      "BasicVirtualNode": {
         "Type": "AWS::AppMesh::VirtualNode",
         "Properties": {
            "VirtualNodeName": "TestVirtualNode",
            "MeshName": null,
            "Spec": {
               "Backends": [
                  {
                     "VirtualService": {
                        "VirtualServiceName": "Backend_1"
                     }
                  },
                  {
                     "VirtualService": {
                        "VirtualServiceName": "Backend_2"
                     }
                  }
               ],
               "Listeners": [
                  {
                     "HealthCheck": {
                        "HealthyThreshold": 2,
                        "IntervalMillis": 5000,
                        "Path": "Path",
                        "Port": 8080,
                        "Protocol": "http",
                        "TimeoutMillis": 2000,
                        "UnhealthyThreshold": 2
                     },
                     "PortMapping": {
                        "Port": 8080,
                        "Protocol": "http"
                     }
                  }
               ],
               "ServiceDiscovery": {
                  "DNS": {
                     "Hostname": "Hostname"
                  }
               },
               "Logging": {
                  "AccessLog": {
                     "File": {
                        "Path": "Path"
                     }
                  }
               }
            },
            "Tags": [
               {
                  "Key": "Key1",
                  "Value": "Value1"
               },
               {
                  "Key": "Key2",
                  "Value": "Value2"
               }
            ]
         }
      }
   },
   "Outputs": {
      "VirtualNodeName": {
         "Description": "Name of the VirtualNode",
         "Value": {
            "Fn::GetAtt": [
               "BasicVirtualNode",
               "VirtualNodeName"
            ]
         }
      },
      "MeshName": {
         "Description": "Name of the Mesh",
         "Value": {
            "Fn::GetAtt": [
               "BasicVirtualNode",
               "MeshName"
            ]
         }
      },
      "Arn": {
         "Description": "Arn of the VirtualNode created",
         "Value": {
            "Fn::GetAtt": [
               "BasicVirtualNode",
               "Arn"
            ]
         }
      },
      "Uid": {
         "Description": "Uid of the VirtualNode created",
         "Value": {
            "Fn::GetAtt": [
               "BasicVirtualNode",
               "Uid"
            ]
         }
      }
   }
}
```

#### YAML
<a name="aws-resource-appmesh-virtualnode--examples--Create_a_Virtual_Node--yaml"></a>

```
Description: "Basic Test Virtual Node"
Resources:
  BasicVirtualNode:
    Type: "AWS::AppMesh::VirtualNode"
    Properties:
      VirtualNodeName: "TestVirtualNode"
      MeshName: !ImportValue TestMeshName
      Spec:
        Backends:
        - VirtualService:
            VirtualServiceName: "Backend_1"
        - VirtualService:
            VirtualServiceName: "Backend_2"
        Listeners:
        - HealthCheck:
            HealthyThreshold: 2
            IntervalMillis: 5000
            Path: "Path"
            Port: 8080
            Protocol: "http"
            TimeoutMillis: 2000
            UnhealthyThreshold: 2
          PortMapping:
            Port: 8080
            Protocol: "http"
        ServiceDiscovery:
          DNS:
            Hostname: "Hostname"
        Logging:
          AccessLog:
            File:
              Path: "Path"
      Tags:
      - Key: "Key1"
        Value: "Value1"
      - Key: "Key2"
        Value: "Value2"

Outputs:
  VirtualNodeName:
    Description: Name of the VirtualNode
    Value:
      Fn::GetAtt:
      - BasicVirtualNode
      - VirtualNodeName
  MeshName:
    Description: Name of the Mesh
    Value:
      Fn::GetAtt:
      - BasicVirtualNode
      - MeshName
  Arn:
    Description: Arn of the VirtualNode created
    Value:
      Fn::GetAtt:
      - BasicVirtualNode
      - Arn
  Uid:
    Description: Uid of the VirtualNode created
    Value:
      Fn::GetAtt:
      - BasicVirtualNode
      - Uid
```

## See also
<a name="aws-resource-appmesh-virtualnode--seealso"></a>
+ [Virtual Nodes](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html) in the * AWS App Mesh User Guide *.
+ [CreateVirtualNode](https://docs.aws.amazon.com/app-mesh/latest/APIReference/API_CreateVirtualNode.html) in the * AWS App Mesh API Reference *.



# AWS::AppMesh::VirtualNode AccessLog
<a name="aws-properties-appmesh-virtualnode-accesslog"></a>

An object that represents the access logging information for a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-accesslog-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-accesslog-syntax.json"></a>

```
{
  "[File](#cfn-appmesh-virtualnode-accesslog-file)" : FileAccessLog
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-accesslog-syntax.yaml"></a>

```
  [File](#cfn-appmesh-virtualnode-accesslog-file): 
    FileAccessLog
```

## Properties
<a name="aws-properties-appmesh-virtualnode-accesslog-properties"></a>

`File`  <a name="cfn-appmesh-virtualnode-accesslog-file"></a>
The file object to send virtual node access logs to.  
*Required*: No  
*Type*: [FileAccessLog](aws-properties-appmesh-virtualnode-fileaccesslog.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode AwsCloudMapInstanceAttribute
<a name="aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute"></a>

An object that represents the AWS Cloud Map attribute information for your virtual node.

**Note**  
AWS Cloud Map is not available in the eu-south-1 Region.

## Syntax
<a name="aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute-syntax.json"></a>

```
{
  "[Key](#cfn-appmesh-virtualnode-awscloudmapinstanceattribute-key)" : String,
  "[Value](#cfn-appmesh-virtualnode-awscloudmapinstanceattribute-value)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute-syntax.yaml"></a>

```
  [Key](#cfn-appmesh-virtualnode-awscloudmapinstanceattribute-key): String
  [Value](#cfn-appmesh-virtualnode-awscloudmapinstanceattribute-value): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute-properties"></a>

`Key`  <a name="cfn-appmesh-virtualnode-awscloudmapinstanceattribute-key"></a>
The name of an AWS Cloud Map service instance attribute key. Any AWS Cloud Map service instance that contains the specified key and value is returned.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9!-~]+`  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-appmesh-virtualnode-awscloudmapinstanceattribute-value"></a>
The value of an AWS Cloud Map service instance attribute key. Any AWS Cloud Map service instance that contains the specified key and value is returned.  
*Required*: Yes  
*Type*: String  
*Pattern*: `([a-zA-Z0-9!-~][ a-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}`  
*Minimum*: `1`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode AwsCloudMapServiceDiscovery
<a name="aws-properties-appmesh-virtualnode-awscloudmapservicediscovery"></a>

An object that represents the AWS Cloud Map service discovery information for your virtual node.

**Note**  
AWS Cloud Map is not available in the eu-south-1 Region.

## Syntax
<a name="aws-properties-appmesh-virtualnode-awscloudmapservicediscovery-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-awscloudmapservicediscovery-syntax.json"></a>

```
{
  "[Attributes](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-attributes)" : [ AwsCloudMapInstanceAttribute, ... ],
  "[IpPreference](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-ippreference)" : String,
  "[NamespaceName](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-namespacename)" : String,
  "[ServiceName](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-servicename)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-awscloudmapservicediscovery-syntax.yaml"></a>

```
  [Attributes](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-attributes): 
    - AwsCloudMapInstanceAttribute
  [IpPreference](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-ippreference): String
  [NamespaceName](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-namespacename): String
  [ServiceName](#cfn-appmesh-virtualnode-awscloudmapservicediscovery-servicename): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-awscloudmapservicediscovery-properties"></a>

`Attributes`  <a name="cfn-appmesh-virtualnode-awscloudmapservicediscovery-attributes"></a>
A string map that contains attributes with values that you can use to filter instances by any custom attribute that you specified when you registered the instance. Only instances that match all of the specified key/value pairs will be returned.  
*Required*: No  
*Type*: Array of [AwsCloudMapInstanceAttribute](aws-properties-appmesh-virtualnode-awscloudmapinstanceattribute.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IpPreference`  <a name="cfn-appmesh-virtualnode-awscloudmapservicediscovery-ippreference"></a>
The preferred IP version that this virtual node uses. Setting the IP preference on the virtual node only overrides the IP preference set for the mesh on this specific node.  
*Required*: No  
*Type*: String  
*Allowed values*: `IPv6_PREFERRED | IPv4_PREFERRED | IPv4_ONLY | IPv6_ONLY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`NamespaceName`  <a name="cfn-appmesh-virtualnode-awscloudmapservicediscovery-namespacename"></a>
The HTTP name of the AWS Cloud Map namespace to use.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ServiceName`  <a name="cfn-appmesh-virtualnode-awscloudmapservicediscovery-servicename"></a>
The name of the AWS Cloud Map service to use.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode Backend
<a name="aws-properties-appmesh-virtualnode-backend"></a>

An object that represents the backends that a virtual node is expected to send outbound traffic to.

## Syntax
<a name="aws-properties-appmesh-virtualnode-backend-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-backend-syntax.json"></a>

```
{
  "[VirtualService](#cfn-appmesh-virtualnode-backend-virtualservice)" : VirtualServiceBackend
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-backend-syntax.yaml"></a>

```
  [VirtualService](#cfn-appmesh-virtualnode-backend-virtualservice): 
    VirtualServiceBackend
```

## Properties
<a name="aws-properties-appmesh-virtualnode-backend-properties"></a>

`VirtualService`  <a name="cfn-appmesh-virtualnode-backend-virtualservice"></a>
Specifies a virtual service to use as a backend.   
*Required*: No  
*Type*: [VirtualServiceBackend](aws-properties-appmesh-virtualnode-virtualservicebackend.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode BackendDefaults
<a name="aws-properties-appmesh-virtualnode-backenddefaults"></a>

An object that represents the default properties for a backend.

## Syntax
<a name="aws-properties-appmesh-virtualnode-backenddefaults-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-backenddefaults-syntax.json"></a>

```
{
  "[ClientPolicy](#cfn-appmesh-virtualnode-backenddefaults-clientpolicy)" : ClientPolicy
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-backenddefaults-syntax.yaml"></a>

```
  [ClientPolicy](#cfn-appmesh-virtualnode-backenddefaults-clientpolicy): 
    ClientPolicy
```

## Properties
<a name="aws-properties-appmesh-virtualnode-backenddefaults-properties"></a>

`ClientPolicy`  <a name="cfn-appmesh-virtualnode-backenddefaults-clientpolicy"></a>
A reference to an object that represents a client policy.  
*Required*: No  
*Type*: [ClientPolicy](aws-properties-appmesh-virtualnode-clientpolicy.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ClientPolicy
<a name="aws-properties-appmesh-virtualnode-clientpolicy"></a>

An object that represents a client policy.

## Syntax
<a name="aws-properties-appmesh-virtualnode-clientpolicy-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-clientpolicy-syntax.json"></a>

```
{
  "[TLS](#cfn-appmesh-virtualnode-clientpolicy-tls)" : ClientPolicyTls
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-clientpolicy-syntax.yaml"></a>

```
  [TLS](#cfn-appmesh-virtualnode-clientpolicy-tls): 
    ClientPolicyTls
```

## Properties
<a name="aws-properties-appmesh-virtualnode-clientpolicy-properties"></a>

`TLS`  <a name="cfn-appmesh-virtualnode-clientpolicy-tls"></a>
A reference to an object that represents a Transport Layer Security (TLS) client policy.  
*Required*: No  
*Type*: [ClientPolicyTls](aws-properties-appmesh-virtualnode-clientpolicytls.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ClientPolicyTls
<a name="aws-properties-appmesh-virtualnode-clientpolicytls"></a>

A reference to an object that represents a Transport Layer Security (TLS) client policy.

## Syntax
<a name="aws-properties-appmesh-virtualnode-clientpolicytls-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-clientpolicytls-syntax.json"></a>

```
{
  "[Certificate](#cfn-appmesh-virtualnode-clientpolicytls-certificate)" : ClientTlsCertificate,
  "[Enforce](#cfn-appmesh-virtualnode-clientpolicytls-enforce)" : Boolean,
  "[Ports](#cfn-appmesh-virtualnode-clientpolicytls-ports)" : [ Integer, ... ],
  "[Validation](#cfn-appmesh-virtualnode-clientpolicytls-validation)" : TlsValidationContext
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-clientpolicytls-syntax.yaml"></a>

```
  [Certificate](#cfn-appmesh-virtualnode-clientpolicytls-certificate): 
    ClientTlsCertificate
  [Enforce](#cfn-appmesh-virtualnode-clientpolicytls-enforce): Boolean
  [Ports](#cfn-appmesh-virtualnode-clientpolicytls-ports): 
    - Integer
  [Validation](#cfn-appmesh-virtualnode-clientpolicytls-validation): 
    TlsValidationContext
```

## Properties
<a name="aws-properties-appmesh-virtualnode-clientpolicytls-properties"></a>

`Certificate`  <a name="cfn-appmesh-virtualnode-clientpolicytls-certificate"></a>
A reference to an object that represents a client's TLS certificate.  
*Required*: No  
*Type*: [ClientTlsCertificate](aws-properties-appmesh-virtualnode-clienttlscertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Enforce`  <a name="cfn-appmesh-virtualnode-clientpolicytls-enforce"></a>
Whether the policy is enforced. The default is `True`, if a value isn't specified.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Ports`  <a name="cfn-appmesh-virtualnode-clientpolicytls-ports"></a>
One or more ports that the policy is enforced for.  
*Required*: No  
*Type*: Array of Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Validation`  <a name="cfn-appmesh-virtualnode-clientpolicytls-validation"></a>
A reference to an object that represents a TLS validation context.  
*Required*: Yes  
*Type*: [TlsValidationContext](aws-properties-appmesh-virtualnode-tlsvalidationcontext.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ClientTlsCertificate
<a name="aws-properties-appmesh-virtualnode-clienttlscertificate"></a>

An object that represents the client's certificate.

## Syntax
<a name="aws-properties-appmesh-virtualnode-clienttlscertificate-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-clienttlscertificate-syntax.json"></a>

```
{
  "[File](#cfn-appmesh-virtualnode-clienttlscertificate-file)" : ListenerTlsFileCertificate,
  "[SDS](#cfn-appmesh-virtualnode-clienttlscertificate-sds)" : ListenerTlsSdsCertificate
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-clienttlscertificate-syntax.yaml"></a>

```
  [File](#cfn-appmesh-virtualnode-clienttlscertificate-file): 
    ListenerTlsFileCertificate
  [SDS](#cfn-appmesh-virtualnode-clienttlscertificate-sds): 
    ListenerTlsSdsCertificate
```

## Properties
<a name="aws-properties-appmesh-virtualnode-clienttlscertificate-properties"></a>

`File`  <a name="cfn-appmesh-virtualnode-clienttlscertificate-file"></a>
An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see [Transport Layer Security (TLS)](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html).  
*Required*: No  
*Type*: [ListenerTlsFileCertificate](aws-properties-appmesh-virtualnode-listenertlsfilecertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SDS`  <a name="cfn-appmesh-virtualnode-clienttlscertificate-sds"></a>
A reference to an object that represents a client's TLS Secret Discovery Service certificate.  
*Required*: No  
*Type*: [ListenerTlsSdsCertificate](aws-properties-appmesh-virtualnode-listenertlssdscertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode DnsServiceDiscovery
<a name="aws-properties-appmesh-virtualnode-dnsservicediscovery"></a>

An object that represents the DNS service discovery information for your virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-dnsservicediscovery-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-dnsservicediscovery-syntax.json"></a>

```
{
  "[Hostname](#cfn-appmesh-virtualnode-dnsservicediscovery-hostname)" : String,
  "[IpPreference](#cfn-appmesh-virtualnode-dnsservicediscovery-ippreference)" : String,
  "[ResponseType](#cfn-appmesh-virtualnode-dnsservicediscovery-responsetype)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-dnsservicediscovery-syntax.yaml"></a>

```
  [Hostname](#cfn-appmesh-virtualnode-dnsservicediscovery-hostname): String
  [IpPreference](#cfn-appmesh-virtualnode-dnsservicediscovery-ippreference): String
  [ResponseType](#cfn-appmesh-virtualnode-dnsservicediscovery-responsetype): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-dnsservicediscovery-properties"></a>

`Hostname`  <a name="cfn-appmesh-virtualnode-dnsservicediscovery-hostname"></a>
Specifies the DNS service discovery hostname for the virtual node.   
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IpPreference`  <a name="cfn-appmesh-virtualnode-dnsservicediscovery-ippreference"></a>
The preferred IP version that this virtual node uses. Setting the IP preference on the virtual node only overrides the IP preference set for the mesh on this specific node.  
*Required*: No  
*Type*: String  
*Allowed values*: `IPv6_PREFERRED | IPv4_PREFERRED | IPv4_ONLY | IPv6_ONLY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ResponseType`  <a name="cfn-appmesh-virtualnode-dnsservicediscovery-responsetype"></a>
Specifies the DNS response type for the virtual node.  
*Required*: No  
*Type*: String  
*Allowed values*: `LOADBALANCER | ENDPOINTS`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode Duration
<a name="aws-properties-appmesh-virtualnode-duration"></a>

An object that represents a duration of time.

## Syntax
<a name="aws-properties-appmesh-virtualnode-duration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-duration-syntax.json"></a>

```
{
  "[Unit](#cfn-appmesh-virtualnode-duration-unit)" : String,
  "[Value](#cfn-appmesh-virtualnode-duration-value)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-duration-syntax.yaml"></a>

```
  [Unit](#cfn-appmesh-virtualnode-duration-unit): String
  [Value](#cfn-appmesh-virtualnode-duration-value): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-duration-properties"></a>

`Unit`  <a name="cfn-appmesh-virtualnode-duration-unit"></a>
A unit of time.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `s | ms`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-appmesh-virtualnode-duration-value"></a>
A number of time units.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode FileAccessLog
<a name="aws-properties-appmesh-virtualnode-fileaccesslog"></a>

An object that represents an access log file.

## Syntax
<a name="aws-properties-appmesh-virtualnode-fileaccesslog-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-fileaccesslog-syntax.json"></a>

```
{
  "[Format](#cfn-appmesh-virtualnode-fileaccesslog-format)" : LoggingFormat,
  "[Path](#cfn-appmesh-virtualnode-fileaccesslog-path)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-fileaccesslog-syntax.yaml"></a>

```
  [Format](#cfn-appmesh-virtualnode-fileaccesslog-format): 
    LoggingFormat
  [Path](#cfn-appmesh-virtualnode-fileaccesslog-path): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-fileaccesslog-properties"></a>

`Format`  <a name="cfn-appmesh-virtualnode-fileaccesslog-format"></a>
The specified format for the logs. The format is either `json_format` or `text_format`.  
*Required*: No  
*Type*: [LoggingFormat](aws-properties-appmesh-virtualnode-loggingformat.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Path`  <a name="cfn-appmesh-virtualnode-fileaccesslog-path"></a>
The file path to write access logs to. You can use `/dev/stdout` to send access logs to standard out and configure your Envoy container to use a log driver, such as `awslogs`, to export the access logs to a log storage service such as Amazon CloudWatch Logs. You can also specify a path in the Envoy container's file system to write the files to disk.  
The Envoy process must have write permissions to the path that you specify here. Otherwise, Envoy fails to bootstrap properly.
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode GrpcTimeout
<a name="aws-properties-appmesh-virtualnode-grpctimeout"></a>

An object that represents types of timeouts. 

## Syntax
<a name="aws-properties-appmesh-virtualnode-grpctimeout-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-grpctimeout-syntax.json"></a>

```
{
  "[Idle](#cfn-appmesh-virtualnode-grpctimeout-idle)" : Duration,
  "[PerRequest](#cfn-appmesh-virtualnode-grpctimeout-perrequest)" : Duration
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-grpctimeout-syntax.yaml"></a>

```
  [Idle](#cfn-appmesh-virtualnode-grpctimeout-idle): 
    Duration
  [PerRequest](#cfn-appmesh-virtualnode-grpctimeout-perrequest): 
    Duration
```

## Properties
<a name="aws-properties-appmesh-virtualnode-grpctimeout-properties"></a>

`Idle`  <a name="cfn-appmesh-virtualnode-grpctimeout-idle"></a>
An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.  
*Required*: No  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PerRequest`  <a name="cfn-appmesh-virtualnode-grpctimeout-perrequest"></a>
An object that represents a per request timeout. The default value is 15 seconds. If you set a higher timeout, then make sure that the higher value is set for each App Mesh resource in a conversation. For example, if a virtual node backend uses a virtual router provider to route to another virtual node, then the timeout should be greater than 15 seconds for the source and destination virtual node and the route.  
*Required*: No  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode HealthCheck
<a name="aws-properties-appmesh-virtualnode-healthcheck"></a>

An object that represents the health check policy for a virtual node's listener.

## Syntax
<a name="aws-properties-appmesh-virtualnode-healthcheck-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-healthcheck-syntax.json"></a>

```
{
  "[HealthyThreshold](#cfn-appmesh-virtualnode-healthcheck-healthythreshold)" : Integer,
  "[IntervalMillis](#cfn-appmesh-virtualnode-healthcheck-intervalmillis)" : Integer,
  "[Path](#cfn-appmesh-virtualnode-healthcheck-path)" : String,
  "[Port](#cfn-appmesh-virtualnode-healthcheck-port)" : Integer,
  "[Protocol](#cfn-appmesh-virtualnode-healthcheck-protocol)" : String,
  "[TimeoutMillis](#cfn-appmesh-virtualnode-healthcheck-timeoutmillis)" : Integer,
  "[UnhealthyThreshold](#cfn-appmesh-virtualnode-healthcheck-unhealthythreshold)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-healthcheck-syntax.yaml"></a>

```
  [HealthyThreshold](#cfn-appmesh-virtualnode-healthcheck-healthythreshold): Integer
  [IntervalMillis](#cfn-appmesh-virtualnode-healthcheck-intervalmillis): Integer
  [Path](#cfn-appmesh-virtualnode-healthcheck-path): String
  [Port](#cfn-appmesh-virtualnode-healthcheck-port): Integer
  [Protocol](#cfn-appmesh-virtualnode-healthcheck-protocol): String
  [TimeoutMillis](#cfn-appmesh-virtualnode-healthcheck-timeoutmillis): Integer
  [UnhealthyThreshold](#cfn-appmesh-virtualnode-healthcheck-unhealthythreshold): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-healthcheck-properties"></a>

`HealthyThreshold`  <a name="cfn-appmesh-virtualnode-healthcheck-healthythreshold"></a>
The number of consecutive successful health checks that must occur before declaring listener healthy.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `2`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IntervalMillis`  <a name="cfn-appmesh-virtualnode-healthcheck-intervalmillis"></a>
The time period in milliseconds between each health check execution.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Path`  <a name="cfn-appmesh-virtualnode-healthcheck-path"></a>
The destination path for the health check request. This value is only used if the specified protocol is HTTP or HTTP/2. For any other protocol, this value is ignored.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Port`  <a name="cfn-appmesh-virtualnode-healthcheck-port"></a>
The destination port for the health check request. This port must match the port defined in the [PortMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-portmapping) for the listener.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `65535`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Protocol`  <a name="cfn-appmesh-virtualnode-healthcheck-protocol"></a>
The protocol for the health check request. If you specify `grpc`, then your service must conform to the [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).  
*Required*: Yes  
*Type*: String  
*Allowed values*: `http | tcp | http2 | grpc`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TimeoutMillis`  <a name="cfn-appmesh-virtualnode-healthcheck-timeoutmillis"></a>
The amount of time to wait when receiving a response from the health check, in milliseconds.  
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UnhealthyThreshold`  <a name="cfn-appmesh-virtualnode-healthcheck-unhealthythreshold"></a>
The number of consecutive failed health checks that must occur before declaring a virtual node unhealthy.   
*Required*: Yes  
*Type*: Integer  
*Minimum*: `2`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode HttpTimeout
<a name="aws-properties-appmesh-virtualnode-httptimeout"></a>

An object that represents types of timeouts. 

## Syntax
<a name="aws-properties-appmesh-virtualnode-httptimeout-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-httptimeout-syntax.json"></a>

```
{
  "[Idle](#cfn-appmesh-virtualnode-httptimeout-idle)" : Duration,
  "[PerRequest](#cfn-appmesh-virtualnode-httptimeout-perrequest)" : Duration
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-httptimeout-syntax.yaml"></a>

```
  [Idle](#cfn-appmesh-virtualnode-httptimeout-idle): 
    Duration
  [PerRequest](#cfn-appmesh-virtualnode-httptimeout-perrequest): 
    Duration
```

## Properties
<a name="aws-properties-appmesh-virtualnode-httptimeout-properties"></a>

`Idle`  <a name="cfn-appmesh-virtualnode-httptimeout-idle"></a>
An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.  
*Required*: No  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PerRequest`  <a name="cfn-appmesh-virtualnode-httptimeout-perrequest"></a>
An object that represents a per request timeout. The default value is 15 seconds. If you set a higher timeout, then make sure that the higher value is set for each App Mesh resource in a conversation. For example, if a virtual node backend uses a virtual router provider to route to another virtual node, then the timeout should be greater than 15 seconds for the source and destination virtual node and the route.  
*Required*: No  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode JsonFormatRef
<a name="aws-properties-appmesh-virtualnode-jsonformatref"></a>

An object that represents the key value pairs for the JSON.

## Syntax
<a name="aws-properties-appmesh-virtualnode-jsonformatref-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-jsonformatref-syntax.json"></a>

```
{
  "[Key](#cfn-appmesh-virtualnode-jsonformatref-key)" : String,
  "[Value](#cfn-appmesh-virtualnode-jsonformatref-value)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-jsonformatref-syntax.yaml"></a>

```
  [Key](#cfn-appmesh-virtualnode-jsonformatref-key): String
  [Value](#cfn-appmesh-virtualnode-jsonformatref-value): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-jsonformatref-properties"></a>

`Key`  <a name="cfn-appmesh-virtualnode-jsonformatref-key"></a>
The specified key for the JSON.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-appmesh-virtualnode-jsonformatref-value"></a>
The specified value for the JSON.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode Listener
<a name="aws-properties-appmesh-virtualnode-listener"></a>

An object that represents a listener for a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listener-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listener-syntax.json"></a>

```
{
  "[ConnectionPool](#cfn-appmesh-virtualnode-listener-connectionpool)" : VirtualNodeConnectionPool,
  "[HealthCheck](#cfn-appmesh-virtualnode-listener-healthcheck)" : HealthCheck,
  "[OutlierDetection](#cfn-appmesh-virtualnode-listener-outlierdetection)" : OutlierDetection,
  "[PortMapping](#cfn-appmesh-virtualnode-listener-portmapping)" : PortMapping,
  "[Timeout](#cfn-appmesh-virtualnode-listener-timeout)" : ListenerTimeout,
  "[TLS](#cfn-appmesh-virtualnode-listener-tls)" : ListenerTls
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listener-syntax.yaml"></a>

```
  [ConnectionPool](#cfn-appmesh-virtualnode-listener-connectionpool): 
    VirtualNodeConnectionPool
  [HealthCheck](#cfn-appmesh-virtualnode-listener-healthcheck): 
    HealthCheck
  [OutlierDetection](#cfn-appmesh-virtualnode-listener-outlierdetection): 
    OutlierDetection
  [PortMapping](#cfn-appmesh-virtualnode-listener-portmapping): 
    PortMapping
  [Timeout](#cfn-appmesh-virtualnode-listener-timeout): 
    ListenerTimeout
  [TLS](#cfn-appmesh-virtualnode-listener-tls): 
    ListenerTls
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listener-properties"></a>

`ConnectionPool`  <a name="cfn-appmesh-virtualnode-listener-connectionpool"></a>
The connection pool information for the listener.  
*Required*: No  
*Type*: [VirtualNodeConnectionPool](aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HealthCheck`  <a name="cfn-appmesh-virtualnode-listener-healthcheck"></a>
The health check information for the listener.  
*Required*: No  
*Type*: [HealthCheck](aws-properties-appmesh-virtualnode-healthcheck.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`OutlierDetection`  <a name="cfn-appmesh-virtualnode-listener-outlierdetection"></a>
The outlier detection information for the listener.  
*Required*: No  
*Type*: [OutlierDetection](aws-properties-appmesh-virtualnode-outlierdetection.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PortMapping`  <a name="cfn-appmesh-virtualnode-listener-portmapping"></a>
The port mapping information for the listener.  
*Required*: Yes  
*Type*: [PortMapping](aws-properties-appmesh-virtualnode-portmapping.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Timeout`  <a name="cfn-appmesh-virtualnode-listener-timeout"></a>
An object that represents timeouts for different protocols.  
*Required*: No  
*Type*: [ListenerTimeout](aws-properties-appmesh-virtualnode-listenertimeout.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TLS`  <a name="cfn-appmesh-virtualnode-listener-tls"></a>
A reference to an object that represents the Transport Layer Security (TLS) properties for a listener.  
*Required*: No  
*Type*: [ListenerTls](aws-properties-appmesh-virtualnode-listenertls.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTimeout
<a name="aws-properties-appmesh-virtualnode-listenertimeout"></a>

An object that represents timeouts for different protocols.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertimeout-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertimeout-syntax.json"></a>

```
{
  "[GRPC](#cfn-appmesh-virtualnode-listenertimeout-grpc)" : GrpcTimeout,
  "[HTTP](#cfn-appmesh-virtualnode-listenertimeout-http)" : HttpTimeout,
  "[HTTP2](#cfn-appmesh-virtualnode-listenertimeout-http2)" : HttpTimeout,
  "[TCP](#cfn-appmesh-virtualnode-listenertimeout-tcp)" : TcpTimeout
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertimeout-syntax.yaml"></a>

```
  [GRPC](#cfn-appmesh-virtualnode-listenertimeout-grpc): 
    GrpcTimeout
  [HTTP](#cfn-appmesh-virtualnode-listenertimeout-http): 
    HttpTimeout
  [HTTP2](#cfn-appmesh-virtualnode-listenertimeout-http2): 
    HttpTimeout
  [TCP](#cfn-appmesh-virtualnode-listenertimeout-tcp): 
    TcpTimeout
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertimeout-properties"></a>

`GRPC`  <a name="cfn-appmesh-virtualnode-listenertimeout-grpc"></a>
An object that represents types of timeouts.   
*Required*: No  
*Type*: [GrpcTimeout](aws-properties-appmesh-virtualnode-grpctimeout.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HTTP`  <a name="cfn-appmesh-virtualnode-listenertimeout-http"></a>
An object that represents types of timeouts.   
*Required*: No  
*Type*: [HttpTimeout](aws-properties-appmesh-virtualnode-httptimeout.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HTTP2`  <a name="cfn-appmesh-virtualnode-listenertimeout-http2"></a>
An object that represents types of timeouts.   
*Required*: No  
*Type*: [HttpTimeout](aws-properties-appmesh-virtualnode-httptimeout.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TCP`  <a name="cfn-appmesh-virtualnode-listenertimeout-tcp"></a>
An object that represents types of timeouts.   
*Required*: No  
*Type*: [TcpTimeout](aws-properties-appmesh-virtualnode-tcptimeout.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTls
<a name="aws-properties-appmesh-virtualnode-listenertls"></a>

An object that represents the Transport Layer Security (TLS) properties for a listener.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertls-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertls-syntax.json"></a>

```
{
  "[Certificate](#cfn-appmesh-virtualnode-listenertls-certificate)" : ListenerTlsCertificate,
  "[Mode](#cfn-appmesh-virtualnode-listenertls-mode)" : String,
  "[Validation](#cfn-appmesh-virtualnode-listenertls-validation)" : ListenerTlsValidationContext
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertls-syntax.yaml"></a>

```
  [Certificate](#cfn-appmesh-virtualnode-listenertls-certificate): 
    ListenerTlsCertificate
  [Mode](#cfn-appmesh-virtualnode-listenertls-mode): String
  [Validation](#cfn-appmesh-virtualnode-listenertls-validation): 
    ListenerTlsValidationContext
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertls-properties"></a>

`Certificate`  <a name="cfn-appmesh-virtualnode-listenertls-certificate"></a>
A reference to an object that represents a listener's Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [ListenerTlsCertificate](aws-properties-appmesh-virtualnode-listenertlscertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Mode`  <a name="cfn-appmesh-virtualnode-listenertls-mode"></a>
Specify one of the following modes.  
+ ****STRICT – Listener only accepts connections with TLS enabled. 
+ ****PERMISSIVE – Listener accepts connections with or without TLS enabled.
+ ****DISABLED – Listener only accepts connections without TLS. 
*Required*: Yes  
*Type*: String  
*Allowed values*: `STRICT | PERMISSIVE | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Validation`  <a name="cfn-appmesh-virtualnode-listenertls-validation"></a>
A reference to an object that represents a listener's Transport Layer Security (TLS) validation context.  
*Required*: No  
*Type*: [ListenerTlsValidationContext](aws-properties-appmesh-virtualnode-listenertlsvalidationcontext.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsAcmCertificate
<a name="aws-properties-appmesh-virtualnode-listenertlsacmcertificate"></a>

An object that represents an AWS Certificate Manager certificate.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlsacmcertificate-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlsacmcertificate-syntax.json"></a>

```
{
  "[CertificateArn](#cfn-appmesh-virtualnode-listenertlsacmcertificate-certificatearn)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlsacmcertificate-syntax.yaml"></a>

```
  [CertificateArn](#cfn-appmesh-virtualnode-listenertlsacmcertificate-certificatearn): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlsacmcertificate-properties"></a>

`CertificateArn`  <a name="cfn-appmesh-virtualnode-listenertlsacmcertificate-certificatearn"></a>
The Amazon Resource Name (ARN) for the certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see [Transport Layer Security (TLS)](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsCertificate
<a name="aws-properties-appmesh-virtualnode-listenertlscertificate"></a>

An object that represents a listener's Transport Layer Security (TLS) certificate.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlscertificate-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlscertificate-syntax.json"></a>

```
{
  "[ACM](#cfn-appmesh-virtualnode-listenertlscertificate-acm)" : ListenerTlsAcmCertificate,
  "[File](#cfn-appmesh-virtualnode-listenertlscertificate-file)" : ListenerTlsFileCertificate,
  "[SDS](#cfn-appmesh-virtualnode-listenertlscertificate-sds)" : ListenerTlsSdsCertificate
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlscertificate-syntax.yaml"></a>

```
  [ACM](#cfn-appmesh-virtualnode-listenertlscertificate-acm): 
    ListenerTlsAcmCertificate
  [File](#cfn-appmesh-virtualnode-listenertlscertificate-file): 
    ListenerTlsFileCertificate
  [SDS](#cfn-appmesh-virtualnode-listenertlscertificate-sds): 
    ListenerTlsSdsCertificate
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlscertificate-properties"></a>

`ACM`  <a name="cfn-appmesh-virtualnode-listenertlscertificate-acm"></a>
A reference to an object that represents an AWS Certificate Manager certificate.  
*Required*: No  
*Type*: [ListenerTlsAcmCertificate](aws-properties-appmesh-virtualnode-listenertlsacmcertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`File`  <a name="cfn-appmesh-virtualnode-listenertlscertificate-file"></a>
A reference to an object that represents a local file certificate.  
*Required*: No  
*Type*: [ListenerTlsFileCertificate](aws-properties-appmesh-virtualnode-listenertlsfilecertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SDS`  <a name="cfn-appmesh-virtualnode-listenertlscertificate-sds"></a>
A reference to an object that represents a listener's Secret Discovery Service certificate.  
*Required*: No  
*Type*: [ListenerTlsSdsCertificate](aws-properties-appmesh-virtualnode-listenertlssdscertificate.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsFileCertificate
<a name="aws-properties-appmesh-virtualnode-listenertlsfilecertificate"></a>

An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see [Transport Layer Security (TLS)](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlsfilecertificate-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlsfilecertificate-syntax.json"></a>

```
{
  "[CertificateChain](#cfn-appmesh-virtualnode-listenertlsfilecertificate-certificatechain)" : String,
  "[PrivateKey](#cfn-appmesh-virtualnode-listenertlsfilecertificate-privatekey)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlsfilecertificate-syntax.yaml"></a>

```
  [CertificateChain](#cfn-appmesh-virtualnode-listenertlsfilecertificate-certificatechain): String
  [PrivateKey](#cfn-appmesh-virtualnode-listenertlsfilecertificate-privatekey): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlsfilecertificate-properties"></a>

`CertificateChain`  <a name="cfn-appmesh-virtualnode-listenertlsfilecertificate-certificatechain"></a>
The certificate chain for the certificate.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PrivateKey`  <a name="cfn-appmesh-virtualnode-listenertlsfilecertificate-privatekey"></a>
The private key for a certificate stored on the file system of the virtual node that the proxy is running on.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsSdsCertificate
<a name="aws-properties-appmesh-virtualnode-listenertlssdscertificate"></a>

An object that represents the listener's Secret Discovery Service certificate. The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh [TLS documentation](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html) for more info.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlssdscertificate-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlssdscertificate-syntax.json"></a>

```
{
  "[SecretName](#cfn-appmesh-virtualnode-listenertlssdscertificate-secretname)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlssdscertificate-syntax.yaml"></a>

```
  [SecretName](#cfn-appmesh-virtualnode-listenertlssdscertificate-secretname): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlssdscertificate-properties"></a>

`SecretName`  <a name="cfn-appmesh-virtualnode-listenertlssdscertificate-secretname"></a>
A reference to an object that represents the name of the secret requested from the Secret Discovery Service provider representing Transport Layer Security (TLS) materials like a certificate or certificate chain.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsValidationContext
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontext"></a>

An object that represents a listener's Transport Layer Security (TLS) validation context.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontext-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontext-syntax.json"></a>

```
{
  "[SubjectAlternativeNames](#cfn-appmesh-virtualnode-listenertlsvalidationcontext-subjectalternativenames)" : SubjectAlternativeNames,
  "[Trust](#cfn-appmesh-virtualnode-listenertlsvalidationcontext-trust)" : ListenerTlsValidationContextTrust
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontext-syntax.yaml"></a>

```
  [SubjectAlternativeNames](#cfn-appmesh-virtualnode-listenertlsvalidationcontext-subjectalternativenames): 
    SubjectAlternativeNames
  [Trust](#cfn-appmesh-virtualnode-listenertlsvalidationcontext-trust): 
    ListenerTlsValidationContextTrust
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontext-properties"></a>

`SubjectAlternativeNames`  <a name="cfn-appmesh-virtualnode-listenertlsvalidationcontext-subjectalternativenames"></a>
A reference to an object that represents the SANs for a listener's Transport Layer Security (TLS) validation context.  
*Required*: No  
*Type*: [SubjectAlternativeNames](aws-properties-appmesh-virtualnode-subjectalternativenames.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Trust`  <a name="cfn-appmesh-virtualnode-listenertlsvalidationcontext-trust"></a>
A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [ListenerTlsValidationContextTrust](aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ListenerTlsValidationContextTrust
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust"></a>

An object that represents a listener's Transport Layer Security (TLS) validation context trust.

## Syntax
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust-syntax.json"></a>

```
{
  "[File](#cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-file)" : TlsValidationContextFileTrust,
  "[SDS](#cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-sds)" : TlsValidationContextSdsTrust
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust-syntax.yaml"></a>

```
  [File](#cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-file): 
    TlsValidationContextFileTrust
  [SDS](#cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-sds): 
    TlsValidationContextSdsTrust
```

## Properties
<a name="aws-properties-appmesh-virtualnode-listenertlsvalidationcontexttrust-properties"></a>

`File`  <a name="cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-file"></a>
An object that represents a Transport Layer Security (TLS) validation context trust for a local file.  
*Required*: No  
*Type*: [TlsValidationContextFileTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SDS`  <a name="cfn-appmesh-virtualnode-listenertlsvalidationcontexttrust-sds"></a>
A reference to an object that represents a listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust.  
*Required*: No  
*Type*: [TlsValidationContextSdsTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode Logging
<a name="aws-properties-appmesh-virtualnode-logging"></a>

An object that represents the logging information for a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-logging-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-logging-syntax.json"></a>

```
{
  "[AccessLog](#cfn-appmesh-virtualnode-logging-accesslog)" : AccessLog
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-logging-syntax.yaml"></a>

```
  [AccessLog](#cfn-appmesh-virtualnode-logging-accesslog): 
    AccessLog
```

## Properties
<a name="aws-properties-appmesh-virtualnode-logging-properties"></a>

`AccessLog`  <a name="cfn-appmesh-virtualnode-logging-accesslog"></a>
The access log configuration for a virtual node.  
*Required*: No  
*Type*: [AccessLog](aws-properties-appmesh-virtualnode-accesslog.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode LoggingFormat
<a name="aws-properties-appmesh-virtualnode-loggingformat"></a>

An object that represents the format for the logs.

## Syntax
<a name="aws-properties-appmesh-virtualnode-loggingformat-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-loggingformat-syntax.json"></a>

```
{
  "[Json](#cfn-appmesh-virtualnode-loggingformat-json)" : [ JsonFormatRef, ... ],
  "[Text](#cfn-appmesh-virtualnode-loggingformat-text)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-loggingformat-syntax.yaml"></a>

```
  [Json](#cfn-appmesh-virtualnode-loggingformat-json): 
    - JsonFormatRef
  [Text](#cfn-appmesh-virtualnode-loggingformat-text): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-loggingformat-properties"></a>

`Json`  <a name="cfn-appmesh-virtualnode-loggingformat-json"></a>
The logging format for JSON.  
*Required*: No  
*Type*: Array of [JsonFormatRef](aws-properties-appmesh-virtualnode-jsonformatref.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Text`  <a name="cfn-appmesh-virtualnode-loggingformat-text"></a>
The logging format for text.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1000`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode OutlierDetection
<a name="aws-properties-appmesh-virtualnode-outlierdetection"></a>

An object that represents the outlier detection for a virtual node's listener.

## Syntax
<a name="aws-properties-appmesh-virtualnode-outlierdetection-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-outlierdetection-syntax.json"></a>

```
{
  "[BaseEjectionDuration](#cfn-appmesh-virtualnode-outlierdetection-baseejectionduration)" : Duration,
  "[Interval](#cfn-appmesh-virtualnode-outlierdetection-interval)" : Duration,
  "[MaxEjectionPercent](#cfn-appmesh-virtualnode-outlierdetection-maxejectionpercent)" : Integer,
  "[MaxServerErrors](#cfn-appmesh-virtualnode-outlierdetection-maxservererrors)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-outlierdetection-syntax.yaml"></a>

```
  [BaseEjectionDuration](#cfn-appmesh-virtualnode-outlierdetection-baseejectionduration): 
    Duration
  [Interval](#cfn-appmesh-virtualnode-outlierdetection-interval): 
    Duration
  [MaxEjectionPercent](#cfn-appmesh-virtualnode-outlierdetection-maxejectionpercent): Integer
  [MaxServerErrors](#cfn-appmesh-virtualnode-outlierdetection-maxservererrors): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-outlierdetection-properties"></a>

`BaseEjectionDuration`  <a name="cfn-appmesh-virtualnode-outlierdetection-baseejectionduration"></a>
The base amount of time for which a host is ejected.  
*Required*: Yes  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Interval`  <a name="cfn-appmesh-virtualnode-outlierdetection-interval"></a>
The time interval between ejection sweep analysis.  
*Required*: Yes  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MaxEjectionPercent`  <a name="cfn-appmesh-virtualnode-outlierdetection-maxejectionpercent"></a>
Maximum percentage of hosts in load balancing pool for upstream service that can be ejected. Will eject at least one host regardless of the value.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `0`  
*Maximum*: `100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MaxServerErrors`  <a name="cfn-appmesh-virtualnode-outlierdetection-maxservererrors"></a>
Number of consecutive `5xx` errors required for ejection.   
*Required*: Yes  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode PortMapping
<a name="aws-properties-appmesh-virtualnode-portmapping"></a>

An object representing a virtual node or virtual router listener port mapping.

## Syntax
<a name="aws-properties-appmesh-virtualnode-portmapping-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-portmapping-syntax.json"></a>

```
{
  "[Port](#cfn-appmesh-virtualnode-portmapping-port)" : Integer,
  "[Protocol](#cfn-appmesh-virtualnode-portmapping-protocol)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-portmapping-syntax.yaml"></a>

```
  [Port](#cfn-appmesh-virtualnode-portmapping-port): Integer
  [Protocol](#cfn-appmesh-virtualnode-portmapping-protocol): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-portmapping-properties"></a>

`Port`  <a name="cfn-appmesh-virtualnode-portmapping-port"></a>
The port used for the port mapping.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `65535`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Protocol`  <a name="cfn-appmesh-virtualnode-portmapping-protocol"></a>
The protocol used for the port mapping. Specify `http`, `http2`, `grpc`, or `tcp`.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `http | tcp | http2 | grpc`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode ServiceDiscovery
<a name="aws-properties-appmesh-virtualnode-servicediscovery"></a>

An object that represents the service discovery information for a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-servicediscovery-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-servicediscovery-syntax.json"></a>

```
{
  "[AWSCloudMap](#cfn-appmesh-virtualnode-servicediscovery-awscloudmap)" : AwsCloudMapServiceDiscovery,
  "[DNS](#cfn-appmesh-virtualnode-servicediscovery-dns)" : DnsServiceDiscovery
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-servicediscovery-syntax.yaml"></a>

```
  [AWSCloudMap](#cfn-appmesh-virtualnode-servicediscovery-awscloudmap): 
    AwsCloudMapServiceDiscovery
  [DNS](#cfn-appmesh-virtualnode-servicediscovery-dns): 
    DnsServiceDiscovery
```

## Properties
<a name="aws-properties-appmesh-virtualnode-servicediscovery-properties"></a>

`AWSCloudMap`  <a name="cfn-appmesh-virtualnode-servicediscovery-awscloudmap"></a>
Specifies any AWS Cloud Map information for the virtual node.  
*Required*: No  
*Type*: [AwsCloudMapServiceDiscovery](aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DNS`  <a name="cfn-appmesh-virtualnode-servicediscovery-dns"></a>
Specifies the DNS information for the virtual node.  
*Required*: No  
*Type*: [DnsServiceDiscovery](aws-properties-appmesh-virtualnode-dnsservicediscovery.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode SubjectAlternativeNameMatchers
<a name="aws-properties-appmesh-virtualnode-subjectalternativenamematchers"></a>

An object that represents the methods by which a subject alternative name on a peer Transport Layer Security (TLS) certificate can be matched.

## Syntax
<a name="aws-properties-appmesh-virtualnode-subjectalternativenamematchers-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-subjectalternativenamematchers-syntax.json"></a>

```
{
  "[Exact](#cfn-appmesh-virtualnode-subjectalternativenamematchers-exact)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-subjectalternativenamematchers-syntax.yaml"></a>

```
  [Exact](#cfn-appmesh-virtualnode-subjectalternativenamematchers-exact): 
    - String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-subjectalternativenamematchers-properties"></a>

`Exact`  <a name="cfn-appmesh-virtualnode-subjectalternativenamematchers-exact"></a>
The values sent must match the specified values exactly.  
*Required*: No  
*Type*: Array of String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode SubjectAlternativeNames
<a name="aws-properties-appmesh-virtualnode-subjectalternativenames"></a>

An object that represents the subject alternative names secured by the certificate.

## Syntax
<a name="aws-properties-appmesh-virtualnode-subjectalternativenames-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-subjectalternativenames-syntax.json"></a>

```
{
  "[Match](#cfn-appmesh-virtualnode-subjectalternativenames-match)" : SubjectAlternativeNameMatchers
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-subjectalternativenames-syntax.yaml"></a>

```
  [Match](#cfn-appmesh-virtualnode-subjectalternativenames-match): 
    SubjectAlternativeNameMatchers
```

## Properties
<a name="aws-properties-appmesh-virtualnode-subjectalternativenames-properties"></a>

`Match`  <a name="cfn-appmesh-virtualnode-subjectalternativenames-match"></a>
An object that represents the criteria for determining a SANs match.  
*Required*: Yes  
*Type*: [SubjectAlternativeNameMatchers](aws-properties-appmesh-virtualnode-subjectalternativenamematchers.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode Tag
<a name="aws-properties-appmesh-virtualnode-tag"></a>

Optional metadata that you can apply to the virtual node 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.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tag-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tag-syntax.json"></a>

```
{
  "[Key](#cfn-appmesh-virtualnode-tag-key)" : String,
  "[Value](#cfn-appmesh-virtualnode-tag-value)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tag-syntax.yaml"></a>

```
  [Key](#cfn-appmesh-virtualnode-tag-key): String
  [Value](#cfn-appmesh-virtualnode-tag-value): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tag-properties"></a>

`Key`  <a name="cfn-appmesh-virtualnode-tag-key"></a>
One part of a key-value pair that make up a tag. A `key` is a general label that acts like a category for more specific tag values.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-appmesh-virtualnode-tag-value"></a>
The optional part of a key-value pair that make up a tag. A `value` acts as a descriptor within a tag category (key).  
*Required*: Yes  
*Type*: String  
*Minimum*: `0`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TcpTimeout
<a name="aws-properties-appmesh-virtualnode-tcptimeout"></a>

An object that represents types of timeouts. 

## Syntax
<a name="aws-properties-appmesh-virtualnode-tcptimeout-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tcptimeout-syntax.json"></a>

```
{
  "[Idle](#cfn-appmesh-virtualnode-tcptimeout-idle)" : Duration
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tcptimeout-syntax.yaml"></a>

```
  [Idle](#cfn-appmesh-virtualnode-tcptimeout-idle): 
    Duration
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tcptimeout-properties"></a>

`Idle`  <a name="cfn-appmesh-virtualnode-tcptimeout-idle"></a>
An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.  
*Required*: No  
*Type*: [Duration](aws-properties-appmesh-virtualnode-duration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TlsValidationContext
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontext"></a>

An object that represents how the proxy will validate its peer during Transport Layer Security (TLS) negotiation.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontext-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontext-syntax.json"></a>

```
{
  "[SubjectAlternativeNames](#cfn-appmesh-virtualnode-tlsvalidationcontext-subjectalternativenames)" : SubjectAlternativeNames,
  "[Trust](#cfn-appmesh-virtualnode-tlsvalidationcontext-trust)" : TlsValidationContextTrust
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontext-syntax.yaml"></a>

```
  [SubjectAlternativeNames](#cfn-appmesh-virtualnode-tlsvalidationcontext-subjectalternativenames): 
    SubjectAlternativeNames
  [Trust](#cfn-appmesh-virtualnode-tlsvalidationcontext-trust): 
    TlsValidationContextTrust
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontext-properties"></a>

`SubjectAlternativeNames`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontext-subjectalternativenames"></a>
A reference to an object that represents the SANs for a Transport Layer Security (TLS) validation context. If you don't specify SANs on the *terminating* mesh endpoint, the Envoy proxy for that node doesn't verify the SAN on a peer client certificate. If you don't specify SANs on the *originating* mesh endpoint, the SAN on the certificate provided by the terminating endpoint must match the mesh endpoint service discovery configuration. Since SPIRE vended certificates have a SPIFFE ID as a name, you must set the SAN since the name doesn't match the service discovery name.  
*Required*: No  
*Type*: [SubjectAlternativeNames](aws-properties-appmesh-virtualnode-subjectalternativenames.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Trust`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontext-trust"></a>
A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [TlsValidationContextTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TlsValidationContextAcmTrust
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust"></a>

An object that represents a Transport Layer Security (TLS) validation context trust for an AWS Certificate Manager certificate.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust-syntax.json"></a>

```
{
  "[CertificateAuthorityArns](#cfn-appmesh-virtualnode-tlsvalidationcontextacmtrust-certificateauthorityarns)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust-syntax.yaml"></a>

```
  [CertificateAuthorityArns](#cfn-appmesh-virtualnode-tlsvalidationcontextacmtrust-certificateauthorityarns): 
    - String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust-properties"></a>

`CertificateAuthorityArns`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontextacmtrust-certificateauthorityarns"></a>
One or more ACM Amazon Resource Name (ARN)s.  
*Required*: Yes  
*Type*: Array of String  
*Minimum*: `1`  
*Maximum*: `3`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TlsValidationContextFileTrust
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust"></a>

An object that represents a Transport Layer Security (TLS) validation context trust for a local file.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust-syntax.json"></a>

```
{
  "[CertificateChain](#cfn-appmesh-virtualnode-tlsvalidationcontextfiletrust-certificatechain)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust-syntax.yaml"></a>

```
  [CertificateChain](#cfn-appmesh-virtualnode-tlsvalidationcontextfiletrust-certificatechain): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust-properties"></a>

`CertificateChain`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontextfiletrust-certificatechain"></a>
The certificate trust chain for a certificate stored on the file system of the virtual node that the proxy is running on.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TlsValidationContextSdsTrust
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust"></a>

An object that represents a Transport Layer Security (TLS) Secret Discovery Service validation context trust. The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh [TLS documentation](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html) for more info.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust-syntax.json"></a>

```
{
  "[SecretName](#cfn-appmesh-virtualnode-tlsvalidationcontextsdstrust-secretname)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust-syntax.yaml"></a>

```
  [SecretName](#cfn-appmesh-virtualnode-tlsvalidationcontextsdstrust-secretname): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust-properties"></a>

`SecretName`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontextsdstrust-secretname"></a>
A reference to an object that represents the name of the secret for a Transport Layer Security (TLS) Secret Discovery Service validation context trust.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode TlsValidationContextTrust
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust"></a>

An object that represents a Transport Layer Security (TLS) validation context trust.

## Syntax
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust-syntax.json"></a>

```
{
  "[ACM](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-acm)" : TlsValidationContextAcmTrust,
  "[File](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-file)" : TlsValidationContextFileTrust,
  "[SDS](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-sds)" : TlsValidationContextSdsTrust
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust-syntax.yaml"></a>

```
  [ACM](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-acm): 
    TlsValidationContextAcmTrust
  [File](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-file): 
    TlsValidationContextFileTrust
  [SDS](#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-sds): 
    TlsValidationContextSdsTrust
```

## Properties
<a name="aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust-properties"></a>

`ACM`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontexttrust-acm"></a>
A reference to an object that represents a Transport Layer Security (TLS) validation context trust for an AWS Certificate Manager certificate.  
*Required*: No  
*Type*: [TlsValidationContextAcmTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`File`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontexttrust-file"></a>
An object that represents a Transport Layer Security (TLS) validation context trust for a local file.  
*Required*: No  
*Type*: [TlsValidationContextFileTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SDS`  <a name="cfn-appmesh-virtualnode-tlsvalidationcontexttrust-sds"></a>
A reference to an object that represents a Transport Layer Security (TLS) Secret Discovery Service validation context trust.  
*Required*: No  
*Type*: [TlsValidationContextSdsTrust](aws-properties-appmesh-virtualnode-tlsvalidationcontextsdstrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeConnectionPool
<a name="aws-properties-appmesh-virtualnode-virtualnodeconnectionpool"></a>

An object that represents the type of virtual node connection pool.

Only one protocol is used at a time and should be the same protocol as the one chosen under port mapping.

If not present the default value for `maxPendingRequests` is `2147483647`.



## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodeconnectionpool-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodeconnectionpool-syntax.json"></a>

```
{
  "[GRPC](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-grpc)" : VirtualNodeGrpcConnectionPool,
  "[HTTP](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http)" : VirtualNodeHttpConnectionPool,
  "[HTTP2](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http2)" : VirtualNodeHttp2ConnectionPool,
  "[TCP](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-tcp)" : VirtualNodeTcpConnectionPool
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodeconnectionpool-syntax.yaml"></a>

```
  [GRPC](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-grpc): 
    VirtualNodeGrpcConnectionPool
  [HTTP](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http): 
    VirtualNodeHttpConnectionPool
  [HTTP2](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http2): 
    VirtualNodeHttp2ConnectionPool
  [TCP](#cfn-appmesh-virtualnode-virtualnodeconnectionpool-tcp): 
    VirtualNodeTcpConnectionPool
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodeconnectionpool-properties"></a>

`GRPC`  <a name="cfn-appmesh-virtualnode-virtualnodeconnectionpool-grpc"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualNodeGrpcConnectionPool](aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HTTP`  <a name="cfn-appmesh-virtualnode-virtualnodeconnectionpool-http"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualNodeHttpConnectionPool](aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HTTP2`  <a name="cfn-appmesh-virtualnode-virtualnodeconnectionpool-http2"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualNodeHttp2ConnectionPool](aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TCP`  <a name="cfn-appmesh-virtualnode-virtualnodeconnectionpool-tcp"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualNodeTcpConnectionPool](aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeGrpcConnectionPool
<a name="aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool-syntax.json"></a>

```
{
  "[MaxRequests](#cfn-appmesh-virtualnode-virtualnodegrpcconnectionpool-maxrequests)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool-syntax.yaml"></a>

```
  [MaxRequests](#cfn-appmesh-virtualnode-virtualnodegrpcconnectionpool-maxrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool-properties"></a>

`MaxRequests`  <a name="cfn-appmesh-virtualnode-virtualnodegrpcconnectionpool-maxrequests"></a>
Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeHttp2ConnectionPool
<a name="aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool-syntax.json"></a>

```
{
  "[MaxRequests](#cfn-appmesh-virtualnode-virtualnodehttp2connectionpool-maxrequests)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool-syntax.yaml"></a>

```
  [MaxRequests](#cfn-appmesh-virtualnode-virtualnodehttp2connectionpool-maxrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool-properties"></a>

`MaxRequests`  <a name="cfn-appmesh-virtualnode-virtualnodehttp2connectionpool-maxrequests"></a>
Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeHttpConnectionPool
<a name="aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool-syntax.json"></a>

```
{
  "[MaxConnections](#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxconnections)" : Integer,
  "[MaxPendingRequests](#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxpendingrequests)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool-syntax.yaml"></a>

```
  [MaxConnections](#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxconnections): Integer
  [MaxPendingRequests](#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxpendingrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool-properties"></a>

`MaxConnections`  <a name="cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxconnections"></a>
Maximum number of outbound TCP connections Envoy can establish concurrently with all hosts in upstream cluster.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MaxPendingRequests`  <a name="cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxpendingrequests"></a>
Number of overflowing requests after `max_connections` Envoy will queue to upstream cluster.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeSpec
<a name="aws-properties-appmesh-virtualnode-virtualnodespec"></a>

An object that represents the specification of a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodespec-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodespec-syntax.json"></a>

```
{
  "[BackendDefaults](#cfn-appmesh-virtualnode-virtualnodespec-backenddefaults)" : BackendDefaults,
  "[Backends](#cfn-appmesh-virtualnode-virtualnodespec-backends)" : [ Backend, ... ],
  "[Listeners](#cfn-appmesh-virtualnode-virtualnodespec-listeners)" : [ Listener, ... ],
  "[Logging](#cfn-appmesh-virtualnode-virtualnodespec-logging)" : Logging,
  "[ServiceDiscovery](#cfn-appmesh-virtualnode-virtualnodespec-servicediscovery)" : ServiceDiscovery
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodespec-syntax.yaml"></a>

```
  [BackendDefaults](#cfn-appmesh-virtualnode-virtualnodespec-backenddefaults): 
    BackendDefaults
  [Backends](#cfn-appmesh-virtualnode-virtualnodespec-backends): 
    - Backend
  [Listeners](#cfn-appmesh-virtualnode-virtualnodespec-listeners): 
    - Listener
  [Logging](#cfn-appmesh-virtualnode-virtualnodespec-logging): 
    Logging
  [ServiceDiscovery](#cfn-appmesh-virtualnode-virtualnodespec-servicediscovery): 
    ServiceDiscovery
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodespec-properties"></a>

`BackendDefaults`  <a name="cfn-appmesh-virtualnode-virtualnodespec-backenddefaults"></a>
A reference to an object that represents the defaults for backends.  
*Required*: No  
*Type*: [BackendDefaults](aws-properties-appmesh-virtualnode-backenddefaults.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Backends`  <a name="cfn-appmesh-virtualnode-virtualnodespec-backends"></a>
The backends that the virtual node is expected to send outbound traffic to.  
App Mesh doesn't validate the existence of those virtual services specified in backends. This is to prevent a cyclic dependency between virtual nodes and virtual services creation. Make sure the virtual service name is correct. The virtual service can be created afterwards if it doesn't already exist. 
*Required*: No  
*Type*: Array of [Backend](aws-properties-appmesh-virtualnode-backend.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Listeners`  <a name="cfn-appmesh-virtualnode-virtualnodespec-listeners"></a>
The listener that the virtual node is expected to receive inbound traffic from. You can specify one listener.  
*Required*: No  
*Type*: Array of [Listener](aws-properties-appmesh-virtualnode-listener.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Logging`  <a name="cfn-appmesh-virtualnode-virtualnodespec-logging"></a>
The inbound and outbound access logging information for the virtual node.  
*Required*: No  
*Type*: [Logging](aws-properties-appmesh-virtualnode-logging.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ServiceDiscovery`  <a name="cfn-appmesh-virtualnode-virtualnodespec-servicediscovery"></a>
The service discovery information for the virtual node. If your virtual node does not expect ingress traffic, you can omit this parameter. If you specify a `listener`, then you must specify service discovery information.  
*Required*: No  
*Type*: [ServiceDiscovery](aws-properties-appmesh-virtualnode-servicediscovery.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualNodeTcpConnectionPool
<a name="aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool-syntax.json"></a>

```
{
  "[MaxConnections](#cfn-appmesh-virtualnode-virtualnodetcpconnectionpool-maxconnections)" : Integer
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool-syntax.yaml"></a>

```
  [MaxConnections](#cfn-appmesh-virtualnode-virtualnodetcpconnectionpool-maxconnections): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool-properties"></a>

`MaxConnections`  <a name="cfn-appmesh-virtualnode-virtualnodetcpconnectionpool-maxconnections"></a>
Maximum number of outbound TCP connections Envoy can establish concurrently with all hosts in upstream cluster.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::AppMesh::VirtualNode VirtualServiceBackend
<a name="aws-properties-appmesh-virtualnode-virtualservicebackend"></a>

An object that represents a virtual service backend for a virtual node.

## Syntax
<a name="aws-properties-appmesh-virtualnode-virtualservicebackend-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-appmesh-virtualnode-virtualservicebackend-syntax.json"></a>

```
{
  "[ClientPolicy](#cfn-appmesh-virtualnode-virtualservicebackend-clientpolicy)" : ClientPolicy,
  "[VirtualServiceName](#cfn-appmesh-virtualnode-virtualservicebackend-virtualservicename)" : String
}
```

### YAML
<a name="aws-properties-appmesh-virtualnode-virtualservicebackend-syntax.yaml"></a>

```
  [ClientPolicy](#cfn-appmesh-virtualnode-virtualservicebackend-clientpolicy): 
    ClientPolicy
  [VirtualServiceName](#cfn-appmesh-virtualnode-virtualservicebackend-virtualservicename): String
```

## Properties
<a name="aws-properties-appmesh-virtualnode-virtualservicebackend-properties"></a>

`ClientPolicy`  <a name="cfn-appmesh-virtualnode-virtualservicebackend-clientpolicy"></a>
A reference to an object that represents the client policy for a backend.  
*Required*: No  
*Type*: [ClientPolicy](aws-properties-appmesh-virtualnode-clientpolicy.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`VirtualServiceName`  <a name="cfn-appmesh-virtualnode-virtualservicebackend-virtualservicename"></a>
The name of the virtual service that is acting as a virtual node backend.  
App Mesh doesn't validate the existence of those virtual services specified in backends. This is to prevent a cyclic dependency between virtual nodes and virtual services creation. Make sure the virtual service name is correct. The virtual service can be created afterwards if it doesn't already exist. 
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)