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

Amazon Keyspaces encrypts and decrypts the table data at rest transparently * and integrates with Key Management Service for storing and managing the * encryption key. You can choose one of the following KMS keys (KMS keys):

*
  • Amazon Web Services owned key - This is the default encryption * type. The key is owned by Amazon Keyspaces (no additional charge).

  • *
  • Customer managed key - This key is stored in your account and is * created, owned, and managed by you. You have full control over the customer * managed key (KMS charges apply).

For more information about * encryption at rest in Amazon Keyspaces, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

For more * information about KMS, see KMS * management service concepts in the Key Management Service Developer * Guide.

See Also:

AWS * API Reference

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

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline const EncryptionType& GetType() const{ return m_type; } /** *

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } /** *

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline void SetType(const EncryptionType& value) { m_typeHasBeenSet = true; m_type = value; } /** *

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline void SetType(EncryptionType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } /** *

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline EncryptionSpecification& WithType(const EncryptionType& value) { SetType(value); return *this;} /** *

The encryption option specified for the table. You can choose one of the * following KMS keys (KMS keys):

  • * type:AWS_OWNED_KMS_KEY - This key is owned by Amazon Keyspaces. *

  • type:CUSTOMER_MANAGED_KMS_KEY - This key is * stored in your account and is created, owned, and managed by you. This option * requires the kms_key_identifier of the KMS key in Amazon Resource * Name (ARN) format as input.

The default is * type:AWS_OWNED_KMS_KEY.

For more information, see Encryption * at rest in the Amazon Keyspaces Developer Guide.

*/ inline EncryptionSpecification& WithType(EncryptionType&& value) { SetType(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline const Aws::String& GetKmsKeyIdentifier() const{ return m_kmsKeyIdentifier; } /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline bool KmsKeyIdentifierHasBeenSet() const { return m_kmsKeyIdentifierHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline void SetKmsKeyIdentifier(const Aws::String& value) { m_kmsKeyIdentifierHasBeenSet = true; m_kmsKeyIdentifier = value; } /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline void SetKmsKeyIdentifier(Aws::String&& value) { m_kmsKeyIdentifierHasBeenSet = true; m_kmsKeyIdentifier = std::move(value); } /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline void SetKmsKeyIdentifier(const char* value) { m_kmsKeyIdentifierHasBeenSet = true; m_kmsKeyIdentifier.assign(value); } /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline EncryptionSpecification& WithKmsKeyIdentifier(const Aws::String& value) { SetKmsKeyIdentifier(value); return *this;} /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline EncryptionSpecification& WithKmsKeyIdentifier(Aws::String&& value) { SetKmsKeyIdentifier(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the customer managed KMS key, for example * kms_key_identifier:ARN.

*/ inline EncryptionSpecification& WithKmsKeyIdentifier(const char* value) { SetKmsKeyIdentifier(value); return *this;} private: EncryptionType m_type; bool m_typeHasBeenSet = false; Aws::String m_kmsKeyIdentifier; bool m_kmsKeyIdentifierHasBeenSet = false; }; } // namespace Model } // namespace Keyspaces } // namespace Aws