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

A data volume used in a task definition. For tasks that use Amazon Elastic * File System (Amazon EFS) file storage, specify an * efsVolumeConfiguration. For tasks that use a Docker volume, specify * a DockerVolumeConfiguration. For tasks that use a bind mount host * volume, specify a host and optional sourcePath. For * more information, see Using * Data Volumes in Tasks.

See Also:

AWS API * Reference

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

*/ inline const Aws::String& GetName() const{ return m_name; } /** *

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, * and hyphens are allowed. This name is referenced in the * sourceVolume parameter of container definition * mountPoints.

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

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline const HostVolumeProperties& GetHost() const{ return m_host; } /** *

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline bool HostHasBeenSet() const { return m_hostHasBeenSet; } /** *

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline void SetHost(const HostVolumeProperties& value) { m_hostHasBeenSet = true; m_host = value; } /** *

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline void SetHost(HostVolumeProperties&& value) { m_hostHasBeenSet = true; m_host = std::move(value); } /** *

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline Volume& WithHost(const HostVolumeProperties& value) { SetHost(value); return *this;} /** *

This parameter is specified when you are using bind mount host volumes. The * contents of the host parameter determine whether your bind mount * host volume persists on the host container instance and where it is stored. If * the host parameter is empty, then the Docker daemon assigns a host * path for your data volume. However, the data is not guaranteed to persist after * the containers associated with it stop running.

Windows containers can * mount whole directories on the same drive as $env:ProgramData. * Windows containers cannot mount directories on a different drive, and mount * point cannot be across drives. For example, you can mount * C:\my\path:C:\my\path and D:\:D:\, but not * D:\my\path:C:\my\path or D:\:C:\my\path.

*/ inline Volume& WithHost(HostVolumeProperties&& value) { SetHost(std::move(value)); return *this;} /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline const DockerVolumeConfiguration& GetDockerVolumeConfiguration() const{ return m_dockerVolumeConfiguration; } /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline bool DockerVolumeConfigurationHasBeenSet() const { return m_dockerVolumeConfigurationHasBeenSet; } /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline void SetDockerVolumeConfiguration(const DockerVolumeConfiguration& value) { m_dockerVolumeConfigurationHasBeenSet = true; m_dockerVolumeConfiguration = value; } /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline void SetDockerVolumeConfiguration(DockerVolumeConfiguration&& value) { m_dockerVolumeConfigurationHasBeenSet = true; m_dockerVolumeConfiguration = std::move(value); } /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline Volume& WithDockerVolumeConfiguration(const DockerVolumeConfiguration& value) { SetDockerVolumeConfiguration(value); return *this;} /** *

This parameter is specified when you are using Docker volumes. Docker volumes * are only supported when you are using the EC2 launch type. Windows containers * only support the use of the local driver. To use bind mounts, * specify the host parameter instead.

*/ inline Volume& WithDockerVolumeConfiguration(DockerVolumeConfiguration&& value) { SetDockerVolumeConfiguration(std::move(value)); return *this;} /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline const EFSVolumeConfiguration& GetEfsVolumeConfiguration() const{ return m_efsVolumeConfiguration; } /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline bool EfsVolumeConfigurationHasBeenSet() const { return m_efsVolumeConfigurationHasBeenSet; } /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline void SetEfsVolumeConfiguration(const EFSVolumeConfiguration& value) { m_efsVolumeConfigurationHasBeenSet = true; m_efsVolumeConfiguration = value; } /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline void SetEfsVolumeConfiguration(EFSVolumeConfiguration&& value) { m_efsVolumeConfigurationHasBeenSet = true; m_efsVolumeConfiguration = std::move(value); } /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline Volume& WithEfsVolumeConfiguration(const EFSVolumeConfiguration& value) { SetEfsVolumeConfiguration(value); return *this;} /** *

This parameter is specified when you are using an Amazon Elastic File System * file system for task storage.

*/ inline Volume& WithEfsVolumeConfiguration(EFSVolumeConfiguration&& value) { SetEfsVolumeConfiguration(std::move(value)); return *this;} private: Aws::String m_name; bool m_nameHasBeenSet; HostVolumeProperties m_host; bool m_hostHasBeenSet; DockerVolumeConfiguration m_dockerVolumeConfiguration; bool m_dockerVolumeConfigurationHasBeenSet; EFSVolumeConfiguration m_efsVolumeConfiguration; bool m_efsVolumeConfigurationHasBeenSet; }; } // namespace Model } // namespace ECS } // namespace Aws