

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::VirtualGateway
<a name="aws-resource-appmesh-virtualgateway"></a>

Creates a virtual gateway.

A virtual gateway allows resources outside your mesh to communicate to resources that are inside your mesh. The virtual gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes service, or on an Amazon EC2 instance. Unlike a virtual node, which represents an Envoy running with an application, a virtual gateway represents Envoy deployed by itself.

For more information about virtual gateways, see [Virtual gateways](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html). 

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

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

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

```
{
  "Type" : "AWS::AppMesh::VirtualGateway",
  "Properties" : {
      "[MeshName](#cfn-appmesh-virtualgateway-meshname)" : String,
      "[MeshOwner](#cfn-appmesh-virtualgateway-meshowner)" : String,
      "[Spec](#cfn-appmesh-virtualgateway-spec)" : VirtualGatewaySpec,
      "[Tags](#cfn-appmesh-virtualgateway-tags)" : [ Tag, ... ],
      "[VirtualGatewayName](#cfn-appmesh-virtualgateway-virtualgatewayname)" : String
    }
}
```

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

```
Type: AWS::AppMesh::VirtualGateway
Properties:
  [MeshName](#cfn-appmesh-virtualgateway-meshname): String
  [MeshOwner](#cfn-appmesh-virtualgateway-meshowner): String
  [Spec](#cfn-appmesh-virtualgateway-spec): 
    VirtualGatewaySpec
  [Tags](#cfn-appmesh-virtualgateway-tags): 
    - Tag
  [VirtualGatewayName](#cfn-appmesh-virtualgateway-virtualgatewayname): String
```

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

`MeshName`  <a name="cfn-appmesh-virtualgateway-meshname"></a>
The name of the service mesh that the virtual gateway resides 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-virtualgateway-meshowner"></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).  
*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-virtualgateway-spec"></a>
The specifications of the virtual gateway.  
*Required*: Yes  
*Type*: [VirtualGatewaySpec](aws-properties-appmesh-virtualgateway-virtualgatewayspec.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-virtualgateway-tags"></a>
Optional metadata that you can apply to the virtual gateway 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-virtualgateway-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)

`VirtualGatewayName`  <a name="cfn-appmesh-virtualgateway-virtualgatewayname"></a>
The name of the virtual gateway.  
*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-virtualgateway-return-values"></a>

### Ref
<a name="aws-resource-appmesh-virtualgateway-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": "myVirtualGateway" }` 

When you pass the logical ID of an `AWS::AppMesh::VirtualGateway` resource to the intrinsic Ref function, the function returns the gateway route ARN, such as `arn:aws:appmesh:us-east-1:555555555555:virtualGateway/myVirtualGateway`.

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-virtualgateway-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-virtualgateway-return-values-fn--getatt-fn--getatt"></a>

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

`MeshName`  <a name="MeshName-fn::getatt"></a>
The name of the service mesh that the virtual gateway 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 gateway.

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

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



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

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

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

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

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

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

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

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

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

`Key`  <a name="cfn-appmesh-virtualgateway-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-virtualgateway-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::VirtualGateway LoggingFormat
<a name="aws-properties-appmesh-virtualgateway-loggingformat"></a>

An object that represents the format for the logs.

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

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

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

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

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

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

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

`Json`  <a name="cfn-appmesh-virtualgateway-loggingformat-json"></a>
The logging format for JSON.  
*Required*: No  
*Type*: Array of [JsonFormatRef](aws-properties-appmesh-virtualgateway-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-virtualgateway-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::VirtualGateway SubjectAlternativeNameMatchers
<a name="aws-properties-appmesh-virtualgateway-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-virtualgateway-subjectalternativenamematchers-syntax"></a>

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

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

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

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

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

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

`Exact`  <a name="cfn-appmesh-virtualgateway-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::VirtualGateway SubjectAlternativeNames
<a name="aws-properties-appmesh-virtualgateway-subjectalternativenames"></a>

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

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

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

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

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

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

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

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

`Match`  <a name="cfn-appmesh-virtualgateway-subjectalternativenames-match"></a>
An object that represents the criteria for determining a SANs match.  
*Required*: Yes  
*Type*: [SubjectAlternativeNameMatchers](aws-properties-appmesh-virtualgateway-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::VirtualGateway Tag
<a name="aws-properties-appmesh-virtualgateway-tag"></a>

Optional metadata that you can apply to the virtual gateway 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-virtualgateway-tag-syntax"></a>

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

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

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

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

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

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

`Key`  <a name="cfn-appmesh-virtualgateway-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-virtualgateway-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::VirtualGateway VirtualGatewayAccessLog
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayaccesslog"></a>

The access log configuration for a virtual gateway.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayaccesslog-syntax"></a>

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

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

```
{
  "[File](#cfn-appmesh-virtualgateway-virtualgatewayaccesslog-file)" : VirtualGatewayFileAccessLog
}
```

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

```
  [File](#cfn-appmesh-virtualgateway-virtualgatewayaccesslog-file): 
    VirtualGatewayFileAccessLog
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayaccesslog-properties"></a>

`File`  <a name="cfn-appmesh-virtualgateway-virtualgatewayaccesslog-file"></a>
The file object to send virtual gateway access logs to.  
*Required*: No  
*Type*: [VirtualGatewayFileAccessLog](aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog.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::VirtualGateway VirtualGatewayBackendDefaults
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaybackenddefaults"></a>

An object that represents the default properties for a backend.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaybackenddefaults-syntax"></a>

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

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

```
{
  "[ClientPolicy](#cfn-appmesh-virtualgateway-virtualgatewaybackenddefaults-clientpolicy)" : VirtualGatewayClientPolicy
}
```

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

```
  [ClientPolicy](#cfn-appmesh-virtualgateway-virtualgatewaybackenddefaults-clientpolicy): 
    VirtualGatewayClientPolicy
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaybackenddefaults-properties"></a>

`ClientPolicy`  <a name="cfn-appmesh-virtualgateway-virtualgatewaybackenddefaults-clientpolicy"></a>
A reference to an object that represents a client policy.  
*Required*: No  
*Type*: [VirtualGatewayClientPolicy](aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicy.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::VirtualGateway VirtualGatewayClientPolicy
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicy"></a>

An object that represents a client policy.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicy-syntax"></a>

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

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

```
{
  "[TLS](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicy-tls)" : VirtualGatewayClientPolicyTls
}
```

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

```
  [TLS](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicy-tls): 
    VirtualGatewayClientPolicyTls
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicy-properties"></a>

`TLS`  <a name="cfn-appmesh-virtualgateway-virtualgatewayclientpolicy-tls"></a>
A reference to an object that represents a Transport Layer Security (TLS) client policy.  
*Required*: No  
*Type*: [VirtualGatewayClientPolicyTls](aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicytls.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::VirtualGateway VirtualGatewayClientPolicyTls
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicytls"></a>

An object that represents a Transport Layer Security (TLS) client policy.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicytls-syntax"></a>

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

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

```
{
  "[Certificate](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-certificate)" : VirtualGatewayClientTlsCertificate,
  "[Enforce](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-enforce)" : Boolean,
  "[Ports](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-ports)" : [ Integer, ... ],
  "[Validation](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-validation)" : VirtualGatewayTlsValidationContext
}
```

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

```
  [Certificate](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-certificate): 
    VirtualGatewayClientTlsCertificate
  [Enforce](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-enforce): Boolean
  [Ports](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-ports): 
    - Integer
  [Validation](#cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-validation): 
    VirtualGatewayTlsValidationContext
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclientpolicytls-properties"></a>

`Certificate`  <a name="cfn-appmesh-virtualgateway-virtualgatewayclientpolicytls-certificate"></a>
A reference to an object that represents a virtual gateway's client's Transport Layer Security (TLS) certificate.  
*Required*: No  
*Type*: [VirtualGatewayClientTlsCertificate](aws-properties-appmesh-virtualgateway-virtualgatewayclienttlscertificate.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-virtualgateway-virtualgatewayclientpolicytls-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-virtualgateway-virtualgatewayclientpolicytls-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-virtualgateway-virtualgatewayclientpolicytls-validation"></a>
A reference to an object that represents a Transport Layer Security (TLS) validation context.  
*Required*: Yes  
*Type*: [VirtualGatewayTlsValidationContext](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext.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::VirtualGateway VirtualGatewayClientTlsCertificate
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclienttlscertificate"></a>

An object that represents the virtual gateway's client's Transport Layer Security (TLS) certificate.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclienttlscertificate-syntax"></a>

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

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

```
{
  "[File](#cfn-appmesh-virtualgateway-virtualgatewayclienttlscertificate-file)" : VirtualGatewayListenerTlsFileCertificate,
  "[SDS](#cfn-appmesh-virtualgateway-virtualgatewayclienttlscertificate-sds)" : VirtualGatewayListenerTlsSdsCertificate
}
```

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

```
  [File](#cfn-appmesh-virtualgateway-virtualgatewayclienttlscertificate-file): 
    VirtualGatewayListenerTlsFileCertificate
  [SDS](#cfn-appmesh-virtualgateway-virtualgatewayclienttlscertificate-sds): 
    VirtualGatewayListenerTlsSdsCertificate
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayclienttlscertificate-properties"></a>

`File`  <a name="cfn-appmesh-virtualgateway-virtualgatewayclienttlscertificate-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*: [VirtualGatewayListenerTlsFileCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate.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-virtualgateway-virtualgatewayclienttlscertificate-sds"></a>
A reference to an object that represents a virtual gateway's client's Secret Discovery Service certificate.  
*Required*: No  
*Type*: [VirtualGatewayListenerTlsSdsCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate.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::VirtualGateway VirtualGatewayConnectionPool
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool"></a>

An object that represents the type of virtual gateway 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-virtualgateway-virtualgatewayconnectionpool-syntax"></a>

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

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

```
{
  "[GRPC](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-grpc)" : VirtualGatewayGrpcConnectionPool,
  "[HTTP](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http)" : VirtualGatewayHttpConnectionPool,
  "[HTTP2](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http2)" : VirtualGatewayHttp2ConnectionPool
}
```

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

```
  [GRPC](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-grpc): 
    VirtualGatewayGrpcConnectionPool
  [HTTP](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http): 
    VirtualGatewayHttpConnectionPool
  [HTTP2](#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http2): 
    VirtualGatewayHttp2ConnectionPool
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool-properties"></a>

`GRPC`  <a name="cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-grpc"></a>
An object that represents a type of connection pool.   
*Required*: No  
*Type*: [VirtualGatewayGrpcConnectionPool](aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.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-virtualgateway-virtualgatewayconnectionpool-http"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualGatewayHttpConnectionPool](aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.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-virtualgateway-virtualgatewayconnectionpool-http2"></a>
An object that represents a type of connection pool.  
*Required*: No  
*Type*: [VirtualGatewayHttp2ConnectionPool](aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.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::VirtualGateway VirtualGatewayFileAccessLog
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog"></a>

An object that represents an access log file.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog-syntax"></a>

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

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

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

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

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

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog-properties"></a>

`Format`  <a name="cfn-appmesh-virtualgateway-virtualgatewayfileaccesslog-format"></a>
The specified format for the virtual gateway access logs. It can be either `json_format` or `text_format`.  
*Required*: No  
*Type*: [LoggingFormat](aws-properties-appmesh-virtualgateway-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-virtualgateway-virtualgatewayfileaccesslog-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.  
*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::VirtualGateway VirtualGatewayGrpcConnectionPool
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-syntax"></a>

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

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

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

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

```
  [MaxRequests](#cfn-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-maxrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-properties"></a>

`MaxRequests`  <a name="cfn-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-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::VirtualGateway VirtualGatewayHealthCheckPolicy
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy-syntax"></a>

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

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

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

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

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

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy-properties"></a>

`HealthyThreshold`  <a name="cfn-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy-healthythreshold"></a>
The number of consecutive successful health checks that must occur before declaring the 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-virtualgateway-virtualgatewayhealthcheckpolicy-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-virtualgateway-virtualgatewayhealthcheckpolicy-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-virtualgateway-virtualgatewayhealthcheckpolicy-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-virtualgateway-virtualgatewayhealthcheckpolicy-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 | 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-virtualgateway-virtualgatewayhealthcheckpolicy-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-virtualgateway-virtualgatewayhealthcheckpolicy-unhealthythreshold"></a>
The number of consecutive failed health checks that must occur before declaring a virtual gateway 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::VirtualGateway VirtualGatewayHttp2ConnectionPool
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-syntax"></a>

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

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

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

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

```
  [MaxRequests](#cfn-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-maxrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-properties"></a>

`MaxRequests`  <a name="cfn-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-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::VirtualGateway VirtualGatewayHttpConnectionPool
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool"></a>

An object that represents a type of connection pool.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-syntax"></a>

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

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

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

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

```
  [MaxConnections](#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxconnections): Integer
  [MaxPendingRequests](#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxpendingrequests): Integer
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-properties"></a>

`MaxConnections`  <a name="cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-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-virtualgateway-virtualgatewayhttpconnectionpool-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::VirtualGateway VirtualGatewayListener
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistener"></a>

An object that represents a listener for a virtual gateway.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistener-syntax"></a>

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

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

```
{
  "[ConnectionPool](#cfn-appmesh-virtualgateway-virtualgatewaylistener-connectionpool)" : VirtualGatewayConnectionPool,
  "[HealthCheck](#cfn-appmesh-virtualgateway-virtualgatewaylistener-healthcheck)" : VirtualGatewayHealthCheckPolicy,
  "[PortMapping](#cfn-appmesh-virtualgateway-virtualgatewaylistener-portmapping)" : VirtualGatewayPortMapping,
  "[TLS](#cfn-appmesh-virtualgateway-virtualgatewaylistener-tls)" : VirtualGatewayListenerTls
}
```

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

```
  [ConnectionPool](#cfn-appmesh-virtualgateway-virtualgatewaylistener-connectionpool): 
    VirtualGatewayConnectionPool
  [HealthCheck](#cfn-appmesh-virtualgateway-virtualgatewaylistener-healthcheck): 
    VirtualGatewayHealthCheckPolicy
  [PortMapping](#cfn-appmesh-virtualgateway-virtualgatewaylistener-portmapping): 
    VirtualGatewayPortMapping
  [TLS](#cfn-appmesh-virtualgateway-virtualgatewaylistener-tls): 
    VirtualGatewayListenerTls
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistener-properties"></a>

`ConnectionPool`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistener-connectionpool"></a>
The connection pool information for the listener.  
*Required*: No  
*Type*: [VirtualGatewayConnectionPool](aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.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-virtualgateway-virtualgatewaylistener-healthcheck"></a>
The health check information for the listener.  
*Required*: No  
*Type*: [VirtualGatewayHealthCheckPolicy](aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy.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-virtualgateway-virtualgatewaylistener-portmapping"></a>
The port mapping information for the listener.  
*Required*: Yes  
*Type*: [VirtualGatewayPortMapping](aws-properties-appmesh-virtualgateway-virtualgatewayportmapping.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-virtualgateway-virtualgatewaylistener-tls"></a>
A reference to an object that represents the Transport Layer Security (TLS) properties for the listener.  
*Required*: No  
*Type*: [VirtualGatewayListenerTls](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertls.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::VirtualGateway VirtualGatewayListenerTls
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertls"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertls-syntax"></a>

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

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

```
{
  "[Certificate](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-certificate)" : VirtualGatewayListenerTlsCertificate,
  "[Mode](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-mode)" : String,
  "[Validation](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-validation)" : VirtualGatewayListenerTlsValidationContext
}
```

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

```
  [Certificate](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-certificate): 
    VirtualGatewayListenerTlsCertificate
  [Mode](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-mode): String
  [Validation](#cfn-appmesh-virtualgateway-virtualgatewaylistenertls-validation): 
    VirtualGatewayListenerTlsValidationContext
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertls-properties"></a>

`Certificate`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertls-certificate"></a>
An object that represents a Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [VirtualGatewayListenerTlsCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlscertificate.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-virtualgateway-virtualgatewaylistenertls-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-virtualgateway-virtualgatewaylistenertls-validation"></a>
A reference to an object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context.  
*Required*: No  
*Type*: [VirtualGatewayListenerTlsValidationContext](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext.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::VirtualGateway VirtualGatewayListenerTlsAcmCertificate
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate"></a>

An object that represents an AWS Certificate Manager certificate.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate-syntax"></a>

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

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

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

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

```
  [CertificateArn](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate-certificatearn): String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate-properties"></a>

`CertificateArn`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate-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::VirtualGateway VirtualGatewayListenerTlsCertificate
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlscertificate"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-syntax"></a>

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

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

```
{
  "[ACM](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-acm)" : VirtualGatewayListenerTlsAcmCertificate,
  "[File](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-file)" : VirtualGatewayListenerTlsFileCertificate,
  "[SDS](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-sds)" : VirtualGatewayListenerTlsSdsCertificate
}
```

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

```
  [ACM](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-acm): 
    VirtualGatewayListenerTlsAcmCertificate
  [File](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-file): 
    VirtualGatewayListenerTlsFileCertificate
  [SDS](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-sds): 
    VirtualGatewayListenerTlsSdsCertificate
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-properties"></a>

`ACM`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlscertificate-acm"></a>
A reference to an object that represents an AWS Certificate Manager certificate.  
*Required*: No  
*Type*: [VirtualGatewayListenerTlsAcmCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsacmcertificate.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-virtualgateway-virtualgatewaylistenertlscertificate-file"></a>
A reference to an object that represents a local file certificate.  
*Required*: No  
*Type*: [VirtualGatewayListenerTlsFileCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate.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-virtualgateway-virtualgatewaylistenertlscertificate-sds"></a>
A reference to an object that represents a virtual gateway's listener's Secret Discovery Service certificate.  
*Required*: No  
*Type*: [VirtualGatewayListenerTlsSdsCertificate](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate.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::VirtualGateway VirtualGatewayListenerTlsFileCertificate
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate"></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-virtualgateway-virtualgatewaylistenertlsfilecertificate-syntax"></a>

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

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

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

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

```
  [CertificateChain](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate-certificatechain): String
  [PrivateKey](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate-privatekey): String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate-properties"></a>

`CertificateChain`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlsfilecertificate-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-virtualgateway-virtualgatewaylistenertlsfilecertificate-privatekey"></a>
The private key for a certificate stored on the file system of the mesh endpoint 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::VirtualGateway VirtualGatewayListenerTlsSdsCertificate
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate"></a>

An object that represents the virtual gateway's 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-virtualgateway-virtualgatewaylistenertlssdscertificate-syntax"></a>

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

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

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

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

```
  [SecretName](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate-secretname): String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate-properties"></a>

`SecretName`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlssdscertificate-secretname"></a>
A reference to an object that represents the name of the secret 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::VirtualGateway VirtualGatewayListenerTlsValidationContext
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-syntax"></a>

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

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

```
{
  "[SubjectAlternativeNames](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-subjectalternativenames)" : SubjectAlternativeNames,
  "[Trust](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-trust)" : VirtualGatewayListenerTlsValidationContextTrust
}
```

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

```
  [SubjectAlternativeNames](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-subjectalternativenames): 
    SubjectAlternativeNames
  [Trust](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-trust): 
    VirtualGatewayListenerTlsValidationContextTrust
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-properties"></a>

`SubjectAlternativeNames`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontext-subjectalternativenames"></a>
A reference to an object that represents the SANs for a virtual gateway listener's Transport Layer Security (TLS) validation context.  
*Required*: No  
*Type*: [SubjectAlternativeNames](aws-properties-appmesh-virtualgateway-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-virtualgateway-virtualgatewaylistenertlsvalidationcontext-trust"></a>
A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [VirtualGatewayListenerTlsValidationContextTrust](aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust.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::VirtualGateway VirtualGatewayListenerTlsValidationContextTrust
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-syntax"></a>

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

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

```
{
  "[File](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-file)" : VirtualGatewayTlsValidationContextFileTrust,
  "[SDS](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-sds)" : VirtualGatewayTlsValidationContextSdsTrust
}
```

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

```
  [File](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-file): 
    VirtualGatewayTlsValidationContextFileTrust
  [SDS](#cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-sds): 
    VirtualGatewayTlsValidationContextSdsTrust
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-properties"></a>

`File`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-file"></a>
An object that represents a Transport Layer Security (TLS) validation context trust for a local file.  
*Required*: No  
*Type*: [VirtualGatewayTlsValidationContextFileTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust.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-virtualgateway-virtualgatewaylistenertlsvalidationcontexttrust-sds"></a>
A reference to an object that represents a virtual gateway's listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust.  
*Required*: No  
*Type*: [VirtualGatewayTlsValidationContextSdsTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust.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::VirtualGateway VirtualGatewayLogging
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylogging"></a>

An object that represents logging information.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylogging-syntax"></a>

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

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

```
{
  "[AccessLog](#cfn-appmesh-virtualgateway-virtualgatewaylogging-accesslog)" : VirtualGatewayAccessLog
}
```

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

```
  [AccessLog](#cfn-appmesh-virtualgateway-virtualgatewaylogging-accesslog): 
    VirtualGatewayAccessLog
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaylogging-properties"></a>

`AccessLog`  <a name="cfn-appmesh-virtualgateway-virtualgatewaylogging-accesslog"></a>
The access log configuration.  
*Required*: No  
*Type*: [VirtualGatewayAccessLog](aws-properties-appmesh-virtualgateway-virtualgatewayaccesslog.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::VirtualGateway VirtualGatewayPortMapping
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayportmapping"></a>

An object that represents a port mapping.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayportmapping-syntax"></a>

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

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

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

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

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

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayportmapping-properties"></a>

`Port`  <a name="cfn-appmesh-virtualgateway-virtualgatewayportmapping-port"></a>
The port used for the port mapping. Specify one protocol.  
*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-virtualgateway-virtualgatewayportmapping-protocol"></a>
The protocol used for the port mapping.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `http | 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::VirtualGateway VirtualGatewaySpec
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayspec"></a>

An object that represents the specification of a service mesh resource.

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayspec-syntax"></a>

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

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

```
{
  "[BackendDefaults](#cfn-appmesh-virtualgateway-virtualgatewayspec-backenddefaults)" : VirtualGatewayBackendDefaults,
  "[Listeners](#cfn-appmesh-virtualgateway-virtualgatewayspec-listeners)" : [ VirtualGatewayListener, ... ],
  "[Logging](#cfn-appmesh-virtualgateway-virtualgatewayspec-logging)" : VirtualGatewayLogging
}
```

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

```
  [BackendDefaults](#cfn-appmesh-virtualgateway-virtualgatewayspec-backenddefaults): 
    VirtualGatewayBackendDefaults
  [Listeners](#cfn-appmesh-virtualgateway-virtualgatewayspec-listeners): 
    - VirtualGatewayListener
  [Logging](#cfn-appmesh-virtualgateway-virtualgatewayspec-logging): 
    VirtualGatewayLogging
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewayspec-properties"></a>

`BackendDefaults`  <a name="cfn-appmesh-virtualgateway-virtualgatewayspec-backenddefaults"></a>
A reference to an object that represents the defaults for backends.  
*Required*: No  
*Type*: [VirtualGatewayBackendDefaults](aws-properties-appmesh-virtualgateway-virtualgatewaybackenddefaults.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-virtualgateway-virtualgatewayspec-listeners"></a>
The listeners that the mesh endpoint is expected to receive inbound traffic from. You can specify one listener.  
*Required*: Yes  
*Type*: Array of [VirtualGatewayListener](aws-properties-appmesh-virtualgateway-virtualgatewaylistener.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-virtualgateway-virtualgatewayspec-logging"></a>
An object that represents logging information.  
*Required*: No  
*Type*: [VirtualGatewayLogging](aws-properties-appmesh-virtualgateway-virtualgatewaylogging.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::VirtualGateway VirtualGatewayTlsValidationContext
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-syntax"></a>

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

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

```
{
  "[SubjectAlternativeNames](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-subjectalternativenames)" : SubjectAlternativeNames,
  "[Trust](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-trust)" : VirtualGatewayTlsValidationContextTrust
}
```

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

```
  [SubjectAlternativeNames](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-subjectalternativenames): 
    SubjectAlternativeNames
  [Trust](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-trust): 
    VirtualGatewayTlsValidationContextTrust
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-properties"></a>

`SubjectAlternativeNames`  <a name="cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontext-subjectalternativenames"></a>
A reference to an object that represents the SANs for a virtual gateway's listener's Transport Layer Security (TLS) validation context.  
*Required*: No  
*Type*: [SubjectAlternativeNames](aws-properties-appmesh-virtualgateway-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-virtualgateway-virtualgatewaytlsvalidationcontext-trust"></a>
A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.  
*Required*: Yes  
*Type*: [VirtualGatewayTlsValidationContextTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust.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::VirtualGateway VirtualGatewayTlsValidationContextAcmTrust
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust"></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-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust-syntax"></a>

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

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

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

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

```
  [CertificateAuthorityArns](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust-certificateauthorityarns): 
    - String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust-properties"></a>

`CertificateAuthorityArns`  <a name="cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust-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::VirtualGateway VirtualGatewayTlsValidationContextFileTrust
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust-syntax"></a>

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

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

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

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

```
  [CertificateChain](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust-certificatechain): String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust-properties"></a>

`CertificateChain`  <a name="cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust-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::VirtualGateway VirtualGatewayTlsValidationContextSdsTrust
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust"></a>

An object that represents a virtual gateway's listener's 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-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust-syntax"></a>

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

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

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

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

```
  [SecretName](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust-secretname): String
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust-properties"></a>

`SecretName`  <a name="cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust-secretname"></a>
A reference to an object that represents the name of the secret for a virtual gateway's 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::VirtualGateway VirtualGatewayTlsValidationContextTrust
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust"></a>

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

## Syntax
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-syntax"></a>

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

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

```
{
  "[ACM](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-acm)" : VirtualGatewayTlsValidationContextAcmTrust,
  "[File](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-file)" : VirtualGatewayTlsValidationContextFileTrust,
  "[SDS](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-sds)" : VirtualGatewayTlsValidationContextSdsTrust
}
```

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

```
  [ACM](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-acm): 
    VirtualGatewayTlsValidationContextAcmTrust
  [File](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-file): 
    VirtualGatewayTlsValidationContextFileTrust
  [SDS](#cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-sds): 
    VirtualGatewayTlsValidationContextSdsTrust
```

## Properties
<a name="aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-properties"></a>

`ACM`  <a name="cfn-appmesh-virtualgateway-virtualgatewaytlsvalidationcontexttrust-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*: [VirtualGatewayTlsValidationContextAcmTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextacmtrust.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-virtualgateway-virtualgatewaytlsvalidationcontexttrust-file"></a>
An object that represents a Transport Layer Security (TLS) validation context trust for a local file.  
*Required*: No  
*Type*: [VirtualGatewayTlsValidationContextFileTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextfiletrust.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-virtualgateway-virtualgatewaytlsvalidationcontexttrust-sds"></a>
A reference to an object that represents a virtual gateway's Transport Layer Security (TLS) Secret Discovery Service validation context trust.  
*Required*: No  
*Type*: [VirtualGatewayTlsValidationContextSdsTrust](aws-properties-appmesh-virtualgateway-virtualgatewaytlsvalidationcontextsdstrust.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)