%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc Amazon ElastiCache %% %% Amazon ElastiCache is a web service that makes it easier to set up, %% operate, and scale a distributed cache in the cloud. %% %% With ElastiCache, customers get all of the benefits of a high-performance, %% in-memory cache with less of the administrative burden involved in %% launching and managing a distributed cache. The service makes setup, %% scaling, and cluster failure handling much simpler than in a self-managed %% cache deployment. %% %% In addition, through integration with Amazon CloudWatch, customers get %% enhanced visibility into the key performance statistics associated with %% their cache and can receive alarms if a part of their cache runs hot. -module(aws_elasticache). -export([add_tags_to_resource/2, add_tags_to_resource/3, authorize_cache_security_group_ingress/2, authorize_cache_security_group_ingress/3, batch_apply_update_action/2, batch_apply_update_action/3, batch_stop_update_action/2, batch_stop_update_action/3, complete_migration/2, complete_migration/3, copy_snapshot/2, copy_snapshot/3, create_cache_cluster/2, create_cache_cluster/3, create_cache_parameter_group/2, create_cache_parameter_group/3, create_cache_security_group/2, create_cache_security_group/3, create_cache_subnet_group/2, create_cache_subnet_group/3, create_global_replication_group/2, create_global_replication_group/3, create_replication_group/2, create_replication_group/3, create_snapshot/2, create_snapshot/3, create_user/2, create_user/3, create_user_group/2, create_user_group/3, decrease_node_groups_in_global_replication_group/2, decrease_node_groups_in_global_replication_group/3, decrease_replica_count/2, decrease_replica_count/3, delete_cache_cluster/2, delete_cache_cluster/3, delete_cache_parameter_group/2, delete_cache_parameter_group/3, delete_cache_security_group/2, delete_cache_security_group/3, delete_cache_subnet_group/2, delete_cache_subnet_group/3, delete_global_replication_group/2, delete_global_replication_group/3, delete_replication_group/2, delete_replication_group/3, delete_snapshot/2, delete_snapshot/3, delete_user/2, delete_user/3, delete_user_group/2, delete_user_group/3, describe_cache_clusters/2, describe_cache_clusters/3, describe_cache_engine_versions/2, describe_cache_engine_versions/3, describe_cache_parameter_groups/2, describe_cache_parameter_groups/3, describe_cache_parameters/2, describe_cache_parameters/3, describe_cache_security_groups/2, describe_cache_security_groups/3, describe_cache_subnet_groups/2, describe_cache_subnet_groups/3, describe_engine_default_parameters/2, describe_engine_default_parameters/3, describe_events/2, describe_events/3, describe_global_replication_groups/2, describe_global_replication_groups/3, describe_replication_groups/2, describe_replication_groups/3, describe_reserved_cache_nodes/2, describe_reserved_cache_nodes/3, describe_reserved_cache_nodes_offerings/2, describe_reserved_cache_nodes_offerings/3, describe_service_updates/2, describe_service_updates/3, describe_snapshots/2, describe_snapshots/3, describe_update_actions/2, describe_update_actions/3, describe_user_groups/2, describe_user_groups/3, describe_users/2, describe_users/3, disassociate_global_replication_group/2, disassociate_global_replication_group/3, failover_global_replication_group/2, failover_global_replication_group/3, increase_node_groups_in_global_replication_group/2, increase_node_groups_in_global_replication_group/3, increase_replica_count/2, increase_replica_count/3, list_allowed_node_type_modifications/2, list_allowed_node_type_modifications/3, list_tags_for_resource/2, list_tags_for_resource/3, modify_cache_cluster/2, modify_cache_cluster/3, modify_cache_parameter_group/2, modify_cache_parameter_group/3, modify_cache_subnet_group/2, modify_cache_subnet_group/3, modify_global_replication_group/2, modify_global_replication_group/3, modify_replication_group/2, modify_replication_group/3, modify_replication_group_shard_configuration/2, modify_replication_group_shard_configuration/3, modify_user/2, modify_user/3, modify_user_group/2, modify_user_group/3, purchase_reserved_cache_nodes_offering/2, purchase_reserved_cache_nodes_offering/3, rebalance_slots_in_global_replication_group/2, rebalance_slots_in_global_replication_group/3, reboot_cache_cluster/2, reboot_cache_cluster/3, remove_tags_from_resource/2, remove_tags_from_resource/3, reset_cache_parameter_group/2, reset_cache_parameter_group/3, revoke_cache_security_group_ingress/2, revoke_cache_security_group_ingress/3, start_migration/2, start_migration/3, test_failover/2, test_failover/3, test_migration/2, test_migration/3]). -include_lib("hackney/include/hackney_lib.hrl"). %%==================================================================== %% API %%==================================================================== %% @doc A tag is a key-value pair where the key and value are case-sensitive. %% %% You can use tags to categorize and track all your ElastiCache resources, %% with the exception of global replication group. When you add or remove %% tags on replication groups, those actions will be replicated to all nodes %% in the replication group. For more information, see Resource-level %% permissions. %% %% For example, you can use cost-allocation tags to your ElastiCache %% resources, Amazon generates a cost allocation report as a comma-separated %% value (CSV) file with your usage and costs aggregated by your tags. You %% can apply tags that represent business categories (such as cost centers, %% application names, or owners) to organize your costs across multiple %% services. %% %% For more information, see Using Cost Allocation Tags in Amazon ElastiCache %% in the ElastiCache User Guide. add_tags_to_resource(Client, Input) when is_map(Client), is_map(Input) -> add_tags_to_resource(Client, Input, []). add_tags_to_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"AddTagsToResource">>, Input, Options). %% @doc Allows network ingress to a cache security group. %% %% Applications using ElastiCache must be running on Amazon EC2, and Amazon %% EC2 security groups are used as the authorization mechanism. %% %% You cannot authorize ingress from an Amazon EC2 security group in one %% region to an ElastiCache cluster in another region. authorize_cache_security_group_ingress(Client, Input) when is_map(Client), is_map(Input) -> authorize_cache_security_group_ingress(Client, Input, []). authorize_cache_security_group_ingress(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"AuthorizeCacheSecurityGroupIngress">>, Input, Options). %% @doc Apply the service update. %% %% For more information on service updates and applying them, see Applying %% Service Updates. batch_apply_update_action(Client, Input) when is_map(Client), is_map(Input) -> batch_apply_update_action(Client, Input, []). batch_apply_update_action(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"BatchApplyUpdateAction">>, Input, Options). %% @doc Stop the service update. %% %% For more information on service updates and stopping them, see Stopping %% Service Updates. batch_stop_update_action(Client, Input) when is_map(Client), is_map(Input) -> batch_stop_update_action(Client, Input, []). batch_stop_update_action(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"BatchStopUpdateAction">>, Input, Options). %% @doc Complete the migration of data. complete_migration(Client, Input) when is_map(Client), is_map(Input) -> complete_migration(Client, Input, []). complete_migration(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CompleteMigration">>, Input, Options). %% @doc Makes a copy of an existing snapshot. %% %% This operation is valid for Redis only. %% %% Users or groups that have permissions to use the `CopySnapshot' %% operation can create their own Amazon S3 buckets and copy snapshots to it. %% To control access to your snapshots, use an IAM policy to control who has %% the ability to use the `CopySnapshot' operation. For more information %% about using IAM to control the use of ElastiCache operations, see %% Exporting Snapshots and Authentication & Access Control. %% %% You could receive the following error messages. %% %% == Error Messages == %% %% copy_snapshot(Client, Input) when is_map(Client), is_map(Input) -> copy_snapshot(Client, Input, []). copy_snapshot(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CopySnapshot">>, Input, Options). %% @doc Creates a cluster. %% %% All nodes in the cluster run the same protocol-compliant cache engine %% software, either Memcached or Redis. %% %% This operation is not supported for Redis (cluster mode enabled) clusters. create_cache_cluster(Client, Input) when is_map(Client), is_map(Input) -> create_cache_cluster(Client, Input, []). create_cache_cluster(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateCacheCluster">>, Input, Options). %% @doc Creates a new Amazon ElastiCache cache parameter group. %% %% An ElastiCache cache parameter group is a collection of parameters and %% their values that are applied to all of the nodes in any cluster or %% replication group using the CacheParameterGroup. %% %% A newly created CacheParameterGroup is an exact duplicate of the default %% parameter group for the CacheParameterGroupFamily. To customize the newly %% created CacheParameterGroup you can change the values of specific %% parameters. For more information, see: %% %% create_cache_parameter_group(Client, Input) when is_map(Client), is_map(Input) -> create_cache_parameter_group(Client, Input, []). create_cache_parameter_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateCacheParameterGroup">>, Input, Options). %% @doc Creates a new cache security group. %% %% Use a cache security group to control access to one or more clusters. %% %% Cache security groups are only used when you are creating a cluster %% outside of an Amazon Virtual Private Cloud (Amazon VPC). If you are %% creating a cluster inside of a VPC, use a cache subnet group instead. For %% more information, see CreateCacheSubnetGroup. create_cache_security_group(Client, Input) when is_map(Client), is_map(Input) -> create_cache_security_group(Client, Input, []). create_cache_security_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateCacheSecurityGroup">>, Input, Options). %% @doc Creates a new cache subnet group. %% %% Use this parameter only when you are creating a cluster in an Amazon %% Virtual Private Cloud (Amazon VPC). create_cache_subnet_group(Client, Input) when is_map(Client), is_map(Input) -> create_cache_subnet_group(Client, Input, []). create_cache_subnet_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateCacheSubnetGroup">>, Input, Options). %% @doc Global Datastore for Redis offers fully managed, fast, reliable and %% secure cross-region replication. %% %% Using Global Datastore for Redis, you can create cross-region read replica %% clusters for ElastiCache for Redis to enable low-latency reads and %% disaster recovery across regions. For more information, see Replication %% Across Regions Using Global Datastore. %% %% create_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> create_global_replication_group(Client, Input, []). create_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateGlobalReplicationGroup">>, Input, Options). %% @doc Creates a Redis (cluster mode disabled) or a Redis (cluster mode %% enabled) replication group. %% %% This API can be used to create a standalone regional replication group or %% a secondary replication group associated with a Global datastore. %% %% A Redis (cluster mode disabled) replication group is a collection of %% clusters, where one of the clusters is a read/write primary and the others %% are read-only replicas. Writes to the primary are asynchronously %% propagated to the replicas. %% %% A Redis cluster-mode enabled cluster is comprised of from 1 to 90 shards %% (API/CLI: node groups). Each shard has a primary node and up to 5 %% read-only replica nodes. The configuration can range from 90 shards and 0 %% replicas to 15 shards and 5 replicas, which is the maximum number or %% replicas allowed. %% %% The node or shard limit can be increased to a maximum of 500 per cluster %% if the Redis engine version is 5.0.6 or higher. For example, you can %% choose to configure a 500 node cluster that ranges between 83 shards (one %% primary and 5 replicas per shard) and 500 shards (single primary and no %% replicas). Make sure there are enough available IP addresses to %% accommodate the increase. Common pitfalls include the subnets in the %% subnet group have too small a CIDR range or the subnets are shared and %% heavily used by other clusters. For more information, see Creating a %% Subnet Group. For versions below 5.0.6, the limit is 250 per cluster. %% %% To request a limit increase, see Amazon Service Limits and choose the %% limit type Nodes per cluster per instance type. %% %% When a Redis (cluster mode disabled) replication group has been %% successfully created, you can add one or more read replicas to it, up to a %% total of 5 read replicas. If you need to increase or decrease the number %% of node groups (console: shards), you can avail yourself of ElastiCache %% for Redis' scaling. For more information, see Scaling ElastiCache for %% Redis Clusters in the ElastiCache User Guide. %% %% This operation is valid for Redis only. create_replication_group(Client, Input) when is_map(Client), is_map(Input) -> create_replication_group(Client, Input, []). create_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateReplicationGroup">>, Input, Options). %% @doc Creates a copy of an entire cluster or replication group at a %% specific moment in time. %% %% This operation is valid for Redis only. create_snapshot(Client, Input) when is_map(Client), is_map(Input) -> create_snapshot(Client, Input, []). create_snapshot(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateSnapshot">>, Input, Options). %% @doc For Redis engine version 6.0 onwards: Creates a Redis user. %% %% For more information, see Using Role Based Access Control (RBAC). create_user(Client, Input) when is_map(Client), is_map(Input) -> create_user(Client, Input, []). create_user(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateUser">>, Input, Options). %% @doc For Redis engine version 6.0 onwards: Creates a Redis user group. %% %% For more information, see Using Role Based Access Control (RBAC) create_user_group(Client, Input) when is_map(Client), is_map(Input) -> create_user_group(Client, Input, []). create_user_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateUserGroup">>, Input, Options). %% @doc Decreases the number of node groups in a Global datastore decrease_node_groups_in_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> decrease_node_groups_in_global_replication_group(Client, Input, []). decrease_node_groups_in_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DecreaseNodeGroupsInGlobalReplicationGroup">>, Input, Options). %% @doc Dynamically decreases the number of replicas in a Redis (cluster mode %% disabled) replication group or the number of replica nodes in one or more %% node groups (shards) of a Redis (cluster mode enabled) replication group. %% %% This operation is performed with no cluster down time. decrease_replica_count(Client, Input) when is_map(Client), is_map(Input) -> decrease_replica_count(Client, Input, []). decrease_replica_count(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DecreaseReplicaCount">>, Input, Options). %% @doc Deletes a previously provisioned cluster. %% %% `DeleteCacheCluster' deletes all associated cache nodes, node %% endpoints and the cluster itself. When you receive a successful response %% from this operation, Amazon ElastiCache immediately begins deleting the %% cluster; you cannot cancel or revert this operation. %% %% This operation is not valid for: %% %% delete_cache_cluster(Client, Input) when is_map(Client), is_map(Input) -> delete_cache_cluster(Client, Input, []). delete_cache_cluster(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteCacheCluster">>, Input, Options). %% @doc Deletes the specified cache parameter group. %% %% You cannot delete a cache parameter group if it is associated with any %% cache clusters. You cannot delete the default cache parameter groups in %% your account. delete_cache_parameter_group(Client, Input) when is_map(Client), is_map(Input) -> delete_cache_parameter_group(Client, Input, []). delete_cache_parameter_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteCacheParameterGroup">>, Input, Options). %% @doc Deletes a cache security group. %% %% You cannot delete a cache security group if it is associated with any %% clusters. delete_cache_security_group(Client, Input) when is_map(Client), is_map(Input) -> delete_cache_security_group(Client, Input, []). delete_cache_security_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteCacheSecurityGroup">>, Input, Options). %% @doc Deletes a cache subnet group. %% %% You cannot delete a default cache subnet group or one that is associated %% with any clusters. delete_cache_subnet_group(Client, Input) when is_map(Client), is_map(Input) -> delete_cache_subnet_group(Client, Input, []). delete_cache_subnet_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteCacheSubnetGroup">>, Input, Options). %% @doc Deleting a Global datastore is a two-step process: %% %% Since the Global Datastore has only a primary cluster, you can %% delete the Global Datastore while retaining the primary by setting %% `RetainPrimaryReplicationGroup=true'. The primary cluster is never %% deleted when deleting a Global Datastore. It can only be deleted when it %% no longer is associated with any Global Datastore. %% %% When you receive a successful response from this operation, Amazon %% ElastiCache immediately begins deleting the selected resources; you cannot %% cancel or revert this operation. delete_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> delete_global_replication_group(Client, Input, []). delete_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteGlobalReplicationGroup">>, Input, Options). %% @doc Deletes an existing replication group. %% %% By default, this operation deletes the entire replication group, including %% the primary/primaries and all of the read replicas. If the replication %% group has only one primary, you can optionally delete only the read %% replicas, while retaining the primary by setting %% `RetainPrimaryCluster=true'. %% %% When you receive a successful response from this operation, Amazon %% ElastiCache immediately begins deleting the selected resources; you cannot %% cancel or revert this operation. %% %% This operation is valid for Redis only. delete_replication_group(Client, Input) when is_map(Client), is_map(Input) -> delete_replication_group(Client, Input, []). delete_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteReplicationGroup">>, Input, Options). %% @doc Deletes an existing snapshot. %% %% When you receive a successful response from this operation, ElastiCache %% immediately begins deleting the snapshot; you cannot cancel or revert this %% operation. %% %% This operation is valid for Redis only. delete_snapshot(Client, Input) when is_map(Client), is_map(Input) -> delete_snapshot(Client, Input, []). delete_snapshot(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteSnapshot">>, Input, Options). %% @doc For Redis engine version 6.0 onwards: Deletes a user. %% %% The user will be removed from all user groups and in turn removed from all %% replication groups. For more information, see Using Role Based Access %% Control (RBAC). delete_user(Client, Input) when is_map(Client), is_map(Input) -> delete_user(Client, Input, []). delete_user(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteUser">>, Input, Options). %% @doc For Redis engine version 6.0 onwards: Deletes a user group. %% %% The user group must first be disassociated from the replication group %% before it can be deleted. For more information, see Using Role Based %% Access Control (RBAC). delete_user_group(Client, Input) when is_map(Client), is_map(Input) -> delete_user_group(Client, Input, []). delete_user_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteUserGroup">>, Input, Options). %% @doc Returns information about all provisioned clusters if no cluster %% identifier is specified, or about a specific cache cluster if a cluster %% identifier is supplied. %% %% By default, abbreviated information about the clusters is returned. You %% can use the optional ShowCacheNodeInfo flag to retrieve detailed %% information about the cache nodes associated with the clusters. These %% details include the DNS address and port for the cache node endpoint. %% %% If the cluster is in the creating state, only cluster-level information is %% displayed until all of the nodes are successfully provisioned. %% %% If the cluster is in the deleting state, only cluster-level information is %% displayed. %% %% If cache nodes are currently being added to the cluster, node endpoint %% information and creation time for the additional nodes are not displayed %% until they are completely provisioned. When the cluster state is %% available, the cluster is ready for use. %% %% If cache nodes are currently being removed from the cluster, no endpoint %% information for the removed nodes is displayed. describe_cache_clusters(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_clusters(Client, Input, []). describe_cache_clusters(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheClusters">>, Input, Options). %% @doc Returns a list of the available cache engines and their versions. describe_cache_engine_versions(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_engine_versions(Client, Input, []). describe_cache_engine_versions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheEngineVersions">>, Input, Options). %% @doc Returns a list of cache parameter group descriptions. %% %% If a cache parameter group name is specified, the list contains only the %% descriptions for that group. describe_cache_parameter_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_parameter_groups(Client, Input, []). describe_cache_parameter_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheParameterGroups">>, Input, Options). %% @doc Returns the detailed parameter list for a particular cache parameter %% group. describe_cache_parameters(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_parameters(Client, Input, []). describe_cache_parameters(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheParameters">>, Input, Options). %% @doc Returns a list of cache security group descriptions. %% %% If a cache security group name is specified, the list contains only the %% description of that group. This applicable only when you have ElastiCache %% in Classic setup describe_cache_security_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_security_groups(Client, Input, []). describe_cache_security_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheSecurityGroups">>, Input, Options). %% @doc Returns a list of cache subnet group descriptions. %% %% If a subnet group name is specified, the list contains only the %% description of that group. This is applicable only when you have %% ElastiCache in VPC setup. All ElastiCache clusters now launch in VPC by %% default. describe_cache_subnet_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_cache_subnet_groups(Client, Input, []). describe_cache_subnet_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCacheSubnetGroups">>, Input, Options). %% @doc Returns the default engine and system parameter information for the %% specified cache engine. describe_engine_default_parameters(Client, Input) when is_map(Client), is_map(Input) -> describe_engine_default_parameters(Client, Input, []). describe_engine_default_parameters(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEngineDefaultParameters">>, Input, Options). %% @doc Returns events related to clusters, cache security groups, and cache %% parameter groups. %% %% You can obtain events specific to a particular cluster, cache security %% group, or cache parameter group by providing the name as a parameter. %% %% By default, only the events occurring within the last hour are returned; %% however, you can retrieve up to 14 days' worth of events if necessary. describe_events(Client, Input) when is_map(Client), is_map(Input) -> describe_events(Client, Input, []). describe_events(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEvents">>, Input, Options). %% @doc Returns information about a particular global replication group. %% %% If no identifier is specified, returns information about all Global %% datastores. describe_global_replication_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_global_replication_groups(Client, Input, []). describe_global_replication_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeGlobalReplicationGroups">>, Input, Options). %% @doc Returns information about a particular replication group. %% %% If no identifier is specified, `DescribeReplicationGroups' returns %% information about all replication groups. %% %% This operation is valid for Redis only. describe_replication_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_replication_groups(Client, Input, []). describe_replication_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeReplicationGroups">>, Input, Options). %% @doc Returns information about reserved cache nodes for this account, or %% about a specified reserved cache node. describe_reserved_cache_nodes(Client, Input) when is_map(Client), is_map(Input) -> describe_reserved_cache_nodes(Client, Input, []). describe_reserved_cache_nodes(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeReservedCacheNodes">>, Input, Options). %% @doc Lists available reserved cache node offerings. describe_reserved_cache_nodes_offerings(Client, Input) when is_map(Client), is_map(Input) -> describe_reserved_cache_nodes_offerings(Client, Input, []). describe_reserved_cache_nodes_offerings(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeReservedCacheNodesOfferings">>, Input, Options). %% @doc Returns details of the service updates describe_service_updates(Client, Input) when is_map(Client), is_map(Input) -> describe_service_updates(Client, Input, []). describe_service_updates(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeServiceUpdates">>, Input, Options). %% @doc Returns information about cluster or replication group snapshots. %% %% By default, `DescribeSnapshots' lists all of your snapshots; it can %% optionally describe a single snapshot, or just the snapshots associated %% with a particular cache cluster. %% %% This operation is valid for Redis only. describe_snapshots(Client, Input) when is_map(Client), is_map(Input) -> describe_snapshots(Client, Input, []). describe_snapshots(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeSnapshots">>, Input, Options). %% @doc Returns details of the update actions describe_update_actions(Client, Input) when is_map(Client), is_map(Input) -> describe_update_actions(Client, Input, []). describe_update_actions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeUpdateActions">>, Input, Options). %% @doc Returns a list of user groups. describe_user_groups(Client, Input) when is_map(Client), is_map(Input) -> describe_user_groups(Client, Input, []). describe_user_groups(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeUserGroups">>, Input, Options). %% @doc Returns a list of users. describe_users(Client, Input) when is_map(Client), is_map(Input) -> describe_users(Client, Input, []). describe_users(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeUsers">>, Input, Options). %% @doc Remove a secondary cluster from the Global datastore using the Global %% datastore name. %% %% The secondary cluster will no longer receive updates from the primary %% cluster, but will remain as a standalone cluster in that Amazon region. disassociate_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> disassociate_global_replication_group(Client, Input, []). disassociate_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DisassociateGlobalReplicationGroup">>, Input, Options). %% @doc Used to failover the primary region to a secondary region. %% %% The secondary region will become primary, and all other clusters will %% become secondary. failover_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> failover_global_replication_group(Client, Input, []). failover_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"FailoverGlobalReplicationGroup">>, Input, Options). %% @doc Increase the number of node groups in the Global datastore increase_node_groups_in_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> increase_node_groups_in_global_replication_group(Client, Input, []). increase_node_groups_in_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"IncreaseNodeGroupsInGlobalReplicationGroup">>, Input, Options). %% @doc Dynamically increases the number of replicas in a Redis (cluster mode %% disabled) replication group or the number of replica nodes in one or more %% node groups (shards) of a Redis (cluster mode enabled) replication group. %% %% This operation is performed with no cluster down time. increase_replica_count(Client, Input) when is_map(Client), is_map(Input) -> increase_replica_count(Client, Input, []). increase_replica_count(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"IncreaseReplicaCount">>, Input, Options). %% @doc Lists all available node types that you can scale your Redis %% cluster's or replication group's current node type. %% %% When you use the `ModifyCacheCluster' or `ModifyReplicationGroup' %% operations to scale your cluster or replication group, the value of the %% `CacheNodeType' parameter must be one of the node types returned by %% this operation. list_allowed_node_type_modifications(Client, Input) when is_map(Client), is_map(Input) -> list_allowed_node_type_modifications(Client, Input, []). list_allowed_node_type_modifications(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListAllowedNodeTypeModifications">>, Input, Options). %% @doc Lists all tags currently on a named resource. %% %% A tag is a key-value pair where the key and value are case-sensitive. You %% can use tags to categorize and track all your ElastiCache resources, with %% the exception of global replication group. When you add or remove tags on %% replication groups, those actions will be replicated to all nodes in the %% replication group. For more information, see Resource-level permissions. %% %% If the cluster is not in the available state, `ListTagsForResource' %% returns an error. list_tags_for_resource(Client, Input) when is_map(Client), is_map(Input) -> list_tags_for_resource(Client, Input, []). list_tags_for_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListTagsForResource">>, Input, Options). %% @doc Modifies the settings for a cluster. %% %% You can use this operation to change one or more cluster configuration %% parameters by specifying the parameters and the new values. modify_cache_cluster(Client, Input) when is_map(Client), is_map(Input) -> modify_cache_cluster(Client, Input, []). modify_cache_cluster(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyCacheCluster">>, Input, Options). %% @doc Modifies the parameters of a cache parameter group. %% %% You can modify up to 20 parameters in a single request by submitting a %% list parameter name and value pairs. modify_cache_parameter_group(Client, Input) when is_map(Client), is_map(Input) -> modify_cache_parameter_group(Client, Input, []). modify_cache_parameter_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyCacheParameterGroup">>, Input, Options). %% @doc Modifies an existing cache subnet group. modify_cache_subnet_group(Client, Input) when is_map(Client), is_map(Input) -> modify_cache_subnet_group(Client, Input, []). modify_cache_subnet_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyCacheSubnetGroup">>, Input, Options). %% @doc Modifies the settings for a Global datastore. modify_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> modify_global_replication_group(Client, Input, []). modify_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyGlobalReplicationGroup">>, Input, Options). %% @doc Modifies the settings for a replication group. %% %% This operation is valid for Redis only. modify_replication_group(Client, Input) when is_map(Client), is_map(Input) -> modify_replication_group(Client, Input, []). modify_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyReplicationGroup">>, Input, Options). %% @doc Modifies a replication group's shards (node groups) by allowing %% you to add shards, remove shards, or rebalance the keyspaces among %% existing shards. modify_replication_group_shard_configuration(Client, Input) when is_map(Client), is_map(Input) -> modify_replication_group_shard_configuration(Client, Input, []). modify_replication_group_shard_configuration(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyReplicationGroupShardConfiguration">>, Input, Options). %% @doc Changes user password(s) and/or access string. modify_user(Client, Input) when is_map(Client), is_map(Input) -> modify_user(Client, Input, []). modify_user(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyUser">>, Input, Options). %% @doc Changes the list of users that belong to the user group. modify_user_group(Client, Input) when is_map(Client), is_map(Input) -> modify_user_group(Client, Input, []). modify_user_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ModifyUserGroup">>, Input, Options). %% @doc Allows you to purchase a reserved cache node offering. %% %% Reserved nodes are not eligible for cancellation and are non-refundable. %% For more information, see Managing Costs with Reserved Nodes for Redis or %% Managing Costs with Reserved Nodes for Memcached. purchase_reserved_cache_nodes_offering(Client, Input) when is_map(Client), is_map(Input) -> purchase_reserved_cache_nodes_offering(Client, Input, []). purchase_reserved_cache_nodes_offering(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PurchaseReservedCacheNodesOffering">>, Input, Options). %% @doc Redistribute slots to ensure uniform distribution across existing %% shards in the cluster. rebalance_slots_in_global_replication_group(Client, Input) when is_map(Client), is_map(Input) -> rebalance_slots_in_global_replication_group(Client, Input, []). rebalance_slots_in_global_replication_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RebalanceSlotsInGlobalReplicationGroup">>, Input, Options). %% @doc Reboots some, or all, of the cache nodes within a provisioned %% cluster. %% %% This operation applies any modified cache parameter groups to the cluster. %% The reboot operation takes place as soon as possible, and results in a %% momentary outage to the cluster. During the reboot, the cluster status is %% set to REBOOTING. %% %% The reboot causes the contents of the cache (for each cache node being %% rebooted) to be lost. %% %% When the reboot is complete, a cluster event is created. %% %% Rebooting a cluster is currently supported on Memcached and Redis (cluster %% mode disabled) clusters. Rebooting is not supported on Redis (cluster mode %% enabled) clusters. %% %% If you make changes to parameters that require a Redis (cluster mode %% enabled) cluster reboot for the changes to be applied, see Rebooting a %% Cluster for an alternate process. reboot_cache_cluster(Client, Input) when is_map(Client), is_map(Input) -> reboot_cache_cluster(Client, Input, []). reboot_cache_cluster(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RebootCacheCluster">>, Input, Options). %% @doc Removes the tags identified by the `TagKeys' list from the named %% resource. %% %% A tag is a key-value pair where the key and value are case-sensitive. You %% can use tags to categorize and track all your ElastiCache resources, with %% the exception of global replication group. When you add or remove tags on %% replication groups, those actions will be replicated to all nodes in the %% replication group. For more information, see Resource-level permissions. remove_tags_from_resource(Client, Input) when is_map(Client), is_map(Input) -> remove_tags_from_resource(Client, Input, []). remove_tags_from_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RemoveTagsFromResource">>, Input, Options). %% @doc Modifies the parameters of a cache parameter group to the engine or %% system default value. %% %% You can reset specific parameters by submitting a list of parameter names. %% To reset the entire cache parameter group, specify the %% `ResetAllParameters' and `CacheParameterGroupName' parameters. reset_cache_parameter_group(Client, Input) when is_map(Client), is_map(Input) -> reset_cache_parameter_group(Client, Input, []). reset_cache_parameter_group(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ResetCacheParameterGroup">>, Input, Options). %% @doc Revokes ingress from a cache security group. %% %% Use this operation to disallow access from an Amazon EC2 security group %% that had been previously authorized. revoke_cache_security_group_ingress(Client, Input) when is_map(Client), is_map(Input) -> revoke_cache_security_group_ingress(Client, Input, []). revoke_cache_security_group_ingress(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RevokeCacheSecurityGroupIngress">>, Input, Options). %% @doc Start the migration of data. start_migration(Client, Input) when is_map(Client), is_map(Input) -> start_migration(Client, Input, []). start_migration(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"StartMigration">>, Input, Options). %% @doc Represents the input of a `TestFailover' operation which test %% automatic failover on a specified node group (called shard in the console) %% in a replication group (called cluster in the console). %% %% This API is designed for testing the behavior of your application in case %% of ElastiCache failover. It is not designed to be an operational tool for %% initiating a failover to overcome a problem you may have with the cluster. %% Moreover, in certain conditions such as large-scale operational events, %% Amazon may block this API. %% %% == Note the following == %% %% Also see, Testing Multi-AZ in the ElastiCache User %% Guide. test_failover(Client, Input) when is_map(Client), is_map(Input) -> test_failover(Client, Input, []). test_failover(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"TestFailover">>, Input, Options). %% @doc Async API to test connection between source and target replication %% group. test_migration(Client, Input) when is_map(Client), is_map(Input) -> test_migration(Client, Input, []). test_migration(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"TestMigration">>, Input, Options). %%==================================================================== %% Internal functions %%==================================================================== -spec request(aws_client:aws_client(), binary(), map(), list()) -> {ok, Result, {integer(), list(), hackney:client()}} | {error, Error, {integer(), list(), hackney:client()}} | {error, term()} when Result :: map() | undefined, Error :: map(). request(Client, Action, Input, Options) -> RequestFun = fun() -> do_request(Client, Action, Input, Options) end, aws_request:request(RequestFun, Options). do_request(Client, Action, Input0, Options) -> Client1 = Client#{service => <<"elasticache">>}, Host = build_host(<<"elasticache">>, Client1), URL = build_url(Host, Client1), Headers = [ {<<"Host">>, Host}, {<<"Content-Type">>, <<"application/x-www-form-urlencoded">>} ], Input = Input0#{ <<"Action">> => Action , <<"Version">> => <<"2015-02-02">> }, Payload = aws_util:encode_query(Input), SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload), Response = hackney:request(post, URL, SignedHeaders, Payload, Options), handle_response(Response). handle_response({ok, 200, ResponseHeaders, Client}) -> case hackney:body(Client) of {ok, <<>>} -> {ok, undefined, {200, ResponseHeaders, Client}}; {ok, Body} -> Result = aws_util:decode_xml(Body), {ok, Result, {200, ResponseHeaders, Client}} end; handle_response({ok, StatusCode, ResponseHeaders, Client}) -> {ok, Body} = hackney:body(Client), Error = aws_util:decode_xml(Body), {error, Error, {StatusCode, ResponseHeaders, Client}}; handle_response({error, Reason}) -> {error, Reason}. build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) -> Endpoint; build_host(_EndpointPrefix, #{region := <<"local">>}) -> <<"localhost">>; build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) -> aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>). build_url(Host, Client) -> Proto = aws_client:proto(Client), Port = aws_client:port(Client), aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>], <<"">>).