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

If query and calculation results are encrypted in Amazon S3, indicates the * encryption option used (for example, SSE_KMS or * CSE_KMS) and key information.

See Also:

AWS * API Reference

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

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline const EncryptionOption& GetEncryptionOption() const{ return m_encryptionOption; } /** *

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline bool EncryptionOptionHasBeenSet() const { return m_encryptionOptionHasBeenSet; } /** *

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline void SetEncryptionOption(const EncryptionOption& value) { m_encryptionOptionHasBeenSet = true; m_encryptionOption = value; } /** *

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline void SetEncryptionOption(EncryptionOption&& value) { m_encryptionOptionHasBeenSet = true; m_encryptionOption = std::move(value); } /** *

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline EncryptionConfiguration& WithEncryptionOption(const EncryptionOption& value) { SetEncryptionOption(value); return *this;} /** *

Indicates whether Amazon S3 server-side encryption with Amazon S3-managed * keys (SSE_S3), server-side encryption with KMS-managed keys * (SSE_KMS), or client-side encryption with KMS-managed keys * (CSE_KMS) is used.

If a query runs in a workgroup and the * workgroup overrides client-side settings, then the workgroup's setting for * encryption is used. It specifies whether query results must be encrypted, for * all queries that run in this workgroup.

*/ inline EncryptionConfiguration& WithEncryptionOption(EncryptionOption&& value) { SetEncryptionOption(std::move(value)); return *this;} /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline const Aws::String& GetKmsKey() const{ return m_kmsKey; } /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline bool KmsKeyHasBeenSet() const { return m_kmsKeyHasBeenSet; } /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline void SetKmsKey(const Aws::String& value) { m_kmsKeyHasBeenSet = true; m_kmsKey = value; } /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline void SetKmsKey(Aws::String&& value) { m_kmsKeyHasBeenSet = true; m_kmsKey = std::move(value); } /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline void SetKmsKey(const char* value) { m_kmsKeyHasBeenSet = true; m_kmsKey.assign(value); } /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline EncryptionConfiguration& WithKmsKey(const Aws::String& value) { SetKmsKey(value); return *this;} /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline EncryptionConfiguration& WithKmsKey(Aws::String&& value) { SetKmsKey(std::move(value)); return *this;} /** *

For SSE_KMS and CSE_KMS, this is the KMS key ARN or * ID.

*/ inline EncryptionConfiguration& WithKmsKey(const char* value) { SetKmsKey(value); return *this;} private: EncryptionOption m_encryptionOption; bool m_encryptionOptionHasBeenSet = false; Aws::String m_kmsKey; bool m_kmsKeyHasBeenSet = false; }; } // namespace Model } // namespace Athena } // namespace Aws