/** * 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 Batch { namespace Model { /** *

Linux-specific modifications that are applied to the container, such as * details for device mappings.

See Also:

AWS * API Reference

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

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline const Aws::Vector& GetDevices() const{ return m_devices; } /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline bool DevicesHasBeenSet() const { return m_devicesHasBeenSet; } /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline void SetDevices(const Aws::Vector& value) { m_devicesHasBeenSet = true; m_devices = value; } /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline void SetDevices(Aws::Vector&& value) { m_devicesHasBeenSet = true; m_devices = std::move(value); } /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline LinuxParameters& WithDevices(const Aws::Vector& value) { SetDevices(value); return *this;} /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline LinuxParameters& WithDevices(Aws::Vector&& value) { SetDevices(std::move(value)); return *this;} /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline LinuxParameters& AddDevices(const Device& value) { m_devicesHasBeenSet = true; m_devices.push_back(value); return *this; } /** *

Any of the host devices to expose to the container. This parameter maps to * Devices in the Create a * container section of the Docker Remote API and the * --device option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline LinuxParameters& AddDevices(Device&& value) { m_devicesHasBeenSet = true; m_devices.push_back(std::move(value)); return *this; } /** *

If true, run an init process inside the container that forwards * signals and reaps processes. This parameter maps to the --init * option to docker * run. This parameter requires version 1.25 of the Docker Remote API or * greater on your container instance. To check the Docker Remote API version on * your container instance, log in to your container instance and run the following * command: sudo docker version | grep "Server API version"

*/ inline bool GetInitProcessEnabled() const{ return m_initProcessEnabled; } /** *

If true, run an init process inside the container that forwards * signals and reaps processes. This parameter maps to the --init * option to docker * run. This parameter requires version 1.25 of the Docker Remote API or * greater on your container instance. To check the Docker Remote API version on * your container instance, log in to your container instance and run the following * command: sudo docker version | grep "Server API version"

*/ inline bool InitProcessEnabledHasBeenSet() const { return m_initProcessEnabledHasBeenSet; } /** *

If true, run an init process inside the container that forwards * signals and reaps processes. This parameter maps to the --init * option to docker * run. This parameter requires version 1.25 of the Docker Remote API or * greater on your container instance. To check the Docker Remote API version on * your container instance, log in to your container instance and run the following * command: sudo docker version | grep "Server API version"

*/ inline void SetInitProcessEnabled(bool value) { m_initProcessEnabledHasBeenSet = true; m_initProcessEnabled = value; } /** *

If true, run an init process inside the container that forwards * signals and reaps processes. This parameter maps to the --init * option to docker * run. This parameter requires version 1.25 of the Docker Remote API or * greater on your container instance. To check the Docker Remote API version on * your container instance, log in to your container instance and run the following * command: sudo docker version | grep "Server API version"

*/ inline LinuxParameters& WithInitProcessEnabled(bool value) { SetInitProcessEnabled(value); return *this;} /** *

The value for the size (in MiB) of the /dev/shm volume. This * parameter maps to the --shm-size option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline int GetSharedMemorySize() const{ return m_sharedMemorySize; } /** *

The value for the size (in MiB) of the /dev/shm volume. This * parameter maps to the --shm-size option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline bool SharedMemorySizeHasBeenSet() const { return m_sharedMemorySizeHasBeenSet; } /** *

The value for the size (in MiB) of the /dev/shm volume. This * parameter maps to the --shm-size option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline void SetSharedMemorySize(int value) { m_sharedMemorySizeHasBeenSet = true; m_sharedMemorySize = value; } /** *

The value for the size (in MiB) of the /dev/shm volume. This * parameter maps to the --shm-size option to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide it for these jobs.

*/ inline LinuxParameters& WithSharedMemorySize(int value) { SetSharedMemorySize(value); return *this;} /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline const Aws::Vector& GetTmpfs() const{ return m_tmpfs; } /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline bool TmpfsHasBeenSet() const { return m_tmpfsHasBeenSet; } /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline void SetTmpfs(const Aws::Vector& value) { m_tmpfsHasBeenSet = true; m_tmpfs = value; } /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline void SetTmpfs(Aws::Vector&& value) { m_tmpfsHasBeenSet = true; m_tmpfs = std::move(value); } /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline LinuxParameters& WithTmpfs(const Aws::Vector& value) { SetTmpfs(value); return *this;} /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline LinuxParameters& WithTmpfs(Aws::Vector&& value) { SetTmpfs(std::move(value)); return *this;} /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline LinuxParameters& AddTmpfs(const Tmpfs& value) { m_tmpfsHasBeenSet = true; m_tmpfs.push_back(value); return *this; } /** *

The container path, mount options, and size (in MiB) of the * tmpfs mount. This parameter maps to the --tmpfs option * to docker run.

*

This parameter isn't applicable to jobs that are running on Fargate * resources. Don't provide this parameter for this resource type.

*/ inline LinuxParameters& AddTmpfs(Tmpfs&& value) { m_tmpfsHasBeenSet = true; m_tmpfs.push_back(std::move(value)); return *this; } /** *

The total amount of swap memory (in MiB) a container can use. This parameter * is translated to the --memory-swap option to docker run where the * value is the sum of the container memory plus the maxSwap value. * For more information, see * --memory-swap details in the Docker documentation.

If a * maxSwap value of 0 is specified, the container doesn't * use swap. Accepted values are 0 or any positive integer. If the * maxSwap parameter is omitted, the container doesn't use the swap * configuration for the container instance that it's running on. A * maxSwap value must be set for the swappiness parameter * to be used.

This parameter isn't applicable to jobs that are * running on Fargate resources. Don't provide it for these jobs.

*/ inline int GetMaxSwap() const{ return m_maxSwap; } /** *

The total amount of swap memory (in MiB) a container can use. This parameter * is translated to the --memory-swap option to docker run where the * value is the sum of the container memory plus the maxSwap value. * For more information, see * --memory-swap details in the Docker documentation.

If a * maxSwap value of 0 is specified, the container doesn't * use swap. Accepted values are 0 or any positive integer. If the * maxSwap parameter is omitted, the container doesn't use the swap * configuration for the container instance that it's running on. A * maxSwap value must be set for the swappiness parameter * to be used.

This parameter isn't applicable to jobs that are * running on Fargate resources. Don't provide it for these jobs.

*/ inline bool MaxSwapHasBeenSet() const { return m_maxSwapHasBeenSet; } /** *

The total amount of swap memory (in MiB) a container can use. This parameter * is translated to the --memory-swap option to docker run where the * value is the sum of the container memory plus the maxSwap value. * For more information, see * --memory-swap details in the Docker documentation.

If a * maxSwap value of 0 is specified, the container doesn't * use swap. Accepted values are 0 or any positive integer. If the * maxSwap parameter is omitted, the container doesn't use the swap * configuration for the container instance that it's running on. A * maxSwap value must be set for the swappiness parameter * to be used.

This parameter isn't applicable to jobs that are * running on Fargate resources. Don't provide it for these jobs.

*/ inline void SetMaxSwap(int value) { m_maxSwapHasBeenSet = true; m_maxSwap = value; } /** *

The total amount of swap memory (in MiB) a container can use. This parameter * is translated to the --memory-swap option to docker run where the * value is the sum of the container memory plus the maxSwap value. * For more information, see * --memory-swap details in the Docker documentation.

If a * maxSwap value of 0 is specified, the container doesn't * use swap. Accepted values are 0 or any positive integer. If the * maxSwap parameter is omitted, the container doesn't use the swap * configuration for the container instance that it's running on. A * maxSwap value must be set for the swappiness parameter * to be used.

This parameter isn't applicable to jobs that are * running on Fargate resources. Don't provide it for these jobs.

*/ inline LinuxParameters& WithMaxSwap(int value) { SetMaxSwap(value); return *this;} /** *

You can use this parameter to tune a container's memory swappiness behavior. * A swappiness value of 0 causes swapping to not occur * unless absolutely necessary. A swappiness value of 100 * causes pages to be swapped aggressively. Valid values are whole numbers between * 0 and 100. If the swappiness parameter * isn't specified, a default value of 60 is used. If a value isn't * specified for maxSwap, then this parameter is ignored. If * maxSwap is set to 0, the container doesn't use swap. This parameter * maps to the --memory-swappiness option to docker run.

*

Consider the following when you use a per-container swap configuration.

*
  • Swap space must be enabled and allocated on the container instance * for the containers to use.

    By default, the Amazon ECS optimized * AMIs don't have swap enabled. You must enable swap on the instance to use this * feature. For more information, see Instance * store swap volumes in the Amazon EC2 User Guide for Linux Instances * or How * do I allocate memory to work as swap space in an Amazon EC2 instance by using a * swap file?

  • The swap space parameters are only * supported for job definitions using EC2 resources.

  • If the * maxSwap and swappiness parameters are omitted from a * job definition, each container has a default swappiness value of * 60. Moreover, the total swap usage is limited to two times the memory * reservation of the container.

This parameter isn't * applicable to jobs that are running on Fargate resources. Don't provide it for * these jobs.

*/ inline int GetSwappiness() const{ return m_swappiness; } /** *

You can use this parameter to tune a container's memory swappiness behavior. * A swappiness value of 0 causes swapping to not occur * unless absolutely necessary. A swappiness value of 100 * causes pages to be swapped aggressively. Valid values are whole numbers between * 0 and 100. If the swappiness parameter * isn't specified, a default value of 60 is used. If a value isn't * specified for maxSwap, then this parameter is ignored. If * maxSwap is set to 0, the container doesn't use swap. This parameter * maps to the --memory-swappiness option to docker run.

*

Consider the following when you use a per-container swap configuration.

*
  • Swap space must be enabled and allocated on the container instance * for the containers to use.

    By default, the Amazon ECS optimized * AMIs don't have swap enabled. You must enable swap on the instance to use this * feature. For more information, see Instance * store swap volumes in the Amazon EC2 User Guide for Linux Instances * or How * do I allocate memory to work as swap space in an Amazon EC2 instance by using a * swap file?

  • The swap space parameters are only * supported for job definitions using EC2 resources.

  • If the * maxSwap and swappiness parameters are omitted from a * job definition, each container has a default swappiness value of * 60. Moreover, the total swap usage is limited to two times the memory * reservation of the container.

This parameter isn't * applicable to jobs that are running on Fargate resources. Don't provide it for * these jobs.

*/ inline bool SwappinessHasBeenSet() const { return m_swappinessHasBeenSet; } /** *

You can use this parameter to tune a container's memory swappiness behavior. * A swappiness value of 0 causes swapping to not occur * unless absolutely necessary. A swappiness value of 100 * causes pages to be swapped aggressively. Valid values are whole numbers between * 0 and 100. If the swappiness parameter * isn't specified, a default value of 60 is used. If a value isn't * specified for maxSwap, then this parameter is ignored. If * maxSwap is set to 0, the container doesn't use swap. This parameter * maps to the --memory-swappiness option to docker run.

*

Consider the following when you use a per-container swap configuration.

*
  • Swap space must be enabled and allocated on the container instance * for the containers to use.

    By default, the Amazon ECS optimized * AMIs don't have swap enabled. You must enable swap on the instance to use this * feature. For more information, see Instance * store swap volumes in the Amazon EC2 User Guide for Linux Instances * or How * do I allocate memory to work as swap space in an Amazon EC2 instance by using a * swap file?

  • The swap space parameters are only * supported for job definitions using EC2 resources.

  • If the * maxSwap and swappiness parameters are omitted from a * job definition, each container has a default swappiness value of * 60. Moreover, the total swap usage is limited to two times the memory * reservation of the container.

This parameter isn't * applicable to jobs that are running on Fargate resources. Don't provide it for * these jobs.

*/ inline void SetSwappiness(int value) { m_swappinessHasBeenSet = true; m_swappiness = value; } /** *

You can use this parameter to tune a container's memory swappiness behavior. * A swappiness value of 0 causes swapping to not occur * unless absolutely necessary. A swappiness value of 100 * causes pages to be swapped aggressively. Valid values are whole numbers between * 0 and 100. If the swappiness parameter * isn't specified, a default value of 60 is used. If a value isn't * specified for maxSwap, then this parameter is ignored. If * maxSwap is set to 0, the container doesn't use swap. This parameter * maps to the --memory-swappiness option to docker run.

*

Consider the following when you use a per-container swap configuration.

*
  • Swap space must be enabled and allocated on the container instance * for the containers to use.

    By default, the Amazon ECS optimized * AMIs don't have swap enabled. You must enable swap on the instance to use this * feature. For more information, see Instance * store swap volumes in the Amazon EC2 User Guide for Linux Instances * or How * do I allocate memory to work as swap space in an Amazon EC2 instance by using a * swap file?

  • The swap space parameters are only * supported for job definitions using EC2 resources.

  • If the * maxSwap and swappiness parameters are omitted from a * job definition, each container has a default swappiness value of * 60. Moreover, the total swap usage is limited to two times the memory * reservation of the container.

This parameter isn't * applicable to jobs that are running on Fargate resources. Don't provide it for * these jobs.

*/ inline LinuxParameters& WithSwappiness(int value) { SetSwappiness(value); return *this;} private: Aws::Vector m_devices; bool m_devicesHasBeenSet = false; bool m_initProcessEnabled; bool m_initProcessEnabledHasBeenSet = false; int m_sharedMemorySize; bool m_sharedMemorySizeHasBeenSet = false; Aws::Vector m_tmpfs; bool m_tmpfsHasBeenSet = false; int m_maxSwap; bool m_maxSwapHasBeenSet = false; int m_swappiness; bool m_swappinessHasBeenSet = false; }; } // namespace Model } // namespace Batch } // namespace Aws