/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the ecs-2014-11-13.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.ECS.Model { /// /// Port mappings allow containers to access ports on the host container instance to send /// or receive traffic. Port mappings are specified as part of the container definition. /// /// /// /// If you use containers in a task with the awsvpc or host /// network mode, specify the exposed ports using containerPort. The hostPort /// can be left blank or it must be the same value as the containerPort. /// /// /// /// Most fields of this parameter (containerPort, hostPort, /// protocol) maps to PortBindings in the Create /// a container section of the Docker /// Remote API and the --publish option to /// docker run . If the network mode of a task definition is set to host, /// host ports must either be undefined or match the container port in the port mapping. /// /// /// /// You can't expose the same container port for multiple protocols. If you attempt this, /// an error is returned. /// /// /// /// After a task reaches the RUNNING status, manual and automatic host and /// container port assignments are visible in the networkBindings section /// of DescribeTasks API responses. /// /// public partial class PortMapping { private ApplicationProtocol _appProtocol; private int? _containerPort; private string _containerPortRange; private int? _hostPort; private string _name; private TransportProtocol _protocol; /// /// Gets and sets the property AppProtocol. /// /// The application protocol that's used for the port mapping. This parameter only applies /// to Service Connect. We recommend that you set this parameter to be consistent with /// the protocol that your application uses. If you set this parameter, Amazon ECS adds /// protocol-specific connection handling to the Service Connect proxy. If you set this /// parameter, Amazon ECS adds protocol-specific telemetry in the Amazon ECS console and /// CloudWatch. /// /// /// /// If you don't set a value for this parameter, then TCP is used. However, Amazon ECS /// doesn't add protocol-specific telemetry for TCP. /// /// /// /// Tasks that run in a namespace can use short names to connect to services in the namespace. /// Tasks can connect to services across all of the clusters in the namespace. Tasks connect /// through a managed proxy container that collects logs and metrics for increased visibility. /// Only the tasks that Amazon ECS services create are supported with Service Connect. /// For more information, see Service /// Connect in the Amazon Elastic Container Service Developer Guide. /// /// public ApplicationProtocol AppProtocol { get { return this._appProtocol; } set { this._appProtocol = value; } } // Check to see if AppProtocol property is set internal bool IsSetAppProtocol() { return this._appProtocol != null; } /// /// Gets and sets the property ContainerPort. /// /// The port number on the container that's bound to the user-specified or automatically /// assigned host port. /// /// /// /// If you use containers in a task with the awsvpc or host /// network mode, specify the exposed ports using containerPort. /// /// /// /// If you use containers in a task with the bridge network mode and you /// specify a container port and not a host port, your container automatically receives /// a host port in the ephemeral port range. For more information, see hostPort. /// Port mappings that are automatically assigned in this way do not count toward the /// 100 reserved ports limit of a container instance. /// /// public int ContainerPort { get { return this._containerPort.GetValueOrDefault(); } set { this._containerPort = value; } } // Check to see if ContainerPort property is set internal bool IsSetContainerPort() { return this._containerPort.HasValue; } /// /// Gets and sets the property ContainerPortRange. /// /// The port number range on the container that's bound to the dynamically mapped host /// port range. /// /// /// /// The following rules apply when you specify a containerPortRange: /// /// /// /// You can call /// DescribeTasks to view the hostPortRange which are the /// host ports that are bound to the container ports. /// /// public string ContainerPortRange { get { return this._containerPortRange; } set { this._containerPortRange = value; } } // Check to see if ContainerPortRange property is set internal bool IsSetContainerPortRange() { return this._containerPortRange != null; } /// /// Gets and sets the property HostPort. /// /// The port number on the container instance to reserve for your container. /// /// /// /// If you specify a containerPortRange, leave this field empty and the value /// of the hostPort is set as follows: /// /// /// /// If you use containers in a task with the awsvpc or host /// network mode, the hostPort can either be left blank or set to the same /// value as the containerPort. /// /// /// /// If you use containers in a task with the bridge network mode, you can /// specify a non-reserved host port for your container port mapping, or you can omit /// the hostPort (or set it to 0) while specifying a containerPort /// and your container automatically receives a port in the ephemeral port range for your /// container instance operating system and Docker version. /// /// /// /// The default ephemeral port range for Docker version 1.6.0 and later is listed on the /// instance under /proc/sys/net/ipv4/ip_local_port_range. If this kernel /// parameter is unavailable, the default ephemeral port range from 49153 through 65535 /// is used. Do not attempt to specify a host port in the ephemeral port range as these /// are reserved for automatic assignment. In general, ports below 32768 are outside of /// the ephemeral port range. /// /// /// /// The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and the /// Amazon ECS container agent ports 51678-51680. Any host port that was previously specified /// in a running task is also reserved while the task is running. That is, after a task /// stops, the host port is released. The current reserved ports are displayed in the /// remainingResources of DescribeContainerInstances /// output. A container instance can have up to 100 reserved ports at a time. This number /// includes the default reserved ports. Automatically assigned ports aren't included /// in the 100 reserved ports quota. /// /// public int HostPort { get { return this._hostPort.GetValueOrDefault(); } set { this._hostPort = value; } } // Check to see if HostPort property is set internal bool IsSetHostPort() { return this._hostPort.HasValue; } /// /// Gets and sets the property Name. /// /// The name that's used for the port mapping. This parameter only applies to Service /// Connect. This parameter is the name that you use in the serviceConnectConfiguration /// of a service. The name can include up to 64 characters. The characters can include /// lowercase letters, numbers, underscores (_), and hyphens (-). The name can't start /// with a hyphen. /// /// /// /// For more information, see Service /// Connect in the Amazon Elastic Container Service Developer Guide. /// /// public string Name { get { return this._name; } set { this._name = value; } } // Check to see if Name property is set internal bool IsSetName() { return this._name != null; } /// /// Gets and sets the property Protocol. /// /// The protocol used for the port mapping. Valid values are tcp and udp. /// The default is tcp. /// /// public TransportProtocol Protocol { get { return this._protocol; } set { this._protocol = value; } } // Check to see if Protocol property is set internal bool IsSetProtocol() { return this._protocol != null; } } }