/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ECS { namespace 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.

See Also:

AWS API * Reference

*/ class PortMapping { public: AWS_ECS_API PortMapping(); AWS_ECS_API PortMapping(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API PortMapping& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

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.

*/ inline int GetContainerPort() const{ return m_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.

*/ inline bool ContainerPortHasBeenSet() const { return m_containerPortHasBeenSet; } /** *

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.

*/ inline void SetContainerPort(int value) { m_containerPortHasBeenSet = true; m_containerPort = value; } /** *

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.

*/ inline PortMapping& WithContainerPort(int value) { SetContainerPort(value); return *this;} /** *

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:

  • For * containers in a task with the awsvpc network mode, the * hostPort is set to the same value as the * containerPort. This is a static mapping strategy.

  • *

    For containers in a task with the bridge network mode, the * Amazon ECS agent finds open ports on the host and automatically binds them to * the container ports. This is a dynamic mapping strategy.

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.

*/ inline int GetHostPort() const{ return m_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:

  • For * containers in a task with the awsvpc network mode, the * hostPort is set to the same value as the * containerPort. This is a static mapping strategy.

  • *

    For containers in a task with the bridge network mode, the * Amazon ECS agent finds open ports on the host and automatically binds them to * the container ports. This is a dynamic mapping strategy.

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.

*/ inline bool HostPortHasBeenSet() const { return m_hostPortHasBeenSet; } /** *

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:

  • For * containers in a task with the awsvpc network mode, the * hostPort is set to the same value as the * containerPort. This is a static mapping strategy.

  • *

    For containers in a task with the bridge network mode, the * Amazon ECS agent finds open ports on the host and automatically binds them to * the container ports. This is a dynamic mapping strategy.

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.

*/ inline void SetHostPort(int value) { m_hostPortHasBeenSet = true; m_hostPort = value; } /** *

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:

  • For * containers in a task with the awsvpc network mode, the * hostPort is set to the same value as the * containerPort. This is a static mapping strategy.

  • *

    For containers in a task with the bridge network mode, the * Amazon ECS agent finds open ports on the host and automatically binds them to * the container ports. This is a dynamic mapping strategy.

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.

*/ inline PortMapping& WithHostPort(int value) { SetHostPort(value); return *this;} /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline const TransportProtocol& GetProtocol() const{ return m_protocol; } /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline bool ProtocolHasBeenSet() const { return m_protocolHasBeenSet; } /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline void SetProtocol(const TransportProtocol& value) { m_protocolHasBeenSet = true; m_protocol = value; } /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline void SetProtocol(TransportProtocol&& value) { m_protocolHasBeenSet = true; m_protocol = std::move(value); } /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline PortMapping& WithProtocol(const TransportProtocol& value) { SetProtocol(value); return *this;} /** *

The protocol used for the port mapping. Valid values are tcp and * udp. The default is tcp.

*/ inline PortMapping& WithProtocol(TransportProtocol&& value) { SetProtocol(std::move(value)); return *this;} /** *

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.

*/ inline const Aws::String& GetName() const{ return m_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.

*/ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; } /** *

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.

*/ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; } /** *

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.

*/ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); } /** *

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.

*/ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); } /** *

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.

*/ inline PortMapping& WithName(const Aws::String& value) { SetName(value); return *this;} /** *

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.

*/ inline PortMapping& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;} /** *

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.

*/ inline PortMapping& WithName(const char* value) { SetName(value); return *this;} /** *

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.

*/ inline const ApplicationProtocol& GetAppProtocol() const{ return m_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.

*/ inline bool AppProtocolHasBeenSet() const { return m_appProtocolHasBeenSet; } /** *

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.

*/ inline void SetAppProtocol(const ApplicationProtocol& value) { m_appProtocolHasBeenSet = true; m_appProtocol = value; } /** *

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.

*/ inline void SetAppProtocol(ApplicationProtocol&& value) { m_appProtocolHasBeenSet = true; m_appProtocol = std::move(value); } /** *

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.

*/ inline PortMapping& WithAppProtocol(const ApplicationProtocol& value) { SetAppProtocol(value); return *this;} /** *

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.

*/ inline PortMapping& WithAppProtocol(ApplicationProtocol&& value) { SetAppProtocol(std::move(value)); return *this;} /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline const Aws::String& GetContainerPortRange() const{ return m_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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline bool ContainerPortRangeHasBeenSet() const { return m_containerPortRangeHasBeenSet; } /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline void SetContainerPortRange(const Aws::String& value) { m_containerPortRangeHasBeenSet = true; m_containerPortRange = value; } /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline void SetContainerPortRange(Aws::String&& value) { m_containerPortRangeHasBeenSet = true; m_containerPortRange = std::move(value); } /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline void SetContainerPortRange(const char* value) { m_containerPortRangeHasBeenSet = true; m_containerPortRange.assign(value); } /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline PortMapping& WithContainerPortRange(const Aws::String& value) { SetContainerPortRange(value); return *this;} /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline PortMapping& WithContainerPortRange(Aws::String&& value) { SetContainerPortRange(std::move(value)); return *this;} /** *

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 must use either the * bridge network mode or the awsvpc network mode.

    *
  • This parameter is available for both the EC2 and Fargate launch * types.

  • This parameter is available for both the Linux and * Windows operating systems.

  • The container instance must have at * least version 1.67.0 of the container agent and at least version 1.67.0-1 of the * ecs-init package

  • You can specify a maximum of * 100 port ranges per container.

  • You do not specify a * hostPortRange. The value of the hostPortRange is set * as follows:

    • For containers in a task with the * awsvpc network mode, the hostPort is set to the same * value as the containerPort. This is a static mapping strategy.

      *
    • For containers in a task with the bridge network * mode, the Amazon ECS agent finds open host ports from the default ephemeral * range and passes it to docker to bind them to the container ports.

    • *
  • The containerPortRange valid values are between * 1 and 65535.

  • A port can only be included in one port mapping * per container.

  • You cannot specify overlapping port ranges.

    *
  • The first port in the range must be less than last port in the * range.

  • Docker recommends that you turn off the docker-proxy in * the Docker daemon config file when you have a large number of ports.

    For * more information, see Issue * #11185 on the Github website.

    For information about how to turn off * the docker-proxy in the Docker daemon config file, see Docker * daemon in the Amazon ECS Developer Guide.

You can * call * DescribeTasks to view the hostPortRange which are * the host ports that are bound to the container ports.

*/ inline PortMapping& WithContainerPortRange(const char* value) { SetContainerPortRange(value); return *this;} private: int m_containerPort; bool m_containerPortHasBeenSet = false; int m_hostPort; bool m_hostPortHasBeenSet = false; TransportProtocol m_protocol; bool m_protocolHasBeenSet = false; Aws::String m_name; bool m_nameHasBeenSet = false; ApplicationProtocol m_appProtocol; bool m_appProtocolHasBeenSet = false; Aws::String m_containerPortRange; bool m_containerPortRangeHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws