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

The log configuration for the container. This parameter maps to * LogConfig in the Create * a container section of the Docker Remote API and the * --log-driver option to docker * run .

By default, containers use the same logging driver that * the Docker daemon uses. However, the container might use a different logging * driver than the Docker daemon by specifying a log driver configuration in the * container definition. For more information about the options for different * supported log drivers, see Configure logging * drivers in the Docker documentation.

Understand the following when * specifying a log configuration for your containers.

  • Amazon ECS * currently supports a subset of the logging drivers available to the Docker * daemon (shown in the valid values below). Additional log drivers may be * available in future releases of the Amazon ECS container agent.

  • *

    This parameter requires version 1.18 of the Docker Remote API or greater on * your container instance.

  • For tasks that are hosted on Amazon * EC2 instances, the Amazon ECS container agent must register the available * logging drivers with the ECS_AVAILABLE_LOGGING_DRIVERS environment * variable before containers placed on that instance can use these log * configuration options. For more information, see Amazon * ECS container agent configuration in the Amazon Elastic Container Service * Developer Guide.

  • For tasks that are on Fargate, because * you don't have access to the underlying infrastructure your tasks are hosted on, * any additional software needed must be installed outside of the task. For * example, the Fluentd output aggregators or a remote host running Logstash to * send Gelf logs to.

See Also:

AWS * API Reference

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

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline const LogDriver& GetLogDriver() const{ return m_logDriver; } /** *

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline bool LogDriverHasBeenSet() const { return m_logDriverHasBeenSet; } /** *

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline void SetLogDriver(const LogDriver& value) { m_logDriverHasBeenSet = true; m_logDriver = value; } /** *

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline void SetLogDriver(LogDriver&& value) { m_logDriverHasBeenSet = true; m_logDriver = std::move(value); } /** *

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline LogConfiguration& WithLogDriver(const LogDriver& value) { SetLogDriver(value); return *this;} /** *

The log driver to use for the container.

For tasks on Fargate, the * supported log drivers are awslogs, splunk, and * awsfirelens.

For tasks hosted on Amazon EC2 instances, the * supported log drivers are awslogs, fluentd, * gelf, json-file, journald, * logentries,syslog, splunk, and * awsfirelens.

For more information about using the * awslogs log driver, see Using * the awslogs log driver in the Amazon Elastic Container Service Developer * Guide.

For more information about using the awsfirelens * log driver, see Custom * log routing in the Amazon Elastic Container Service Developer * Guide.

If you have a custom driver that isn't listed, you can * fork the Amazon ECS container agent project that's available on GitHub and * customize it to work with that driver. We encourage you to submit pull requests * for changes that you would like to have included. However, we don't currently * provide support for running modified copies of this software.

*/ inline LogConfiguration& WithLogDriver(LogDriver&& value) { SetLogDriver(std::move(value)); return *this;} /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline const Aws::Map& GetOptions() const{ return m_options; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline bool OptionsHasBeenSet() const { return m_optionsHasBeenSet; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline void SetOptions(const Aws::Map& value) { m_optionsHasBeenSet = true; m_options = value; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline void SetOptions(Aws::Map&& value) { m_optionsHasBeenSet = true; m_options = std::move(value); } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& WithOptions(const Aws::Map& value) { SetOptions(value); return *this;} /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& WithOptions(Aws::Map&& value) { SetOptions(std::move(value)); return *this;} /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(const Aws::String& key, const Aws::String& value) { m_optionsHasBeenSet = true; m_options.emplace(key, value); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(Aws::String&& key, const Aws::String& value) { m_optionsHasBeenSet = true; m_options.emplace(std::move(key), value); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(const Aws::String& key, Aws::String&& value) { m_optionsHasBeenSet = true; m_options.emplace(key, std::move(value)); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(Aws::String&& key, Aws::String&& value) { m_optionsHasBeenSet = true; m_options.emplace(std::move(key), std::move(value)); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(const char* key, Aws::String&& value) { m_optionsHasBeenSet = true; m_options.emplace(key, std::move(value)); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(Aws::String&& key, const char* value) { m_optionsHasBeenSet = true; m_options.emplace(std::move(key), value); return *this; } /** *

The configuration options to send to the log driver. This parameter requires * version 1.19 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 * --format '{{.Server.APIVersion}}'

*/ inline LogConfiguration& AddOptions(const char* key, const char* value) { m_optionsHasBeenSet = true; m_options.emplace(key, value); return *this; } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline const Aws::Vector& GetSecretOptions() const{ return m_secretOptions; } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool SecretOptionsHasBeenSet() const { return m_secretOptionsHasBeenSet; } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetSecretOptions(const Aws::Vector& value) { m_secretOptionsHasBeenSet = true; m_secretOptions = value; } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetSecretOptions(Aws::Vector&& value) { m_secretOptionsHasBeenSet = true; m_secretOptions = std::move(value); } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline LogConfiguration& WithSecretOptions(const Aws::Vector& value) { SetSecretOptions(value); return *this;} /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline LogConfiguration& WithSecretOptions(Aws::Vector&& value) { SetSecretOptions(std::move(value)); return *this;} /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline LogConfiguration& AddSecretOptions(const Secret& value) { m_secretOptionsHasBeenSet = true; m_secretOptions.push_back(value); return *this; } /** *

The secrets to pass to the log configuration. For more information, see Specifying * sensitive data in the Amazon Elastic Container Service Developer * Guide.

*/ inline LogConfiguration& AddSecretOptions(Secret&& value) { m_secretOptionsHasBeenSet = true; m_secretOptions.push_back(std::move(value)); return *this; } private: LogDriver m_logDriver; bool m_logDriverHasBeenSet = false; Aws::Map m_options; bool m_optionsHasBeenSet = false; Aws::Vector m_secretOptions; bool m_secretOptionsHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws