All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.ecs.model.PortMapping Maven / Gradle / Ivy

/*
 * 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.
 */

package software.amazon.awssdk.services.ecs.model;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * 

* 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. *

* *

* 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. *

*/ @Generated("software.amazon.awssdk:codegen") public final class PortMapping implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField CONTAINER_PORT_FIELD = SdkField. builder(MarshallingType.INTEGER) .memberName("containerPort").getter(getter(PortMapping::containerPort)).setter(setter(Builder::containerPort)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("containerPort").build()).build(); private static final SdkField HOST_PORT_FIELD = SdkField. builder(MarshallingType.INTEGER) .memberName("hostPort").getter(getter(PortMapping::hostPort)).setter(setter(Builder::hostPort)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("hostPort").build()).build(); private static final SdkField PROTOCOL_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("protocol").getter(getter(PortMapping::protocolAsString)).setter(setter(Builder::protocol)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("protocol").build()).build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(CONTAINER_PORT_FIELD, HOST_PORT_FIELD, PROTOCOL_FIELD)); private static final long serialVersionUID = 1L; private final Integer containerPort; private final Integer hostPort; private final String protocol; private PortMapping(BuilderImpl builder) { this.containerPort = builder.containerPort; this.hostPort = builder.hostPort; this.protocol = builder.protocol; } /** *

* 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. *

* * @return 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 final Integer containerPort() { return containerPort; } /** *

* The port number on the container instance to reserve for your container. *

*

* 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 ephemeral port range from 49153 through 65535 is always used for Docker versions before 1.6.0. *

*
*

* 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. *

* * @return The port number on the container instance to reserve for your container.

*

* 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 ephemeral port range from 49153 through 65535 is always used for Docker versions before * 1.6.0. *

*
*

* 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 final Integer hostPort() { return hostPort; } /** *

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

*

* If the service returns an enum value that is not available in the current SDK version, {@link #protocol} will * return {@link TransportProtocol#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #protocolAsString}. *

* * @return The protocol used for the port mapping. Valid values are tcp and udp. The * default is tcp. * @see TransportProtocol */ public final TransportProtocol protocol() { return TransportProtocol.fromValue(protocol); } /** *

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

*

* If the service returns an enum value that is not available in the current SDK version, {@link #protocol} will * return {@link TransportProtocol#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from * {@link #protocolAsString}. *

* * @return The protocol used for the port mapping. Valid values are tcp and udp. The * default is tcp. * @see TransportProtocol */ public final String protocolAsString() { return protocol; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public final int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(containerPort()); hashCode = 31 * hashCode + Objects.hashCode(hostPort()); hashCode = 31 * hashCode + Objects.hashCode(protocolAsString()); return hashCode; } @Override public final boolean equals(Object obj) { return equalsBySdkFields(obj); } @Override public final boolean equalsBySdkFields(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof PortMapping)) { return false; } PortMapping other = (PortMapping) obj; return Objects.equals(containerPort(), other.containerPort()) && Objects.equals(hostPort(), other.hostPort()) && Objects.equals(protocolAsString(), other.protocolAsString()); } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public final String toString() { return ToString.builder("PortMapping").add("ContainerPort", containerPort()).add("HostPort", hostPort()) .add("Protocol", protocolAsString()).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "containerPort": return Optional.ofNullable(clazz.cast(containerPort())); case "hostPort": return Optional.ofNullable(clazz.cast(hostPort())); case "protocol": return Optional.ofNullable(clazz.cast(protocolAsString())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((PortMapping) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* 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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ Builder containerPort(Integer containerPort); /** *

* The port number on the container instance to reserve for your container. *

*

* 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 ephemeral port range from 49153 through 65535 is always used for Docker versions before 1.6.0. *

*
*

* 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. *

* * @param hostPort * The port number on the container instance to reserve for your container.

*

* 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 ephemeral port range from 49153 through 65535 is always used for Docker versions before * 1.6.0. *

*
*

* 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. * @return Returns a reference to this object so that method calls can be chained together. */ Builder hostPort(Integer hostPort); /** *

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

* * @param protocol * The protocol used for the port mapping. Valid values are tcp and udp. The * default is tcp. * @see TransportProtocol * @return Returns a reference to this object so that method calls can be chained together. * @see TransportProtocol */ Builder protocol(String protocol); /** *

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

* * @param protocol * The protocol used for the port mapping. Valid values are tcp and udp. The * default is tcp. * @see TransportProtocol * @return Returns a reference to this object so that method calls can be chained together. * @see TransportProtocol */ Builder protocol(TransportProtocol protocol); } static final class BuilderImpl implements Builder { private Integer containerPort; private Integer hostPort; private String protocol; private BuilderImpl() { } private BuilderImpl(PortMapping model) { containerPort(model.containerPort); hostPort(model.hostPort); protocol(model.protocol); } public final Integer getContainerPort() { return containerPort; } public final void setContainerPort(Integer containerPort) { this.containerPort = containerPort; } @Override public final Builder containerPort(Integer containerPort) { this.containerPort = containerPort; return this; } public final Integer getHostPort() { return hostPort; } public final void setHostPort(Integer hostPort) { this.hostPort = hostPort; } @Override public final Builder hostPort(Integer hostPort) { this.hostPort = hostPort; return this; } public final String getProtocol() { return protocol; } public final void setProtocol(String protocol) { this.protocol = protocol; } @Override public final Builder protocol(String protocol) { this.protocol = protocol; return this; } @Override public final Builder protocol(TransportProtocol protocol) { this.protocol(protocol == null ? null : protocol.toString()); return this; } @Override public PortMapping build() { return new PortMapping(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy