Class CfnVirtualNode
Creates a virtual node within a service mesh.
Inherited Members
Namespace: Amazon.CDK.AWS.AppMesh
Assembly: Amazon.CDK.Lib.dll
Syntax (csharp)
public class CfnVirtualNode : CfnResource, IInspectable, ITaggable
Syntax (vb)
Public Class CfnVirtualNode
Inherits CfnResource
Implements IInspectable, ITaggable
Remarks
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.
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 . 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 in the AWS App Mesh User Guide.
See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-virtualnode.html
CloudformationResource: AWS::AppMesh::VirtualNode
ExampleMetadata: fixture=_generated
Examples
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
using Amazon.CDK.AWS.AppMesh;
var cfnVirtualNode = new CfnVirtualNode(this, "MyCfnVirtualNode", new CfnVirtualNodeProps {
MeshName = "meshName",
Spec = new VirtualNodeSpecProperty {
BackendDefaults = new BackendDefaultsProperty {
ClientPolicy = new ClientPolicyProperty {
Tls = new ClientPolicyTlsProperty {
Validation = new TlsValidationContextProperty {
Trust = new TlsValidationContextTrustProperty {
Acm = new TlsValidationContextAcmTrustProperty {
CertificateAuthorityArns = new [] { "certificateAuthorityArns" }
},
File = new TlsValidationContextFileTrustProperty {
CertificateChain = "certificateChain"
},
Sds = new TlsValidationContextSdsTrustProperty {
SecretName = "secretName"
}
},
// the properties below are optional
SubjectAlternativeNames = new SubjectAlternativeNamesProperty {
Match = new SubjectAlternativeNameMatchersProperty {
Exact = new [] { "exact" }
}
}
},
// the properties below are optional
Certificate = new ClientTlsCertificateProperty {
File = new ListenerTlsFileCertificateProperty {
CertificateChain = "certificateChain",
PrivateKey = "privateKey"
},
Sds = new ListenerTlsSdsCertificateProperty {
SecretName = "secretName"
}
},
Enforce = false,
Ports = new [] { 123 }
}
}
},
Backends = new [] { new BackendProperty {
VirtualService = new VirtualServiceBackendProperty {
VirtualServiceName = "virtualServiceName",
// the properties below are optional
ClientPolicy = new ClientPolicyProperty {
Tls = new ClientPolicyTlsProperty {
Validation = new TlsValidationContextProperty {
Trust = new TlsValidationContextTrustProperty {
Acm = new TlsValidationContextAcmTrustProperty {
CertificateAuthorityArns = new [] { "certificateAuthorityArns" }
},
File = new TlsValidationContextFileTrustProperty {
CertificateChain = "certificateChain"
},
Sds = new TlsValidationContextSdsTrustProperty {
SecretName = "secretName"
}
},
// the properties below are optional
SubjectAlternativeNames = new SubjectAlternativeNamesProperty {
Match = new SubjectAlternativeNameMatchersProperty {
Exact = new [] { "exact" }
}
}
},
// the properties below are optional
Certificate = new ClientTlsCertificateProperty {
File = new ListenerTlsFileCertificateProperty {
CertificateChain = "certificateChain",
PrivateKey = "privateKey"
},
Sds = new ListenerTlsSdsCertificateProperty {
SecretName = "secretName"
}
},
Enforce = false,
Ports = new [] { 123 }
}
}
}
} },
Listeners = new [] { new ListenerProperty {
PortMapping = new PortMappingProperty {
Port = 123,
Protocol = "protocol"
},
// the properties below are optional
ConnectionPool = new VirtualNodeConnectionPoolProperty {
Grpc = new VirtualNodeGrpcConnectionPoolProperty {
MaxRequests = 123
},
Http = new VirtualNodeHttpConnectionPoolProperty {
MaxConnections = 123,
// the properties below are optional
MaxPendingRequests = 123
},
Http2 = new VirtualNodeHttp2ConnectionPoolProperty {
MaxRequests = 123
},
Tcp = new VirtualNodeTcpConnectionPoolProperty {
MaxConnections = 123
}
},
HealthCheck = new HealthCheckProperty {
HealthyThreshold = 123,
IntervalMillis = 123,
Protocol = "protocol",
TimeoutMillis = 123,
UnhealthyThreshold = 123,
// the properties below are optional
Path = "path",
Port = 123
},
OutlierDetection = new OutlierDetectionProperty {
BaseEjectionDuration = new DurationProperty {
Unit = "unit",
Value = 123
},
Interval = new DurationProperty {
Unit = "unit",
Value = 123
},
MaxEjectionPercent = 123,
MaxServerErrors = 123
},
Timeout = new ListenerTimeoutProperty {
Grpc = new GrpcTimeoutProperty {
Idle = new DurationProperty {
Unit = "unit",
Value = 123
},
PerRequest = new DurationProperty {
Unit = "unit",
Value = 123
}
},
Http = new HttpTimeoutProperty {
Idle = new DurationProperty {
Unit = "unit",
Value = 123
},
PerRequest = new DurationProperty {
Unit = "unit",
Value = 123
}
},
Http2 = new HttpTimeoutProperty {
Idle = new DurationProperty {
Unit = "unit",
Value = 123
},
PerRequest = new DurationProperty {
Unit = "unit",
Value = 123
}
},
Tcp = new TcpTimeoutProperty {
Idle = new DurationProperty {
Unit = "unit",
Value = 123
}
}
},
Tls = new ListenerTlsProperty {
Certificate = new ListenerTlsCertificateProperty {
Acm = new ListenerTlsAcmCertificateProperty {
CertificateArn = "certificateArn"
},
File = new ListenerTlsFileCertificateProperty {
CertificateChain = "certificateChain",
PrivateKey = "privateKey"
},
Sds = new ListenerTlsSdsCertificateProperty {
SecretName = "secretName"
}
},
Mode = "mode",
// the properties below are optional
Validation = new ListenerTlsValidationContextProperty {
Trust = new ListenerTlsValidationContextTrustProperty {
File = new TlsValidationContextFileTrustProperty {
CertificateChain = "certificateChain"
},
Sds = new TlsValidationContextSdsTrustProperty {
SecretName = "secretName"
}
},
// the properties below are optional
SubjectAlternativeNames = new SubjectAlternativeNamesProperty {
Match = new SubjectAlternativeNameMatchersProperty {
Exact = new [] { "exact" }
}
}
}
}
} },
Logging = new LoggingProperty {
AccessLog = new AccessLogProperty {
File = new FileAccessLogProperty {
Path = "path",
// the properties below are optional
Format = new LoggingFormatProperty {
Json = new [] { new JsonFormatRefProperty {
Key = "key",
Value = "value"
} },
Text = "text"
}
}
}
},
ServiceDiscovery = new ServiceDiscoveryProperty {
AwsCloudMap = new AwsCloudMapServiceDiscoveryProperty {
NamespaceName = "namespaceName",
ServiceName = "serviceName",
// the properties below are optional
Attributes = new [] { new AwsCloudMapInstanceAttributeProperty {
Key = "key",
Value = "value"
} },
IpPreference = "ipPreference"
},
Dns = new DnsServiceDiscoveryProperty {
Hostname = "hostname",
// the properties below are optional
IpPreference = "ipPreference",
ResponseType = "responseType"
}
}
},
// the properties below are optional
MeshOwner = "meshOwner",
Tags = new [] { new CfnTag {
Key = "key",
Value = "value"
} },
VirtualNodeName = "virtualNodeName"
});
Synopsis
Constructors
CfnVirtualNode(ByRefValue) | Used by jsii to construct an instance of this class from a Javascript-owned object reference |
CfnVirtualNode(DeputyBase.DeputyProps) | Used by jsii to construct an instance of this class from DeputyProps |
CfnVirtualNode(Construct, String, ICfnVirtualNodeProps) |
Properties
AttrArn | The full Amazon Resource Name (ARN) for the virtual node. |
AttrId | |
AttrMeshName | The name of the service mesh that the virtual node resides in. |
AttrMeshOwner | The AWS IAM account ID of the service mesh owner. |
AttrResourceOwner | The AWS IAM account ID of the resource owner. |
AttrUid | The unique identifier for the virtual node. |
AttrVirtualNodeName | The name of the virtual node. |
CFN_RESOURCE_TYPE_NAME | The CloudFormation resource type name for this resource class. |
CfnProperties | |
MeshName | The name of the service mesh to create the virtual node in. |
MeshOwner | The AWS IAM account ID of the service mesh owner. |
Spec | The virtual node specification to apply. |
Tags | Tag Manager which manages the tags for this resource. |
TagsRaw | Optional metadata that you can apply to the virtual node to assist with categorization and organization. |
VirtualNodeName | The name to use for the virtual node. |
Methods
Inspect(TreeInspector) | Examines the CloudFormation resource and discloses attributes. |
RenderProperties(IDictionary<String, Object>) |
Constructors
CfnVirtualNode(ByRefValue)
Used by jsii to construct an instance of this class from a Javascript-owned object reference
protected CfnVirtualNode(ByRefValue reference)
Parameters
- reference Amazon.JSII.Runtime.Deputy.ByRefValue
The Javascript-owned object reference
CfnVirtualNode(DeputyBase.DeputyProps)
Used by jsii to construct an instance of this class from DeputyProps
protected CfnVirtualNode(DeputyBase.DeputyProps props)
Parameters
- props Amazon.JSII.Runtime.Deputy.DeputyBase.DeputyProps
The deputy props
CfnVirtualNode(Construct, String, ICfnVirtualNodeProps)
public CfnVirtualNode(Construct scope, string id, ICfnVirtualNodeProps props)
Parameters
- scope Constructs.Construct
Scope in which this resource is defined.
- id System.String
Construct identifier for this resource (unique in its scope).
- props ICfnVirtualNodeProps
Resource properties.
Properties
AttrArn
The full Amazon Resource Name (ARN) for the virtual node.
public virtual string AttrArn { get; }
Property Value
System.String
Remarks
CloudformationAttribute: Arn
AttrId
public virtual string AttrId { get; }
Property Value
System.String
Remarks
CloudformationAttribute: Id
AttrMeshName
The name of the service mesh that the virtual node resides in.
public virtual string AttrMeshName { get; }
Property Value
System.String
Remarks
CloudformationAttribute: MeshName
AttrMeshOwner
The AWS IAM account ID of the service mesh owner.
public virtual string AttrMeshOwner { get; }
Property Value
System.String
Remarks
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 .
CloudformationAttribute: MeshOwner
AttrResourceOwner
The AWS IAM account ID of the resource owner.
public virtual string AttrResourceOwner { get; }
Property Value
System.String
Remarks
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 .
CloudformationAttribute: ResourceOwner
AttrUid
The unique identifier for the virtual node.
public virtual string AttrUid { get; }
Property Value
System.String
Remarks
CloudformationAttribute: Uid
AttrVirtualNodeName
The name of the virtual node.
public virtual string AttrVirtualNodeName { get; }
Property Value
System.String
Remarks
CloudformationAttribute: VirtualNodeName
CFN_RESOURCE_TYPE_NAME
The CloudFormation resource type name for this resource class.
public static string CFN_RESOURCE_TYPE_NAME { get; }
Property Value
System.String
CfnProperties
protected override IDictionary<string, object> CfnProperties { get; }
Property Value
System.Collections.Generic.IDictionary<System.String, System.Object>
Overrides
MeshName
The name of the service mesh to create the virtual node in.
public virtual string MeshName { get; set; }
Property Value
System.String
MeshOwner
The AWS IAM account ID of the service mesh owner.
public virtual string MeshOwner { get; set; }
Property Value
System.String
Spec
The virtual node specification to apply.
public virtual object Spec { get; set; }
Property Value
System.Object
Tags
Tag Manager which manages the tags for this resource.
public virtual TagManager Tags { get; }
Property Value
TagsRaw
Optional metadata that you can apply to the virtual node to assist with categorization and organization.
public virtual ICfnTag[] TagsRaw { get; set; }
Property Value
ICfnTag[]
VirtualNodeName
The name to use for the virtual node.
public virtual string VirtualNodeName { get; set; }
Property Value
System.String
Methods
Inspect(TreeInspector)
Examines the CloudFormation resource and discloses attributes.
public virtual void Inspect(TreeInspector inspector)
Parameters
- inspector TreeInspector
tree inspector to collect and process attributes.
RenderProperties(IDictionary<String, Object>)
protected override IDictionary<string, object> RenderProperties(IDictionary<string, object> props)
Parameters
- props System.Collections.Generic.IDictionary<System.String, System.Object>
Returns
System.Collections.Generic.IDictionary<System.String, System.Object>