class Aws::AppMesh::Types::VirtualNodeSpec

An object that represents the specification of a virtual node.

@note When making an API call, you may pass VirtualNodeSpec

data as a hash:

    {
      backend_defaults: {
        client_policy: {
          tls: {
            certificate: {
              file: {
                certificate_chain: "FilePath", # required
                private_key: "FilePath", # required
              },
              sds: {
                secret_name: "SdsSecretName", # required
              },
            },
            enforce: false,
            ports: [1],
            validation: { # required
              subject_alternative_names: {
                match: { # required
                  exact: ["SubjectAlternativeName"], # required
                },
              },
              trust: { # required
                acm: {
                  certificate_authority_arns: ["Arn"], # required
                },
                file: {
                  certificate_chain: "FilePath", # required
                },
                sds: {
                  secret_name: "SdsSecretName", # required
                },
              },
            },
          },
        },
      },
      backends: [
        {
          virtual_service: {
            client_policy: {
              tls: {
                certificate: {
                  file: {
                    certificate_chain: "FilePath", # required
                    private_key: "FilePath", # required
                  },
                  sds: {
                    secret_name: "SdsSecretName", # required
                  },
                },
                enforce: false,
                ports: [1],
                validation: { # required
                  subject_alternative_names: {
                    match: { # required
                      exact: ["SubjectAlternativeName"], # required
                    },
                  },
                  trust: { # required
                    acm: {
                      certificate_authority_arns: ["Arn"], # required
                    },
                    file: {
                      certificate_chain: "FilePath", # required
                    },
                    sds: {
                      secret_name: "SdsSecretName", # required
                    },
                  },
                },
              },
            },
            virtual_service_name: "ServiceName", # required
          },
        },
      ],
      listeners: [
        {
          connection_pool: {
            grpc: {
              max_requests: 1, # required
            },
            http: {
              max_connections: 1, # required
              max_pending_requests: 1,
            },
            http2: {
              max_requests: 1, # required
            },
            tcp: {
              max_connections: 1, # required
            },
          },
          health_check: {
            healthy_threshold: 1, # required
            interval_millis: 1, # required
            path: "String",
            port: 1,
            protocol: "http", # required, accepts http, tcp, http2, grpc
            timeout_millis: 1, # required
            unhealthy_threshold: 1, # required
          },
          outlier_detection: {
            base_ejection_duration: { # required
              unit: "s", # accepts s, ms
              value: 1,
            },
            interval: { # required
              unit: "s", # accepts s, ms
              value: 1,
            },
            max_ejection_percent: 1, # required
            max_server_errors: 1, # required
          },
          port_mapping: { # required
            port: 1, # required
            protocol: "http", # required, accepts http, tcp, http2, grpc
          },
          timeout: {
            grpc: {
              idle: {
                unit: "s", # accepts s, ms
                value: 1,
              },
              per_request: {
                unit: "s", # accepts s, ms
                value: 1,
              },
            },
            http: {
              idle: {
                unit: "s", # accepts s, ms
                value: 1,
              },
              per_request: {
                unit: "s", # accepts s, ms
                value: 1,
              },
            },
            http2: {
              idle: {
                unit: "s", # accepts s, ms
                value: 1,
              },
              per_request: {
                unit: "s", # accepts s, ms
                value: 1,
              },
            },
            tcp: {
              idle: {
                unit: "s", # accepts s, ms
                value: 1,
              },
            },
          },
          tls: {
            certificate: { # required
              acm: {
                certificate_arn: "Arn", # required
              },
              file: {
                certificate_chain: "FilePath", # required
                private_key: "FilePath", # required
              },
              sds: {
                secret_name: "SdsSecretName", # required
              },
            },
            mode: "STRICT", # required, accepts STRICT, PERMISSIVE, DISABLED
            validation: {
              subject_alternative_names: {
                match: { # required
                  exact: ["SubjectAlternativeName"], # required
                },
              },
              trust: { # required
                file: {
                  certificate_chain: "FilePath", # required
                },
                sds: {
                  secret_name: "SdsSecretName", # required
                },
              },
            },
          },
        },
      ],
      logging: {
        access_log: {
          file: {
            path: "FilePath", # required
          },
        },
      },
      service_discovery: {
        aws_cloud_map: {
          attributes: [
            {
              key: "AwsCloudMapInstanceAttributeKey", # required
              value: "AwsCloudMapInstanceAttributeValue", # required
            },
          ],
          namespace_name: "AwsCloudMapName", # required
          service_name: "AwsCloudMapName", # required
        },
        dns: {
          hostname: "Hostname", # required
          response_type: "LOADBALANCER", # accepts LOADBALANCER, ENDPOINTS
        },
      },
    }

@!attribute [rw] backend_defaults

A reference to an object that represents the defaults for backends.
@return [Types::BackendDefaults]

@!attribute [rw] backends

The backends that the virtual node is expected to send outbound
traffic to.
@return [Array<Types::Backend>]

@!attribute [rw] listeners

The listener that the virtual node is expected to receive inbound
traffic from. You can specify one listener.
@return [Array<Types::Listener>]

@!attribute [rw] logging

The inbound and outbound access logging information for the virtual
node.
@return [Types::Logging]

@!attribute [rw] service_discovery

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.
@return [Types::ServiceDiscovery]

@see docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/VirtualNodeSpec AWS API Documentation

Constants

SENSITIVE