/** * 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 #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace ElastiCache { namespace Model { /** *

Represents a copy of an entire Redis cluster as of the time when the snapshot * was taken.

See Also:

AWS * API Reference

*/ class Snapshot { public: AWS_ELASTICACHE_API Snapshot(); AWS_ELASTICACHE_API Snapshot(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_ELASTICACHE_API Snapshot& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_ELASTICACHE_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_ELASTICACHE_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline const Aws::String& GetSnapshotName() const{ return m_snapshotName; } /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline bool SnapshotNameHasBeenSet() const { return m_snapshotNameHasBeenSet; } /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline void SetSnapshotName(const Aws::String& value) { m_snapshotNameHasBeenSet = true; m_snapshotName = value; } /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline void SetSnapshotName(Aws::String&& value) { m_snapshotNameHasBeenSet = true; m_snapshotName = std::move(value); } /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline void SetSnapshotName(const char* value) { m_snapshotNameHasBeenSet = true; m_snapshotName.assign(value); } /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline Snapshot& WithSnapshotName(const Aws::String& value) { SetSnapshotName(value); return *this;} /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline Snapshot& WithSnapshotName(Aws::String&& value) { SetSnapshotName(std::move(value)); return *this;} /** *

The name of a snapshot. For an automatic snapshot, the name is * system-generated. For a manual snapshot, this is the user-provided name.

*/ inline Snapshot& WithSnapshotName(const char* value) { SetSnapshotName(value); return *this;} /** *

The unique identifier of the source replication group.

*/ inline const Aws::String& GetReplicationGroupId() const{ return m_replicationGroupId; } /** *

The unique identifier of the source replication group.

*/ inline bool ReplicationGroupIdHasBeenSet() const { return m_replicationGroupIdHasBeenSet; } /** *

The unique identifier of the source replication group.

*/ inline void SetReplicationGroupId(const Aws::String& value) { m_replicationGroupIdHasBeenSet = true; m_replicationGroupId = value; } /** *

The unique identifier of the source replication group.

*/ inline void SetReplicationGroupId(Aws::String&& value) { m_replicationGroupIdHasBeenSet = true; m_replicationGroupId = std::move(value); } /** *

The unique identifier of the source replication group.

*/ inline void SetReplicationGroupId(const char* value) { m_replicationGroupIdHasBeenSet = true; m_replicationGroupId.assign(value); } /** *

The unique identifier of the source replication group.

*/ inline Snapshot& WithReplicationGroupId(const Aws::String& value) { SetReplicationGroupId(value); return *this;} /** *

The unique identifier of the source replication group.

*/ inline Snapshot& WithReplicationGroupId(Aws::String&& value) { SetReplicationGroupId(std::move(value)); return *this;} /** *

The unique identifier of the source replication group.

*/ inline Snapshot& WithReplicationGroupId(const char* value) { SetReplicationGroupId(value); return *this;} /** *

A description of the source replication group.

*/ inline const Aws::String& GetReplicationGroupDescription() const{ return m_replicationGroupDescription; } /** *

A description of the source replication group.

*/ inline bool ReplicationGroupDescriptionHasBeenSet() const { return m_replicationGroupDescriptionHasBeenSet; } /** *

A description of the source replication group.

*/ inline void SetReplicationGroupDescription(const Aws::String& value) { m_replicationGroupDescriptionHasBeenSet = true; m_replicationGroupDescription = value; } /** *

A description of the source replication group.

*/ inline void SetReplicationGroupDescription(Aws::String&& value) { m_replicationGroupDescriptionHasBeenSet = true; m_replicationGroupDescription = std::move(value); } /** *

A description of the source replication group.

*/ inline void SetReplicationGroupDescription(const char* value) { m_replicationGroupDescriptionHasBeenSet = true; m_replicationGroupDescription.assign(value); } /** *

A description of the source replication group.

*/ inline Snapshot& WithReplicationGroupDescription(const Aws::String& value) { SetReplicationGroupDescription(value); return *this;} /** *

A description of the source replication group.

*/ inline Snapshot& WithReplicationGroupDescription(Aws::String&& value) { SetReplicationGroupDescription(std::move(value)); return *this;} /** *

A description of the source replication group.

*/ inline Snapshot& WithReplicationGroupDescription(const char* value) { SetReplicationGroupDescription(value); return *this;} /** *

The user-supplied identifier of the source cluster.

*/ inline const Aws::String& GetCacheClusterId() const{ return m_cacheClusterId; } /** *

The user-supplied identifier of the source cluster.

*/ inline bool CacheClusterIdHasBeenSet() const { return m_cacheClusterIdHasBeenSet; } /** *

The user-supplied identifier of the source cluster.

*/ inline void SetCacheClusterId(const Aws::String& value) { m_cacheClusterIdHasBeenSet = true; m_cacheClusterId = value; } /** *

The user-supplied identifier of the source cluster.

*/ inline void SetCacheClusterId(Aws::String&& value) { m_cacheClusterIdHasBeenSet = true; m_cacheClusterId = std::move(value); } /** *

The user-supplied identifier of the source cluster.

*/ inline void SetCacheClusterId(const char* value) { m_cacheClusterIdHasBeenSet = true; m_cacheClusterId.assign(value); } /** *

The user-supplied identifier of the source cluster.

*/ inline Snapshot& WithCacheClusterId(const Aws::String& value) { SetCacheClusterId(value); return *this;} /** *

The user-supplied identifier of the source cluster.

*/ inline Snapshot& WithCacheClusterId(Aws::String&& value) { SetCacheClusterId(std::move(value)); return *this;} /** *

The user-supplied identifier of the source cluster.

*/ inline Snapshot& WithCacheClusterId(const char* value) { SetCacheClusterId(value); return *this;} /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline const Aws::String& GetSnapshotStatus() const{ return m_snapshotStatus; } /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline bool SnapshotStatusHasBeenSet() const { return m_snapshotStatusHasBeenSet; } /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline void SetSnapshotStatus(const Aws::String& value) { m_snapshotStatusHasBeenSet = true; m_snapshotStatus = value; } /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline void SetSnapshotStatus(Aws::String&& value) { m_snapshotStatusHasBeenSet = true; m_snapshotStatus = std::move(value); } /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline void SetSnapshotStatus(const char* value) { m_snapshotStatusHasBeenSet = true; m_snapshotStatus.assign(value); } /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline Snapshot& WithSnapshotStatus(const Aws::String& value) { SetSnapshotStatus(value); return *this;} /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline Snapshot& WithSnapshotStatus(Aws::String&& value) { SetSnapshotStatus(std::move(value)); return *this;} /** *

The status of the snapshot. Valid values: creating | * available | restoring | copying | * deleting.

*/ inline Snapshot& WithSnapshotStatus(const char* value) { SetSnapshotStatus(value); return *this;} /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline const Aws::String& GetSnapshotSource() const{ return m_snapshotSource; } /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline bool SnapshotSourceHasBeenSet() const { return m_snapshotSourceHasBeenSet; } /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline void SetSnapshotSource(const Aws::String& value) { m_snapshotSourceHasBeenSet = true; m_snapshotSource = value; } /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline void SetSnapshotSource(Aws::String&& value) { m_snapshotSourceHasBeenSet = true; m_snapshotSource = std::move(value); } /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline void SetSnapshotSource(const char* value) { m_snapshotSourceHasBeenSet = true; m_snapshotSource.assign(value); } /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline Snapshot& WithSnapshotSource(const Aws::String& value) { SetSnapshotSource(value); return *this;} /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline Snapshot& WithSnapshotSource(Aws::String&& value) { SetSnapshotSource(std::move(value)); return *this;} /** *

Indicates whether the snapshot is from an automatic backup * (automated) or was created manually (manual).

*/ inline Snapshot& WithSnapshotSource(const char* value) { SetSnapshotSource(value); return *this;} /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline const Aws::String& GetCacheNodeType() const{ return m_cacheNodeType; } /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline bool CacheNodeTypeHasBeenSet() const { return m_cacheNodeTypeHasBeenSet; } /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline void SetCacheNodeType(const Aws::String& value) { m_cacheNodeTypeHasBeenSet = true; m_cacheNodeType = value; } /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline void SetCacheNodeType(Aws::String&& value) { m_cacheNodeTypeHasBeenSet = true; m_cacheNodeType = std::move(value); } /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline void SetCacheNodeType(const char* value) { m_cacheNodeTypeHasBeenSet = true; m_cacheNodeType.assign(value); } /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline Snapshot& WithCacheNodeType(const Aws::String& value) { SetCacheNodeType(value); return *this;} /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline Snapshot& WithCacheNodeType(Aws::String&& value) { SetCacheNodeType(std::move(value)); return *this;} /** *

The name of the compute and memory capacity node type for the source * cluster.

The following node types are supported by ElastiCache. Generally * speaking, the current generation types provide more memory and computational * power at lower cost when compared to their equivalent previous generation * counterparts.

  • General purpose:

    • Current * generation:

      M6g node types (available only for Redis engine * version 5.0.6 onward and for Memcached engine version 1.5.16 onward): * cache.m6g.large, cache.m6g.xlarge, * cache.m6g.2xlarge, cache.m6g.4xlarge, * cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge

      For region availability, see Supported * Node Types

      M5 node types: * cache.m5.large, cache.m5.xlarge, * cache.m5.2xlarge, cache.m5.4xlarge, * cache.m5.12xlarge, cache.m5.24xlarge

      M4 * node types: cache.m4.large, cache.m4.xlarge, * cache.m4.2xlarge, cache.m4.4xlarge, * cache.m4.10xlarge

      T4g node types (available only * for Redis engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, * cache.t4g.medium

      T3 node types: * cache.t3.micro, cache.t3.small, * cache.t3.medium

      T2 node types: * cache.t2.micro, cache.t2.small, * cache.t2.medium

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      T1 node types: * cache.t1.micro

      M1 node types: * cache.m1.small, cache.m1.medium, * cache.m1.large, cache.m1.xlarge

      M3 node * types: cache.m3.medium, cache.m3.large, * cache.m3.xlarge, cache.m3.2xlarge

    *
  • Compute optimized:

    • Previous generation: (not * recommended. Existing clusters are still supported but creation of new clusters * is not supported for these types.)

      C1 node types: * cache.c1.xlarge

  • Memory * optimized:

    • Current generation:

      R6g node types * (available only for Redis engine version 5.0.6 onward and for Memcached engine * version 1.5.16 onward).

      cache.r6g.large, * cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, * cache.r6g.12xlarge, cache.r6g.16xlarge

      *

      For region availability, see Supported * Node Types

      R5 node types: * cache.r5.large, cache.r5.xlarge, * cache.r5.2xlarge, cache.r5.4xlarge, * cache.r5.12xlarge, cache.r5.24xlarge

      R4 * node types: cache.r4.large, cache.r4.xlarge, * cache.r4.2xlarge, cache.r4.4xlarge, * cache.r4.8xlarge, cache.r4.16xlarge

    • *

      Previous generation: (not recommended. Existing clusters are still supported * but creation of new clusters is not supported for these types.)

      M2 * node types: cache.m2.xlarge, cache.m2.2xlarge, * cache.m2.4xlarge

      R3 node types: * cache.r3.large, cache.r3.xlarge, * cache.r3.2xlarge, cache.r3.4xlarge, * cache.r3.8xlarge

Additional * node type info

  • All current generation instance types are * created in Amazon VPC by default.

  • Redis append-only files * (AOF) are not supported for T1 or T2 instances.

  • Redis Multi-AZ * with automatic failover is not supported on T1 instances.

  • *

    Redis configuration variables appendonly and * appendfsync are not supported on Redis version 2.8.22 and * later.

*/ inline Snapshot& WithCacheNodeType(const char* value) { SetCacheNodeType(value); return *this;} /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline const Aws::String& GetEngine() const{ return m_engine; } /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline bool EngineHasBeenSet() const { return m_engineHasBeenSet; } /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline void SetEngine(const Aws::String& value) { m_engineHasBeenSet = true; m_engine = value; } /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline void SetEngine(Aws::String&& value) { m_engineHasBeenSet = true; m_engine = std::move(value); } /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline void SetEngine(const char* value) { m_engineHasBeenSet = true; m_engine.assign(value); } /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline Snapshot& WithEngine(const Aws::String& value) { SetEngine(value); return *this;} /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline Snapshot& WithEngine(Aws::String&& value) { SetEngine(std::move(value)); return *this;} /** *

The name of the cache engine (memcached or redis) * used by the source cluster.

*/ inline Snapshot& WithEngine(const char* value) { SetEngine(value); return *this;} /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline const Aws::String& GetEngineVersion() const{ return m_engineVersion; } /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline bool EngineVersionHasBeenSet() const { return m_engineVersionHasBeenSet; } /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline void SetEngineVersion(const Aws::String& value) { m_engineVersionHasBeenSet = true; m_engineVersion = value; } /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline void SetEngineVersion(Aws::String&& value) { m_engineVersionHasBeenSet = true; m_engineVersion = std::move(value); } /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline void SetEngineVersion(const char* value) { m_engineVersionHasBeenSet = true; m_engineVersion.assign(value); } /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline Snapshot& WithEngineVersion(const Aws::String& value) { SetEngineVersion(value); return *this;} /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline Snapshot& WithEngineVersion(Aws::String&& value) { SetEngineVersion(std::move(value)); return *this;} /** *

The version of the cache engine version that is used by the source * cluster.

*/ inline Snapshot& WithEngineVersion(const char* value) { SetEngineVersion(value); return *this;} /** *

The number of cache nodes in the source cluster.

For clusters running * Redis, this value must be 1. For clusters running Memcached, this value must be * between 1 and 40.

*/ inline int GetNumCacheNodes() const{ return m_numCacheNodes; } /** *

The number of cache nodes in the source cluster.

For clusters running * Redis, this value must be 1. For clusters running Memcached, this value must be * between 1 and 40.

*/ inline bool NumCacheNodesHasBeenSet() const { return m_numCacheNodesHasBeenSet; } /** *

The number of cache nodes in the source cluster.

For clusters running * Redis, this value must be 1. For clusters running Memcached, this value must be * between 1 and 40.

*/ inline void SetNumCacheNodes(int value) { m_numCacheNodesHasBeenSet = true; m_numCacheNodes = value; } /** *

The number of cache nodes in the source cluster.

For clusters running * Redis, this value must be 1. For clusters running Memcached, this value must be * between 1 and 40.

*/ inline Snapshot& WithNumCacheNodes(int value) { SetNumCacheNodes(value); return *this;} /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline const Aws::String& GetPreferredAvailabilityZone() const{ return m_preferredAvailabilityZone; } /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline bool PreferredAvailabilityZoneHasBeenSet() const { return m_preferredAvailabilityZoneHasBeenSet; } /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline void SetPreferredAvailabilityZone(const Aws::String& value) { m_preferredAvailabilityZoneHasBeenSet = true; m_preferredAvailabilityZone = value; } /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline void SetPreferredAvailabilityZone(Aws::String&& value) { m_preferredAvailabilityZoneHasBeenSet = true; m_preferredAvailabilityZone = std::move(value); } /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline void SetPreferredAvailabilityZone(const char* value) { m_preferredAvailabilityZoneHasBeenSet = true; m_preferredAvailabilityZone.assign(value); } /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline Snapshot& WithPreferredAvailabilityZone(const Aws::String& value) { SetPreferredAvailabilityZone(value); return *this;} /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline Snapshot& WithPreferredAvailabilityZone(Aws::String&& value) { SetPreferredAvailabilityZone(std::move(value)); return *this;} /** *

The name of the Availability Zone in which the source cluster is located.

*/ inline Snapshot& WithPreferredAvailabilityZone(const char* value) { SetPreferredAvailabilityZone(value); return *this;} /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline const Aws::String& GetPreferredOutpostArn() const{ return m_preferredOutpostArn; } /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline bool PreferredOutpostArnHasBeenSet() const { return m_preferredOutpostArnHasBeenSet; } /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline void SetPreferredOutpostArn(const Aws::String& value) { m_preferredOutpostArnHasBeenSet = true; m_preferredOutpostArn = value; } /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline void SetPreferredOutpostArn(Aws::String&& value) { m_preferredOutpostArnHasBeenSet = true; m_preferredOutpostArn = std::move(value); } /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline void SetPreferredOutpostArn(const char* value) { m_preferredOutpostArnHasBeenSet = true; m_preferredOutpostArn.assign(value); } /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline Snapshot& WithPreferredOutpostArn(const Aws::String& value) { SetPreferredOutpostArn(value); return *this;} /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline Snapshot& WithPreferredOutpostArn(Aws::String&& value) { SetPreferredOutpostArn(std::move(value)); return *this;} /** *

The ARN (Amazon Resource Name) of the preferred outpost.

*/ inline Snapshot& WithPreferredOutpostArn(const char* value) { SetPreferredOutpostArn(value); return *this;} /** *

The date and time when the source cluster was created.

*/ inline const Aws::Utils::DateTime& GetCacheClusterCreateTime() const{ return m_cacheClusterCreateTime; } /** *

The date and time when the source cluster was created.

*/ inline bool CacheClusterCreateTimeHasBeenSet() const { return m_cacheClusterCreateTimeHasBeenSet; } /** *

The date and time when the source cluster was created.

*/ inline void SetCacheClusterCreateTime(const Aws::Utils::DateTime& value) { m_cacheClusterCreateTimeHasBeenSet = true; m_cacheClusterCreateTime = value; } /** *

The date and time when the source cluster was created.

*/ inline void SetCacheClusterCreateTime(Aws::Utils::DateTime&& value) { m_cacheClusterCreateTimeHasBeenSet = true; m_cacheClusterCreateTime = std::move(value); } /** *

The date and time when the source cluster was created.

*/ inline Snapshot& WithCacheClusterCreateTime(const Aws::Utils::DateTime& value) { SetCacheClusterCreateTime(value); return *this;} /** *

The date and time when the source cluster was created.

*/ inline Snapshot& WithCacheClusterCreateTime(Aws::Utils::DateTime&& value) { SetCacheClusterCreateTime(std::move(value)); return *this;} /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline const Aws::String& GetPreferredMaintenanceWindow() const{ return m_preferredMaintenanceWindow; } /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline bool PreferredMaintenanceWindowHasBeenSet() const { return m_preferredMaintenanceWindowHasBeenSet; } /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline void SetPreferredMaintenanceWindow(const Aws::String& value) { m_preferredMaintenanceWindowHasBeenSet = true; m_preferredMaintenanceWindow = value; } /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline void SetPreferredMaintenanceWindow(Aws::String&& value) { m_preferredMaintenanceWindowHasBeenSet = true; m_preferredMaintenanceWindow = std::move(value); } /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline void SetPreferredMaintenanceWindow(const char* value) { m_preferredMaintenanceWindowHasBeenSet = true; m_preferredMaintenanceWindow.assign(value); } /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline Snapshot& WithPreferredMaintenanceWindow(const Aws::String& value) { SetPreferredMaintenanceWindow(value); return *this;} /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline Snapshot& WithPreferredMaintenanceWindow(Aws::String&& value) { SetPreferredMaintenanceWindow(std::move(value)); return *this;} /** *

Specifies the weekly time range during which maintenance on the cluster is * performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H * Clock UTC). The minimum maintenance window is a 60 minute period.

Valid * values for ddd are:

  • sun

  • *
  • mon

  • tue

  • *

    wed

  • thu

  • * fri

  • sat

*

Example: sun:23:00-mon:01:30

*/ inline Snapshot& WithPreferredMaintenanceWindow(const char* value) { SetPreferredMaintenanceWindow(value); return *this;} /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline const Aws::String& GetTopicArn() const{ return m_topicArn; } /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline bool TopicArnHasBeenSet() const { return m_topicArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline void SetTopicArn(const Aws::String& value) { m_topicArnHasBeenSet = true; m_topicArn = value; } /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline void SetTopicArn(Aws::String&& value) { m_topicArnHasBeenSet = true; m_topicArn = std::move(value); } /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline void SetTopicArn(const char* value) { m_topicArnHasBeenSet = true; m_topicArn.assign(value); } /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline Snapshot& WithTopicArn(const Aws::String& value) { SetTopicArn(value); return *this;} /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline Snapshot& WithTopicArn(Aws::String&& value) { SetTopicArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) for the topic used by the source cluster for * publishing notifications.

*/ inline Snapshot& WithTopicArn(const char* value) { SetTopicArn(value); return *this;} /** *

The port number used by each cache nodes in the source cluster.

*/ inline int GetPort() const{ return m_port; } /** *

The port number used by each cache nodes in the source cluster.

*/ inline bool PortHasBeenSet() const { return m_portHasBeenSet; } /** *

The port number used by each cache nodes in the source cluster.

*/ inline void SetPort(int value) { m_portHasBeenSet = true; m_port = value; } /** *

The port number used by each cache nodes in the source cluster.

*/ inline Snapshot& WithPort(int value) { SetPort(value); return *this;} /** *

The cache parameter group that is associated with the source cluster.

*/ inline const Aws::String& GetCacheParameterGroupName() const{ return m_cacheParameterGroupName; } /** *

The cache parameter group that is associated with the source cluster.

*/ inline bool CacheParameterGroupNameHasBeenSet() const { return m_cacheParameterGroupNameHasBeenSet; } /** *

The cache parameter group that is associated with the source cluster.

*/ inline void SetCacheParameterGroupName(const Aws::String& value) { m_cacheParameterGroupNameHasBeenSet = true; m_cacheParameterGroupName = value; } /** *

The cache parameter group that is associated with the source cluster.

*/ inline void SetCacheParameterGroupName(Aws::String&& value) { m_cacheParameterGroupNameHasBeenSet = true; m_cacheParameterGroupName = std::move(value); } /** *

The cache parameter group that is associated with the source cluster.

*/ inline void SetCacheParameterGroupName(const char* value) { m_cacheParameterGroupNameHasBeenSet = true; m_cacheParameterGroupName.assign(value); } /** *

The cache parameter group that is associated with the source cluster.

*/ inline Snapshot& WithCacheParameterGroupName(const Aws::String& value) { SetCacheParameterGroupName(value); return *this;} /** *

The cache parameter group that is associated with the source cluster.

*/ inline Snapshot& WithCacheParameterGroupName(Aws::String&& value) { SetCacheParameterGroupName(std::move(value)); return *this;} /** *

The cache parameter group that is associated with the source cluster.

*/ inline Snapshot& WithCacheParameterGroupName(const char* value) { SetCacheParameterGroupName(value); return *this;} /** *

The name of the cache subnet group associated with the source cluster.

*/ inline const Aws::String& GetCacheSubnetGroupName() const{ return m_cacheSubnetGroupName; } /** *

The name of the cache subnet group associated with the source cluster.

*/ inline bool CacheSubnetGroupNameHasBeenSet() const { return m_cacheSubnetGroupNameHasBeenSet; } /** *

The name of the cache subnet group associated with the source cluster.

*/ inline void SetCacheSubnetGroupName(const Aws::String& value) { m_cacheSubnetGroupNameHasBeenSet = true; m_cacheSubnetGroupName = value; } /** *

The name of the cache subnet group associated with the source cluster.

*/ inline void SetCacheSubnetGroupName(Aws::String&& value) { m_cacheSubnetGroupNameHasBeenSet = true; m_cacheSubnetGroupName = std::move(value); } /** *

The name of the cache subnet group associated with the source cluster.

*/ inline void SetCacheSubnetGroupName(const char* value) { m_cacheSubnetGroupNameHasBeenSet = true; m_cacheSubnetGroupName.assign(value); } /** *

The name of the cache subnet group associated with the source cluster.

*/ inline Snapshot& WithCacheSubnetGroupName(const Aws::String& value) { SetCacheSubnetGroupName(value); return *this;} /** *

The name of the cache subnet group associated with the source cluster.

*/ inline Snapshot& WithCacheSubnetGroupName(Aws::String&& value) { SetCacheSubnetGroupName(std::move(value)); return *this;} /** *

The name of the cache subnet group associated with the source cluster.

*/ inline Snapshot& WithCacheSubnetGroupName(const char* value) { SetCacheSubnetGroupName(value); return *this;} /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline const Aws::String& GetVpcId() const{ return m_vpcId; } /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline bool VpcIdHasBeenSet() const { return m_vpcIdHasBeenSet; } /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline void SetVpcId(const Aws::String& value) { m_vpcIdHasBeenSet = true; m_vpcId = value; } /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline void SetVpcId(Aws::String&& value) { m_vpcIdHasBeenSet = true; m_vpcId = std::move(value); } /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline void SetVpcId(const char* value) { m_vpcIdHasBeenSet = true; m_vpcId.assign(value); } /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline Snapshot& WithVpcId(const Aws::String& value) { SetVpcId(value); return *this;} /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline Snapshot& WithVpcId(Aws::String&& value) { SetVpcId(std::move(value)); return *this;} /** *

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet * group for the source cluster.

*/ inline Snapshot& WithVpcId(const char* value) { SetVpcId(value); return *this;} /** *

 If you are running Redis engine version 6.0 or later, set this parameter to * yes if you want to opt-in to the next auto minor version upgrade campaign. This * parameter is disabled for previous versions. 

*/ inline bool GetAutoMinorVersionUpgrade() const{ return m_autoMinorVersionUpgrade; } /** *

 If you are running Redis engine version 6.0 or later, set this parameter to * yes if you want to opt-in to the next auto minor version upgrade campaign. This * parameter is disabled for previous versions. 

*/ inline bool AutoMinorVersionUpgradeHasBeenSet() const { return m_autoMinorVersionUpgradeHasBeenSet; } /** *

 If you are running Redis engine version 6.0 or later, set this parameter to * yes if you want to opt-in to the next auto minor version upgrade campaign. This * parameter is disabled for previous versions. 

*/ inline void SetAutoMinorVersionUpgrade(bool value) { m_autoMinorVersionUpgradeHasBeenSet = true; m_autoMinorVersionUpgrade = value; } /** *

 If you are running Redis engine version 6.0 or later, set this parameter to * yes if you want to opt-in to the next auto minor version upgrade campaign. This * parameter is disabled for previous versions. 

*/ inline Snapshot& WithAutoMinorVersionUpgrade(bool value) { SetAutoMinorVersionUpgrade(value); return *this;} /** *

For an automatic snapshot, the number of days for which ElastiCache retains * the snapshot before deleting it.

For manual snapshots, this field * reflects the SnapshotRetentionLimit for the source cluster when the * snapshot was created. This field is otherwise ignored: Manual snapshots do not * expire, and can only be deleted using the DeleteSnapshot operation. *

Important If the value of SnapshotRetentionLimit is set to zero * (0), backups are turned off.

*/ inline int GetSnapshotRetentionLimit() const{ return m_snapshotRetentionLimit; } /** *

For an automatic snapshot, the number of days for which ElastiCache retains * the snapshot before deleting it.

For manual snapshots, this field * reflects the SnapshotRetentionLimit for the source cluster when the * snapshot was created. This field is otherwise ignored: Manual snapshots do not * expire, and can only be deleted using the DeleteSnapshot operation. *

Important If the value of SnapshotRetentionLimit is set to zero * (0), backups are turned off.

*/ inline bool SnapshotRetentionLimitHasBeenSet() const { return m_snapshotRetentionLimitHasBeenSet; } /** *

For an automatic snapshot, the number of days for which ElastiCache retains * the snapshot before deleting it.

For manual snapshots, this field * reflects the SnapshotRetentionLimit for the source cluster when the * snapshot was created. This field is otherwise ignored: Manual snapshots do not * expire, and can only be deleted using the DeleteSnapshot operation. *

Important If the value of SnapshotRetentionLimit is set to zero * (0), backups are turned off.

*/ inline void SetSnapshotRetentionLimit(int value) { m_snapshotRetentionLimitHasBeenSet = true; m_snapshotRetentionLimit = value; } /** *

For an automatic snapshot, the number of days for which ElastiCache retains * the snapshot before deleting it.

For manual snapshots, this field * reflects the SnapshotRetentionLimit for the source cluster when the * snapshot was created. This field is otherwise ignored: Manual snapshots do not * expire, and can only be deleted using the DeleteSnapshot operation. *

Important If the value of SnapshotRetentionLimit is set to zero * (0), backups are turned off.

*/ inline Snapshot& WithSnapshotRetentionLimit(int value) { SetSnapshotRetentionLimit(value); return *this;} /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline const Aws::String& GetSnapshotWindow() const{ return m_snapshotWindow; } /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline bool SnapshotWindowHasBeenSet() const { return m_snapshotWindowHasBeenSet; } /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline void SetSnapshotWindow(const Aws::String& value) { m_snapshotWindowHasBeenSet = true; m_snapshotWindow = value; } /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline void SetSnapshotWindow(Aws::String&& value) { m_snapshotWindowHasBeenSet = true; m_snapshotWindow = std::move(value); } /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline void SetSnapshotWindow(const char* value) { m_snapshotWindowHasBeenSet = true; m_snapshotWindow.assign(value); } /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline Snapshot& WithSnapshotWindow(const Aws::String& value) { SetSnapshotWindow(value); return *this;} /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline Snapshot& WithSnapshotWindow(Aws::String&& value) { SetSnapshotWindow(std::move(value)); return *this;} /** *

The daily time range during which ElastiCache takes daily snapshots of the * source cluster.

*/ inline Snapshot& WithSnapshotWindow(const char* value) { SetSnapshotWindow(value); return *this;} /** *

The number of node groups (shards) in this snapshot. When restoring from a * snapshot, the number of node groups (shards) in the snapshot and in the restored * replication group must be the same.

*/ inline int GetNumNodeGroups() const{ return m_numNodeGroups; } /** *

The number of node groups (shards) in this snapshot. When restoring from a * snapshot, the number of node groups (shards) in the snapshot and in the restored * replication group must be the same.

*/ inline bool NumNodeGroupsHasBeenSet() const { return m_numNodeGroupsHasBeenSet; } /** *

The number of node groups (shards) in this snapshot. When restoring from a * snapshot, the number of node groups (shards) in the snapshot and in the restored * replication group must be the same.

*/ inline void SetNumNodeGroups(int value) { m_numNodeGroupsHasBeenSet = true; m_numNodeGroups = value; } /** *

The number of node groups (shards) in this snapshot. When restoring from a * snapshot, the number of node groups (shards) in the snapshot and in the restored * replication group must be the same.

*/ inline Snapshot& WithNumNodeGroups(int value) { SetNumNodeGroups(value); return *this;} /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline const AutomaticFailoverStatus& GetAutomaticFailover() const{ return m_automaticFailover; } /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline bool AutomaticFailoverHasBeenSet() const { return m_automaticFailoverHasBeenSet; } /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline void SetAutomaticFailover(const AutomaticFailoverStatus& value) { m_automaticFailoverHasBeenSet = true; m_automaticFailover = value; } /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline void SetAutomaticFailover(AutomaticFailoverStatus&& value) { m_automaticFailoverHasBeenSet = true; m_automaticFailover = std::move(value); } /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline Snapshot& WithAutomaticFailover(const AutomaticFailoverStatus& value) { SetAutomaticFailover(value); return *this;} /** *

Indicates the status of automatic failover for the source Redis replication * group.

*/ inline Snapshot& WithAutomaticFailover(AutomaticFailoverStatus&& value) { SetAutomaticFailover(std::move(value)); return *this;} /** *

A list of the cache nodes in the source cluster.

*/ inline const Aws::Vector& GetNodeSnapshots() const{ return m_nodeSnapshots; } /** *

A list of the cache nodes in the source cluster.

*/ inline bool NodeSnapshotsHasBeenSet() const { return m_nodeSnapshotsHasBeenSet; } /** *

A list of the cache nodes in the source cluster.

*/ inline void SetNodeSnapshots(const Aws::Vector& value) { m_nodeSnapshotsHasBeenSet = true; m_nodeSnapshots = value; } /** *

A list of the cache nodes in the source cluster.

*/ inline void SetNodeSnapshots(Aws::Vector&& value) { m_nodeSnapshotsHasBeenSet = true; m_nodeSnapshots = std::move(value); } /** *

A list of the cache nodes in the source cluster.

*/ inline Snapshot& WithNodeSnapshots(const Aws::Vector& value) { SetNodeSnapshots(value); return *this;} /** *

A list of the cache nodes in the source cluster.

*/ inline Snapshot& WithNodeSnapshots(Aws::Vector&& value) { SetNodeSnapshots(std::move(value)); return *this;} /** *

A list of the cache nodes in the source cluster.

*/ inline Snapshot& AddNodeSnapshots(const NodeSnapshot& value) { m_nodeSnapshotsHasBeenSet = true; m_nodeSnapshots.push_back(value); return *this; } /** *

A list of the cache nodes in the source cluster.

*/ inline Snapshot& AddNodeSnapshots(NodeSnapshot&& value) { m_nodeSnapshotsHasBeenSet = true; m_nodeSnapshots.push_back(std::move(value)); return *this; } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline const Aws::String& GetKmsKeyId() const{ return m_kmsKeyId; } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline bool KmsKeyIdHasBeenSet() const { return m_kmsKeyIdHasBeenSet; } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline void SetKmsKeyId(const Aws::String& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = value; } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline void SetKmsKeyId(Aws::String&& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = std::move(value); } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline void SetKmsKeyId(const char* value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId.assign(value); } /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline Snapshot& WithKmsKeyId(const Aws::String& value) { SetKmsKeyId(value); return *this;} /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline Snapshot& WithKmsKeyId(Aws::String&& value) { SetKmsKeyId(std::move(value)); return *this;} /** *

The ID of the KMS key used to encrypt the snapshot.

*/ inline Snapshot& WithKmsKeyId(const char* value) { SetKmsKeyId(value); return *this;} /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline const Aws::String& GetARN() const{ return m_aRN; } /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline bool ARNHasBeenSet() const { return m_aRNHasBeenSet; } /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline void SetARN(const Aws::String& value) { m_aRNHasBeenSet = true; m_aRN = value; } /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline void SetARN(Aws::String&& value) { m_aRNHasBeenSet = true; m_aRN = std::move(value); } /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline void SetARN(const char* value) { m_aRNHasBeenSet = true; m_aRN.assign(value); } /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline Snapshot& WithARN(const Aws::String& value) { SetARN(value); return *this;} /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline Snapshot& WithARN(Aws::String&& value) { SetARN(std::move(value)); return *this;} /** *

The ARN (Amazon Resource Name) of the snapshot.

*/ inline Snapshot& WithARN(const char* value) { SetARN(value); return *this;} /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline const DataTieringStatus& GetDataTiering() const{ return m_dataTiering; } /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline bool DataTieringHasBeenSet() const { return m_dataTieringHasBeenSet; } /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline void SetDataTiering(const DataTieringStatus& value) { m_dataTieringHasBeenSet = true; m_dataTiering = value; } /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline void SetDataTiering(DataTieringStatus&& value) { m_dataTieringHasBeenSet = true; m_dataTiering = std::move(value); } /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline Snapshot& WithDataTiering(const DataTieringStatus& value) { SetDataTiering(value); return *this;} /** *

Enables data tiering. Data tiering is only supported for replication groups * using the r6gd node type. This parameter must be set to true when using r6gd * nodes. For more information, see Data * tiering.

*/ inline Snapshot& WithDataTiering(DataTieringStatus&& value) { SetDataTiering(std::move(value)); return *this;} private: Aws::String m_snapshotName; bool m_snapshotNameHasBeenSet = false; Aws::String m_replicationGroupId; bool m_replicationGroupIdHasBeenSet = false; Aws::String m_replicationGroupDescription; bool m_replicationGroupDescriptionHasBeenSet = false; Aws::String m_cacheClusterId; bool m_cacheClusterIdHasBeenSet = false; Aws::String m_snapshotStatus; bool m_snapshotStatusHasBeenSet = false; Aws::String m_snapshotSource; bool m_snapshotSourceHasBeenSet = false; Aws::String m_cacheNodeType; bool m_cacheNodeTypeHasBeenSet = false; Aws::String m_engine; bool m_engineHasBeenSet = false; Aws::String m_engineVersion; bool m_engineVersionHasBeenSet = false; int m_numCacheNodes; bool m_numCacheNodesHasBeenSet = false; Aws::String m_preferredAvailabilityZone; bool m_preferredAvailabilityZoneHasBeenSet = false; Aws::String m_preferredOutpostArn; bool m_preferredOutpostArnHasBeenSet = false; Aws::Utils::DateTime m_cacheClusterCreateTime; bool m_cacheClusterCreateTimeHasBeenSet = false; Aws::String m_preferredMaintenanceWindow; bool m_preferredMaintenanceWindowHasBeenSet = false; Aws::String m_topicArn; bool m_topicArnHasBeenSet = false; int m_port; bool m_portHasBeenSet = false; Aws::String m_cacheParameterGroupName; bool m_cacheParameterGroupNameHasBeenSet = false; Aws::String m_cacheSubnetGroupName; bool m_cacheSubnetGroupNameHasBeenSet = false; Aws::String m_vpcId; bool m_vpcIdHasBeenSet = false; bool m_autoMinorVersionUpgrade; bool m_autoMinorVersionUpgradeHasBeenSet = false; int m_snapshotRetentionLimit; bool m_snapshotRetentionLimitHasBeenSet = false; Aws::String m_snapshotWindow; bool m_snapshotWindowHasBeenSet = false; int m_numNodeGroups; bool m_numNodeGroupsHasBeenSet = false; AutomaticFailoverStatus m_automaticFailover; bool m_automaticFailoverHasBeenSet = false; Aws::Vector m_nodeSnapshots; bool m_nodeSnapshotsHasBeenSet = false; Aws::String m_kmsKeyId; bool m_kmsKeyIdHasBeenSet = false; Aws::String m_aRN; bool m_aRNHasBeenSet = false; DataTieringStatus m_dataTiering; bool m_dataTieringHasBeenSet = false; }; } // namespace Model } // namespace ElastiCache } // namespace Aws