R/rds_operations.R

Defines functions rds_stop_db_instance_automated_backups_replication rds_stop_db_instance rds_stop_db_cluster rds_stop_activity_stream rds_start_export_task rds_start_db_instance_automated_backups_replication rds_start_db_instance rds_start_db_cluster rds_start_activity_stream rds_revoke_db_security_group_ingress rds_restore_db_instance_to_point_in_time rds_restore_db_instance_from_s3 rds_restore_db_instance_from_db_snapshot rds_restore_db_cluster_to_point_in_time rds_restore_db_cluster_from_snapshot rds_restore_db_cluster_from_s3 rds_reset_db_parameter_group rds_reset_db_cluster_parameter_group rds_remove_tags_from_resource rds_remove_source_identifier_from_subscription rds_remove_role_from_db_instance rds_remove_role_from_db_cluster rds_remove_from_global_cluster rds_register_db_proxy_targets rds_reboot_db_instance rds_purchase_reserved_db_instances_offering rds_promote_read_replica_db_cluster rds_promote_read_replica rds_modify_option_group rds_modify_global_cluster rds_modify_event_subscription rds_modify_db_subnet_group rds_modify_db_snapshot_attribute rds_modify_db_snapshot rds_modify_db_proxy_target_group rds_modify_db_proxy rds_modify_db_parameter_group rds_modify_db_instance rds_modify_db_cluster_snapshot_attribute rds_modify_db_cluster_parameter_group rds_modify_db_cluster_endpoint rds_modify_db_cluster rds_modify_current_db_cluster_capacity rds_modify_certificates rds_list_tags_for_resource rds_import_installation_media rds_failover_db_cluster rds_download_db_log_file_portion rds_describe_valid_db_instance_modifications rds_describe_source_regions rds_describe_reserved_db_instances_offerings rds_describe_reserved_db_instances rds_describe_pending_maintenance_actions rds_describe_orderable_db_instance_options rds_describe_option_groups rds_describe_option_group_options rds_describe_installation_media rds_describe_global_clusters rds_describe_export_tasks rds_describe_events rds_describe_event_subscriptions rds_describe_event_categories rds_describe_engine_default_parameters rds_describe_engine_default_cluster_parameters rds_describe_db_subnet_groups rds_describe_db_snapshots rds_describe_db_snapshot_attributes rds_describe_db_security_groups rds_describe_db_proxy_targets rds_describe_db_proxy_target_groups rds_describe_db_proxies rds_describe_db_parameters rds_describe_db_parameter_groups rds_describe_db_log_files rds_describe_db_instances rds_describe_db_instance_automated_backups rds_describe_db_engine_versions rds_describe_db_clusters rds_describe_db_cluster_snapshots rds_describe_db_cluster_snapshot_attributes rds_describe_db_cluster_parameters rds_describe_db_cluster_parameter_groups rds_describe_db_cluster_endpoints rds_describe_db_cluster_backtracks rds_describe_custom_availability_zones rds_describe_certificates rds_describe_account_attributes rds_deregister_db_proxy_targets rds_delete_option_group rds_delete_installation_media rds_delete_global_cluster rds_delete_event_subscription rds_delete_db_subnet_group rds_delete_db_snapshot rds_delete_db_security_group rds_delete_db_proxy rds_delete_db_parameter_group rds_delete_db_instance_automated_backup rds_delete_db_instance rds_delete_db_cluster_snapshot rds_delete_db_cluster_parameter_group rds_delete_db_cluster_endpoint rds_delete_db_cluster rds_delete_custom_availability_zone rds_create_option_group rds_create_global_cluster rds_create_event_subscription rds_create_db_subnet_group rds_create_db_snapshot rds_create_db_security_group rds_create_db_proxy rds_create_db_parameter_group rds_create_db_instance_read_replica rds_create_db_instance rds_create_db_cluster_snapshot rds_create_db_cluster_parameter_group rds_create_db_cluster_endpoint rds_create_db_cluster rds_create_custom_availability_zone rds_copy_option_group rds_copy_db_snapshot rds_copy_db_parameter_group rds_copy_db_cluster_snapshot rds_copy_db_cluster_parameter_group rds_cancel_export_task rds_backtrack_db_cluster rds_authorize_db_security_group_ingress rds_apply_pending_maintenance_action rds_add_tags_to_resource rds_add_source_identifier_to_subscription rds_add_role_to_db_instance rds_add_role_to_db_cluster

Documented in rds_add_role_to_db_cluster rds_add_role_to_db_instance rds_add_source_identifier_to_subscription rds_add_tags_to_resource rds_apply_pending_maintenance_action rds_authorize_db_security_group_ingress rds_backtrack_db_cluster rds_cancel_export_task rds_copy_db_cluster_parameter_group rds_copy_db_cluster_snapshot rds_copy_db_parameter_group rds_copy_db_snapshot rds_copy_option_group rds_create_custom_availability_zone rds_create_db_cluster rds_create_db_cluster_endpoint rds_create_db_cluster_parameter_group rds_create_db_cluster_snapshot rds_create_db_instance rds_create_db_instance_read_replica rds_create_db_parameter_group rds_create_db_proxy rds_create_db_security_group rds_create_db_snapshot rds_create_db_subnet_group rds_create_event_subscription rds_create_global_cluster rds_create_option_group rds_delete_custom_availability_zone rds_delete_db_cluster rds_delete_db_cluster_endpoint rds_delete_db_cluster_parameter_group rds_delete_db_cluster_snapshot rds_delete_db_instance rds_delete_db_instance_automated_backup rds_delete_db_parameter_group rds_delete_db_proxy rds_delete_db_security_group rds_delete_db_snapshot rds_delete_db_subnet_group rds_delete_event_subscription rds_delete_global_cluster rds_delete_installation_media rds_delete_option_group rds_deregister_db_proxy_targets rds_describe_account_attributes rds_describe_certificates rds_describe_custom_availability_zones rds_describe_db_cluster_backtracks rds_describe_db_cluster_endpoints rds_describe_db_cluster_parameter_groups rds_describe_db_cluster_parameters rds_describe_db_clusters rds_describe_db_cluster_snapshot_attributes rds_describe_db_cluster_snapshots rds_describe_db_engine_versions rds_describe_db_instance_automated_backups rds_describe_db_instances rds_describe_db_log_files rds_describe_db_parameter_groups rds_describe_db_parameters rds_describe_db_proxies rds_describe_db_proxy_target_groups rds_describe_db_proxy_targets rds_describe_db_security_groups rds_describe_db_snapshot_attributes rds_describe_db_snapshots rds_describe_db_subnet_groups rds_describe_engine_default_cluster_parameters rds_describe_engine_default_parameters rds_describe_event_categories rds_describe_events rds_describe_event_subscriptions rds_describe_export_tasks rds_describe_global_clusters rds_describe_installation_media rds_describe_option_group_options rds_describe_option_groups rds_describe_orderable_db_instance_options rds_describe_pending_maintenance_actions rds_describe_reserved_db_instances rds_describe_reserved_db_instances_offerings rds_describe_source_regions rds_describe_valid_db_instance_modifications rds_download_db_log_file_portion rds_failover_db_cluster rds_import_installation_media rds_list_tags_for_resource rds_modify_certificates rds_modify_current_db_cluster_capacity rds_modify_db_cluster rds_modify_db_cluster_endpoint rds_modify_db_cluster_parameter_group rds_modify_db_cluster_snapshot_attribute rds_modify_db_instance rds_modify_db_parameter_group rds_modify_db_proxy rds_modify_db_proxy_target_group rds_modify_db_snapshot rds_modify_db_snapshot_attribute rds_modify_db_subnet_group rds_modify_event_subscription rds_modify_global_cluster rds_modify_option_group rds_promote_read_replica rds_promote_read_replica_db_cluster rds_purchase_reserved_db_instances_offering rds_reboot_db_instance rds_register_db_proxy_targets rds_remove_from_global_cluster rds_remove_role_from_db_cluster rds_remove_role_from_db_instance rds_remove_source_identifier_from_subscription rds_remove_tags_from_resource rds_reset_db_cluster_parameter_group rds_reset_db_parameter_group rds_restore_db_cluster_from_s3 rds_restore_db_cluster_from_snapshot rds_restore_db_cluster_to_point_in_time rds_restore_db_instance_from_db_snapshot rds_restore_db_instance_from_s3 rds_restore_db_instance_to_point_in_time rds_revoke_db_security_group_ingress rds_start_activity_stream rds_start_db_cluster rds_start_db_instance rds_start_db_instance_automated_backups_replication rds_start_export_task rds_stop_activity_stream rds_stop_db_cluster rds_stop_db_instance rds_stop_db_instance_automated_backups_replication

# This file is generated by make.paws. Please do not edit here.
#' @importFrom paws.common get_config new_operation new_request send_request
#' @include rds_service.R
NULL

#' Associates an Identity and Access Management (IAM) role from an Amazon
#' Aurora DB cluster
#'
#' @description
#' Associates an Identity and Access Management (IAM) role from an Amazon
#' Aurora DB cluster. For more information, see [Authorizing Amazon Aurora
#' MySQL to Access Other AWS Services on Your
#' Behalf](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.html)
#' in the *Amazon Aurora User Guide*.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_add_role_to_db_cluster(DBClusterIdentifier, RoleArn, FeatureName)
#'
#' @param DBClusterIdentifier [required] The name of the DB cluster to associate the IAM role with.
#' @param RoleArn [required] The Amazon Resource Name (ARN) of the IAM role to associate with the
#' Aurora DB cluster, for example,
#' `arn:aws:iam::123456789012:role/AuroraAccessRole`.
#' @param FeatureName The name of the feature for the DB cluster that the IAM role is to be
#' associated with. For the list of supported feature names, see
#' DBEngineVersion.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$add_role_to_db_cluster(
#'   DBClusterIdentifier = "string",
#'   RoleArn = "string",
#'   FeatureName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_add_role_to_db_cluster
rds_add_role_to_db_cluster <- function(DBClusterIdentifier, RoleArn, FeatureName = NULL) {
  op <- new_operation(
    name = "AddRoleToDBCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$add_role_to_db_cluster_input(DBClusterIdentifier = DBClusterIdentifier, RoleArn = RoleArn, FeatureName = FeatureName)
  output <- .rds$add_role_to_db_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$add_role_to_db_cluster <- rds_add_role_to_db_cluster

#' Associates an AWS Identity and Access Management (IAM) role with a DB
#' instance
#'
#' @description
#' Associates an AWS Identity and Access Management (IAM) role with a DB
#' instance.
#' 
#' To add a role to a DB instance, the status of the DB instance must be
#' `available`.
#'
#' @usage
#' rds_add_role_to_db_instance(DBInstanceIdentifier, RoleArn, FeatureName)
#'
#' @param DBInstanceIdentifier &#91;required&#93; The name of the DB instance to associate the IAM role with.
#' @param RoleArn &#91;required&#93; The Amazon Resource Name (ARN) of the IAM role to associate with the DB
#' instance, for example `arn:aws:iam::123456789012:role/AccessRole`.
#' @param FeatureName &#91;required&#93; The name of the feature for the DB instance that the IAM role is to be
#' associated with. For the list of supported feature names, see
#' DBEngineVersion.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$add_role_to_db_instance(
#'   DBInstanceIdentifier = "string",
#'   RoleArn = "string",
#'   FeatureName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_add_role_to_db_instance
rds_add_role_to_db_instance <- function(DBInstanceIdentifier, RoleArn, FeatureName) {
  op <- new_operation(
    name = "AddRoleToDBInstance",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$add_role_to_db_instance_input(DBInstanceIdentifier = DBInstanceIdentifier, RoleArn = RoleArn, FeatureName = FeatureName)
  output <- .rds$add_role_to_db_instance_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$add_role_to_db_instance <- rds_add_role_to_db_instance

#' Adds a source identifier to an existing RDS event notification
#' subscription
#'
#' @description
#' Adds a source identifier to an existing RDS event notification
#' subscription.
#'
#' @usage
#' rds_add_source_identifier_to_subscription(SubscriptionName,
#'   SourceIdentifier)
#'
#' @param SubscriptionName &#91;required&#93; The name of the RDS event notification subscription you want to add a
#' source identifier to.
#' @param SourceIdentifier &#91;required&#93; The identifier of the event source to be added.
#' 
#' Constraints:
#' 
#' -   If the source type is a DB instance, a `DBInstanceIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB cluster, a `DBClusterIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB parameter group, a `DBParameterGroupName`
#'     value must be supplied.
#' 
#' -   If the source type is a DB security group, a `DBSecurityGroupName`
#'     value must be supplied.
#' 
#' -   If the source type is a DB snapshot, a `DBSnapshotIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB cluster snapshot, a
#'     `DBClusterSnapshotIdentifier` value must be supplied.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EventSubscription = list(
#'     CustomerAwsId = "string",
#'     CustSubscriptionId = "string",
#'     SnsTopicArn = "string",
#'     Status = "string",
#'     SubscriptionCreationTime = "string",
#'     SourceType = "string",
#'     SourceIdsList = list(
#'       "string"
#'     ),
#'     EventCategoriesList = list(
#'       "string"
#'     ),
#'     Enabled = TRUE|FALSE,
#'     EventSubscriptionArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$add_source_identifier_to_subscription(
#'   SubscriptionName = "string",
#'   SourceIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_add_source_identifier_to_subscription
rds_add_source_identifier_to_subscription <- function(SubscriptionName, SourceIdentifier) {
  op <- new_operation(
    name = "AddSourceIdentifierToSubscription",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$add_source_identifier_to_subscription_input(SubscriptionName = SubscriptionName, SourceIdentifier = SourceIdentifier)
  output <- .rds$add_source_identifier_to_subscription_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$add_source_identifier_to_subscription <- rds_add_source_identifier_to_subscription

#' Adds metadata tags to an Amazon RDS resource
#'
#' @description
#' Adds metadata tags to an Amazon RDS resource. These tags can also be
#' used with cost allocation reporting to track cost associated with Amazon
#' RDS resources, or used in a Condition statement in an IAM policy for
#' Amazon RDS.
#' 
#' For an overview on tagging Amazon RDS resources, see [Tagging Amazon RDS
#' Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html).
#'
#' @usage
#' rds_add_tags_to_resource(ResourceName, Tags)
#'
#' @param ResourceName &#91;required&#93; The Amazon RDS resource that the tags are added to. This value is an
#' Amazon Resource Name (ARN). For information about creating an ARN, see
#' [Constructing an RDS Amazon Resource Name
#' (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing).
#' @param Tags &#91;required&#93; The tags to be assigned to the Amazon RDS resource.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$add_tags_to_resource(
#'   ResourceName = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_add_tags_to_resource
rds_add_tags_to_resource <- function(ResourceName, Tags) {
  op <- new_operation(
    name = "AddTagsToResource",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$add_tags_to_resource_input(ResourceName = ResourceName, Tags = Tags)
  output <- .rds$add_tags_to_resource_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$add_tags_to_resource <- rds_add_tags_to_resource

#' Applies a pending maintenance action to a resource (for example, to a DB
#' instance)
#'
#' @description
#' Applies a pending maintenance action to a resource (for example, to a DB
#' instance).
#'
#' @usage
#' rds_apply_pending_maintenance_action(ResourceIdentifier, ApplyAction,
#'   OptInType)
#'
#' @param ResourceIdentifier &#91;required&#93; The RDS Amazon Resource Name (ARN) of the resource that the pending
#' maintenance action applies to. For information about creating an ARN,
#' see [Constructing an RDS Amazon Resource Name
#' (ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing).
#' @param ApplyAction &#91;required&#93; The pending maintenance action to apply to this resource.
#' 
#' Valid values: `system-update`, `db-upgrade`, `hardware-maintenance`,
#' `ca-certificate-rotation`
#' @param OptInType &#91;required&#93; A value that specifies the type of opt-in request, or undoes an opt-in
#' request. An opt-in request of type `immediate` can't be undone.
#' 
#' Valid values:
#' 
#' -   `immediate` - Apply the maintenance action immediately.
#' 
#' -   `next-maintenance` - Apply the maintenance action during the next
#'     maintenance window for the resource.
#' 
#' -   `undo-opt-in` - Cancel any existing `next-maintenance` opt-in
#'     requests.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ResourcePendingMaintenanceActions = list(
#'     ResourceIdentifier = "string",
#'     PendingMaintenanceActionDetails = list(
#'       list(
#'         Action = "string",
#'         AutoAppliedAfterDate = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         ForcedApplyDate = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         OptInStatus = "string",
#'         CurrentApplyDate = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         Description = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$apply_pending_maintenance_action(
#'   ResourceIdentifier = "string",
#'   ApplyAction = "string",
#'   OptInType = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_apply_pending_maintenance_action
rds_apply_pending_maintenance_action <- function(ResourceIdentifier, ApplyAction, OptInType) {
  op <- new_operation(
    name = "ApplyPendingMaintenanceAction",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$apply_pending_maintenance_action_input(ResourceIdentifier = ResourceIdentifier, ApplyAction = ApplyAction, OptInType = OptInType)
  output <- .rds$apply_pending_maintenance_action_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$apply_pending_maintenance_action <- rds_apply_pending_maintenance_action

#' Enables ingress to a DBSecurityGroup using one of two forms of
#' authorization
#'
#' @description
#' Enables ingress to a DBSecurityGroup using one of two forms of
#' authorization. First, EC2 or VPC security groups can be added to the
#' DBSecurityGroup if the application using the database is running on EC2
#' or VPC instances. Second, IP ranges are available if the application
#' accessing your database is running on the Internet. Required parameters
#' for this API are one of CIDR range, EC2SecurityGroupId for VPC, or
#' (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or
#' EC2SecurityGroupId for non-VPC).
#' 
#' You can't authorize ingress from an EC2 security group in one AWS Region
#' to an Amazon RDS DB instance in another. You can't authorize ingress
#' from a VPC security group in one VPC to an Amazon RDS DB instance in
#' another.
#' 
#' For an overview of CIDR ranges, go to the [Wikipedia
#' Tutorial](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
#'
#' @usage
#' rds_authorize_db_security_group_ingress(DBSecurityGroupName, CIDRIP,
#'   EC2SecurityGroupName, EC2SecurityGroupId, EC2SecurityGroupOwnerId)
#'
#' @param DBSecurityGroupName &#91;required&#93; The name of the DB security group to add authorization to.
#' @param CIDRIP The IP range to authorize.
#' @param EC2SecurityGroupName Name of the EC2 security group to authorize. For VPC DB security groups,
#' `EC2SecurityGroupId` must be provided. Otherwise,
#' `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or
#' `EC2SecurityGroupId` must be provided.
#' @param EC2SecurityGroupId Id of the EC2 security group to authorize. For VPC DB security groups,
#' `EC2SecurityGroupId` must be provided. Otherwise,
#' `EC2SecurityGroupOwnerId` and either `EC2SecurityGroupName` or
#' `EC2SecurityGroupId` must be provided.
#' @param EC2SecurityGroupOwnerId AWS account number of the owner of the EC2 security group specified in
#' the `EC2SecurityGroupName` parameter. The AWS access key ID isn't an
#' acceptable value. For VPC DB security groups, `EC2SecurityGroupId` must
#' be provided. Otherwise, `EC2SecurityGroupOwnerId` and either
#' `EC2SecurityGroupName` or `EC2SecurityGroupId` must be provided.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSecurityGroup = list(
#'     OwnerId = "string",
#'     DBSecurityGroupName = "string",
#'     DBSecurityGroupDescription = "string",
#'     VpcId = "string",
#'     EC2SecurityGroups = list(
#'       list(
#'         Status = "string",
#'         EC2SecurityGroupName = "string",
#'         EC2SecurityGroupId = "string",
#'         EC2SecurityGroupOwnerId = "string"
#'       )
#'     ),
#'     IPRanges = list(
#'       list(
#'         Status = "string",
#'         CIDRIP = "string"
#'       )
#'     ),
#'     DBSecurityGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$authorize_db_security_group_ingress(
#'   DBSecurityGroupName = "string",
#'   CIDRIP = "string",
#'   EC2SecurityGroupName = "string",
#'   EC2SecurityGroupId = "string",
#'   EC2SecurityGroupOwnerId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_authorize_db_security_group_ingress
rds_authorize_db_security_group_ingress <- function(DBSecurityGroupName, CIDRIP = NULL, EC2SecurityGroupName = NULL, EC2SecurityGroupId = NULL, EC2SecurityGroupOwnerId = NULL) {
  op <- new_operation(
    name = "AuthorizeDBSecurityGroupIngress",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$authorize_db_security_group_ingress_input(DBSecurityGroupName = DBSecurityGroupName, CIDRIP = CIDRIP, EC2SecurityGroupName = EC2SecurityGroupName, EC2SecurityGroupId = EC2SecurityGroupId, EC2SecurityGroupOwnerId = EC2SecurityGroupOwnerId)
  output <- .rds$authorize_db_security_group_ingress_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$authorize_db_security_group_ingress <- rds_authorize_db_security_group_ingress

#' Backtracks a DB cluster to a specific time, without creating a new DB
#' cluster
#'
#' @description
#' Backtracks a DB cluster to a specific time, without creating a new DB
#' cluster.
#' 
#' For more information on backtracking, see [Backtracking an Aurora DB
#' Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Backtrack.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora MySQL DB clusters.
#'
#' @usage
#' rds_backtrack_db_cluster(DBClusterIdentifier, BacktrackTo, Force,
#'   UseEarliestTimeOnPointInTimeUnavailable)
#'
#' @param DBClusterIdentifier &#91;required&#93; The DB cluster identifier of the DB cluster to be backtracked. This
#' parameter is stored as a lowercase string.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 alphanumeric characters or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `my-cluster1`
#' @param BacktrackTo &#91;required&#93; The timestamp of the time to backtrack the DB cluster to, specified in
#' ISO 8601 format. For more information about ISO 8601, see the [ISO8601
#' Wikipedia page.](https://en.wikipedia.org/wiki/ISO_8601)
#' 
#' If the specified time isn't a consistent time for the DB cluster, Aurora
#' automatically chooses the nearest possible consistent time for the DB
#' cluster.
#' 
#' Constraints:
#' 
#' -   Must contain a valid ISO 8601 timestamp.
#' 
#' -   Can't contain a timestamp set in the future.
#' 
#' Example: `2017-07-08T18:00Z`
#' @param Force A value that indicates whether to force the DB cluster to backtrack when
#' binary logging is enabled. Otherwise, an error occurs when binary
#' logging is enabled.
#' @param UseEarliestTimeOnPointInTimeUnavailable A value that indicates whether to backtrack the DB cluster to the
#' earliest possible backtrack time when *BacktrackTo* is set to a
#' timestamp earlier than the earliest backtrack time. When this parameter
#' is disabled and *BacktrackTo* is set to a timestamp earlier than the
#' earliest backtrack time, an error occurs.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterIdentifier = "string",
#'   BacktrackIdentifier = "string",
#'   BacktrackTo = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   BacktrackedFrom = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   BacktrackRequestCreationTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   Status = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$backtrack_db_cluster(
#'   DBClusterIdentifier = "string",
#'   BacktrackTo = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   Force = TRUE|FALSE,
#'   UseEarliestTimeOnPointInTimeUnavailable = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_backtrack_db_cluster
rds_backtrack_db_cluster <- function(DBClusterIdentifier, BacktrackTo, Force = NULL, UseEarliestTimeOnPointInTimeUnavailable = NULL) {
  op <- new_operation(
    name = "BacktrackDBCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$backtrack_db_cluster_input(DBClusterIdentifier = DBClusterIdentifier, BacktrackTo = BacktrackTo, Force = Force, UseEarliestTimeOnPointInTimeUnavailable = UseEarliestTimeOnPointInTimeUnavailable)
  output <- .rds$backtrack_db_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$backtrack_db_cluster <- rds_backtrack_db_cluster

#' Cancels an export task in progress that is exporting a snapshot to
#' Amazon S3
#'
#' @description
#' Cancels an export task in progress that is exporting a snapshot to
#' Amazon S3. Any data that has already been written to the S3 bucket isn't
#' removed.
#'
#' @usage
#' rds_cancel_export_task(ExportTaskIdentifier)
#'
#' @param ExportTaskIdentifier &#91;required&#93; The identifier of the snapshot export task to cancel.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ExportTaskIdentifier = "string",
#'   SourceArn = "string",
#'   ExportOnly = list(
#'     "string"
#'   ),
#'   SnapshotTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   TaskStartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   TaskEndTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   S3Bucket = "string",
#'   S3Prefix = "string",
#'   IamRoleArn = "string",
#'   KmsKeyId = "string",
#'   Status = "string",
#'   PercentProgress = 123,
#'   TotalExtractedDataInGB = 123,
#'   FailureCause = "string",
#'   WarningMessage = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$cancel_export_task(
#'   ExportTaskIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_cancel_export_task
rds_cancel_export_task <- function(ExportTaskIdentifier) {
  op <- new_operation(
    name = "CancelExportTask",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$cancel_export_task_input(ExportTaskIdentifier = ExportTaskIdentifier)
  output <- .rds$cancel_export_task_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$cancel_export_task <- rds_cancel_export_task

#' Copies the specified DB cluster parameter group
#'
#' @description
#' Copies the specified DB cluster parameter group.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_copy_db_cluster_parameter_group(
#'   SourceDBClusterParameterGroupIdentifier,
#'   TargetDBClusterParameterGroupIdentifier,
#'   TargetDBClusterParameterGroupDescription, Tags)
#'
#' @param SourceDBClusterParameterGroupIdentifier &#91;required&#93; The identifier or Amazon Resource Name (ARN) for the source DB cluster
#' parameter group. For information about creating an ARN, see
#' [Constructing an ARN for Amazon
#' RDS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
#' in the *Amazon Aurora User Guide*.
#' 
#' Constraints:
#' 
#' -   Must specify a valid DB cluster parameter group.
#' 
#' -   If the source DB cluster parameter group is in the same AWS Region
#'     as the copy, specify a valid DB parameter group identifier, for
#'     example `my-db-cluster-param-group`, or a valid ARN.
#' 
#' -   If the source DB parameter group is in a different AWS Region than
#'     the copy, specify a valid DB cluster parameter group ARN, for
#'     example
#'     `arn:aws:rds:us-east-1:123456789012:cluster-pg:custom-cluster-group1`.
#' @param TargetDBClusterParameterGroupIdentifier &#91;required&#93; The identifier for the copied DB cluster parameter group.
#' 
#' Constraints:
#' 
#' -   Can't be null, empty, or blank
#' 
#' -   Must contain from 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `my-cluster-param-group1`
#' @param TargetDBClusterParameterGroupDescription &#91;required&#93; A description for the copied DB cluster parameter group.
#' @param Tags 
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterParameterGroup = list(
#'     DBClusterParameterGroupName = "string",
#'     DBParameterGroupFamily = "string",
#'     Description = "string",
#'     DBClusterParameterGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$copy_db_cluster_parameter_group(
#'   SourceDBClusterParameterGroupIdentifier = "string",
#'   TargetDBClusterParameterGroupIdentifier = "string",
#'   TargetDBClusterParameterGroupDescription = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_copy_db_cluster_parameter_group
rds_copy_db_cluster_parameter_group <- function(SourceDBClusterParameterGroupIdentifier, TargetDBClusterParameterGroupIdentifier, TargetDBClusterParameterGroupDescription, Tags = NULL) {
  op <- new_operation(
    name = "CopyDBClusterParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$copy_db_cluster_parameter_group_input(SourceDBClusterParameterGroupIdentifier = SourceDBClusterParameterGroupIdentifier, TargetDBClusterParameterGroupIdentifier = TargetDBClusterParameterGroupIdentifier, TargetDBClusterParameterGroupDescription = TargetDBClusterParameterGroupDescription, Tags = Tags)
  output <- .rds$copy_db_cluster_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$copy_db_cluster_parameter_group <- rds_copy_db_cluster_parameter_group

#' Copies a snapshot of a DB cluster
#'
#' @description
#' Copies a snapshot of a DB cluster.
#' 
#' To copy a DB cluster snapshot from a shared manual DB cluster snapshot,
#' `SourceDBClusterSnapshotIdentifier` must be the Amazon Resource Name
#' (ARN) of the shared DB cluster snapshot.
#' 
#' You can copy an encrypted DB cluster snapshot from another AWS Region.
#' In that case, the AWS Region where you call the
#' [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] action is the
#' destination AWS Region for the encrypted DB cluster snapshot to be
#' copied to. To copy an encrypted DB cluster snapshot from another AWS
#' Region, you must provide the following values:
#' 
#' -   `KmsKeyId` - The AWS Key Management System (AWS KMS) key identifier
#'     for the key to use to encrypt the copy of the DB cluster snapshot in
#'     the destination AWS Region.
#' 
#' -   `PreSignedUrl` - A URL that contains a Signature Version 4 signed
#'     request for the
#'     [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] action to
#'     be called in the source AWS Region where the DB cluster snapshot is
#'     copied from. The pre-signed URL must be a valid request for the
#'     [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] API
#'     action that can be executed in the source AWS Region that contains
#'     the encrypted DB cluster snapshot to be copied.
#' 
#'     The pre-signed URL request must contain the following parameter
#'     values:
#' 
#'     -   `KmsKeyId` - The AWS KMS key identifier for the customer master
#'         key (CMK) to use to encrypt the copy of the DB cluster snapshot
#'         in the destination AWS Region. This is the same identifier for
#'         both the
#'         [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot]
#'         action that is called in the destination AWS Region, and the
#'         action contained in the pre-signed URL.
#' 
#'     -   `DestinationRegion` - The name of the AWS Region that the DB
#'         cluster snapshot is to be created in.
#' 
#'     -   `SourceDBClusterSnapshotIdentifier` - The DB cluster snapshot
#'         identifier for the encrypted DB cluster snapshot to be copied.
#'         This identifier must be in the Amazon Resource Name (ARN) format
#'         for the source AWS Region. For example, if you are copying an
#'         encrypted DB cluster snapshot from the us-west-2 AWS Region,
#'         then your `SourceDBClusterSnapshotIdentifier` looks like the
#'         following example:
#'         `arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115`.
#' 
#'     To learn how to generate a Signature Version 4 signed request, see
#'     [Authenticating Requests: Using Query Parameters (AWS Signature
#'     Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
#'     and [Signature Version 4 Signing
#'     Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
#' 
#'     If you are using an AWS SDK tool or the AWS CLI, you can specify
#'     `SourceRegion` (or `--source-region` for the AWS CLI) instead of
#'     specifying `PreSignedUrl` manually. Specifying `SourceRegion`
#'     autogenerates a pre-signed URL that is a valid request for the
#'     operation that can be executed in the source AWS Region.
#' 
#' -   `TargetDBClusterSnapshotIdentifier` - The identifier for the new
#'     copy of the DB cluster snapshot in the destination AWS Region.
#' 
#' -   `SourceDBClusterSnapshotIdentifier` - The DB cluster snapshot
#'     identifier for the encrypted DB cluster snapshot to be copied. This
#'     identifier must be in the ARN format for the source AWS Region and
#'     is the same value as the `SourceDBClusterSnapshotIdentifier` in the
#'     pre-signed URL.
#' 
#' To cancel the copy operation once it is in progress, delete the target
#' DB cluster snapshot identified by `TargetDBClusterSnapshotIdentifier`
#' while that DB cluster snapshot is in "copying" status.
#' 
#' For more information on copying encrypted DB cluster snapshots from one
#' AWS Region to another, see [Copying a
#' Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CopySnapshot.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_copy_db_cluster_snapshot(SourceDBClusterSnapshotIdentifier,
#'   TargetDBClusterSnapshotIdentifier, KmsKeyId, PreSignedUrl, CopyTags,
#'   Tags, SourceRegion)
#'
#' @param SourceDBClusterSnapshotIdentifier &#91;required&#93; The identifier of the DB cluster snapshot to copy. This parameter isn't
#' case-sensitive.
#' 
#' You can't copy an encrypted, shared DB cluster snapshot from one AWS
#' Region to another.
#' 
#' Constraints:
#' 
#' -   Must specify a valid system snapshot in the "available" state.
#' 
#' -   If the source snapshot is in the same AWS Region as the copy,
#'     specify a valid DB snapshot identifier.
#' 
#' -   If the source snapshot is in a different AWS Region than the copy,
#'     specify a valid DB cluster snapshot ARN. For more information, go to
#'     [Copying Snapshots Across AWS
#'     Regions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CopySnapshot.html#USER_CopySnapshot.AcrossRegions)
#'     in the *Amazon Aurora User Guide.*
#' 
#' Example: `my-cluster-snapshot1`
#' @param TargetDBClusterSnapshotIdentifier &#91;required&#93; The identifier of the new DB cluster snapshot to create from the source
#' DB cluster snapshot. This parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `my-cluster-snapshot2`
#' @param KmsKeyId The AWS KMS key identifier for an encrypted DB cluster snapshot. The AWS
#' KMS key identifier is the key ARN, key ID, alias ARN, or alias name for
#' the AWS KMS customer master key (CMK).
#' 
#' If you copy an encrypted DB cluster snapshot from your AWS account, you
#' can specify a value for `KmsKeyId` to encrypt the copy with a new AWS
#' KMS CMK. If you don't specify a value for `KmsKeyId`, then the copy of
#' the DB cluster snapshot is encrypted with the same AWS KMS key as the
#' source DB cluster snapshot.
#' 
#' If you copy an encrypted DB cluster snapshot that is shared from another
#' AWS account, then you must specify a value for `KmsKeyId`.
#' 
#' To copy an encrypted DB cluster snapshot to another AWS Region, you must
#' set `KmsKeyId` to the AWS KMS key identifier you want to use to encrypt
#' the copy of the DB cluster snapshot in the destination AWS Region. AWS
#' KMS CMKs are specific to the AWS Region that they are created in, and
#' you can't use CMKs from one AWS Region in another AWS Region.
#' 
#' If you copy an unencrypted DB cluster snapshot and specify a value for
#' the `KmsKeyId` parameter, an error is returned.
#' @param PreSignedUrl The URL that contains a Signature Version 4 signed request for the
#' [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] API action in
#' the AWS Region that contains the source DB cluster snapshot to copy. The
#' `PreSignedUrl` parameter must be used when copying an encrypted DB
#' cluster snapshot from another AWS Region. Don't specify `PreSignedUrl`
#' when you are copying an encrypted DB cluster snapshot in the same AWS
#' Region.
#' 
#' The pre-signed URL must be a valid request for the
#' [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] API action
#' that can be executed in the source AWS Region that contains the
#' encrypted DB cluster snapshot to be copied. The pre-signed URL request
#' must contain the following parameter values:
#' 
#' -   `KmsKeyId` - The AWS KMS key identifier for the customer master key
#'     (CMK) to use to encrypt the copy of the DB cluster snapshot in the
#'     destination AWS Region. This is the same identifier for both the
#'     [`copy_db_cluster_snapshot`][rds_copy_db_cluster_snapshot] action
#'     that is called in the destination AWS Region, and the action
#'     contained in the pre-signed URL.
#' 
#' -   `DestinationRegion` - The name of the AWS Region that the DB cluster
#'     snapshot is to be created in.
#' 
#' -   `SourceDBClusterSnapshotIdentifier` - The DB cluster snapshot
#'     identifier for the encrypted DB cluster snapshot to be copied. This
#'     identifier must be in the Amazon Resource Name (ARN) format for the
#'     source AWS Region. For example, if you are copying an encrypted DB
#'     cluster snapshot from the us-west-2 AWS Region, then your
#'     `SourceDBClusterSnapshotIdentifier` looks like the following
#'     example:
#'     `arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115`.
#' 
#' To learn how to generate a Signature Version 4 signed request, see
#' [Authenticating Requests: Using Query Parameters (AWS Signature Version
#' 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
#' and [Signature Version 4 Signing
#' Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
#' 
#' If you are using an AWS SDK tool or the AWS CLI, you can specify
#' `SourceRegion` (or `--source-region` for the AWS CLI) instead of
#' specifying `PreSignedUrl` manually. Specifying `SourceRegion`
#' autogenerates a pre-signed URL that is a valid request for the operation
#' that can be executed in the source AWS Region.
#' 
#' If you supply a value for this operation's `SourceRegion` parameter, a
#' pre-signed URL will be calculated on your behalf.
#' @param CopyTags A value that indicates whether to copy all tags from the source DB
#' cluster snapshot to the target DB cluster snapshot. By default, tags are
#' not copied.
#' @param Tags 
#' @param SourceRegion The ID of the region that contains the snapshot to be copied.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterSnapshot = list(
#'     AvailabilityZones = list(
#'       "string"
#'     ),
#'     DBClusterSnapshotIdentifier = "string",
#'     DBClusterIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     VpcId = "string",
#'     ClusterCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     PercentProgress = 123,
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBClusterSnapshotArn = "string",
#'     SourceDBClusterSnapshotArn = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$copy_db_cluster_snapshot(
#'   SourceDBClusterSnapshotIdentifier = "string",
#'   TargetDBClusterSnapshotIdentifier = "string",
#'   KmsKeyId = "string",
#'   PreSignedUrl = "string",
#'   CopyTags = TRUE|FALSE,
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   SourceRegion = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_copy_db_cluster_snapshot
rds_copy_db_cluster_snapshot <- function(SourceDBClusterSnapshotIdentifier, TargetDBClusterSnapshotIdentifier, KmsKeyId = NULL, PreSignedUrl = NULL, CopyTags = NULL, Tags = NULL, SourceRegion = NULL) {
  op <- new_operation(
    name = "CopyDBClusterSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$copy_db_cluster_snapshot_input(SourceDBClusterSnapshotIdentifier = SourceDBClusterSnapshotIdentifier, TargetDBClusterSnapshotIdentifier = TargetDBClusterSnapshotIdentifier, KmsKeyId = KmsKeyId, PreSignedUrl = PreSignedUrl, CopyTags = CopyTags, Tags = Tags, SourceRegion = SourceRegion)
  output <- .rds$copy_db_cluster_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$copy_db_cluster_snapshot <- rds_copy_db_cluster_snapshot

#' Copies the specified DB parameter group
#'
#' @description
#' Copies the specified DB parameter group.
#'
#' @usage
#' rds_copy_db_parameter_group(SourceDBParameterGroupIdentifier,
#'   TargetDBParameterGroupIdentifier, TargetDBParameterGroupDescription,
#'   Tags)
#'
#' @param SourceDBParameterGroupIdentifier &#91;required&#93; The identifier or ARN for the source DB parameter group. For information
#' about creating an ARN, see [Constructing an ARN for Amazon
#' RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
#' in the *Amazon RDS User Guide*.
#' 
#' Constraints:
#' 
#' -   Must specify a valid DB parameter group.
#' 
#' -   Must specify a valid DB parameter group identifier, for example
#'     `my-db-param-group`, or a valid ARN.
#' @param TargetDBParameterGroupIdentifier &#91;required&#93; The identifier for the copied DB parameter group.
#' 
#' Constraints:
#' 
#' -   Can't be null, empty, or blank
#' 
#' -   Must contain from 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `my-db-parameter-group`
#' @param TargetDBParameterGroupDescription &#91;required&#93; A description for the copied DB parameter group.
#' @param Tags 
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBParameterGroup = list(
#'     DBParameterGroupName = "string",
#'     DBParameterGroupFamily = "string",
#'     Description = "string",
#'     DBParameterGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$copy_db_parameter_group(
#'   SourceDBParameterGroupIdentifier = "string",
#'   TargetDBParameterGroupIdentifier = "string",
#'   TargetDBParameterGroupDescription = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_copy_db_parameter_group
rds_copy_db_parameter_group <- function(SourceDBParameterGroupIdentifier, TargetDBParameterGroupIdentifier, TargetDBParameterGroupDescription, Tags = NULL) {
  op <- new_operation(
    name = "CopyDBParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$copy_db_parameter_group_input(SourceDBParameterGroupIdentifier = SourceDBParameterGroupIdentifier, TargetDBParameterGroupIdentifier = TargetDBParameterGroupIdentifier, TargetDBParameterGroupDescription = TargetDBParameterGroupDescription, Tags = Tags)
  output <- .rds$copy_db_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$copy_db_parameter_group <- rds_copy_db_parameter_group

#' Copies the specified DB snapshot
#'
#' @description
#' Copies the specified DB snapshot. The source DB snapshot must be in the
#' `available` state.
#' 
#' You can copy a snapshot from one AWS Region to another. In that case,
#' the AWS Region where you call the
#' [`copy_db_snapshot`][rds_copy_db_snapshot] action is the destination AWS
#' Region for the DB snapshot copy.
#' 
#' For more information about copying snapshots, see [Copying a DB
#' Snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html#USER_CopyDBSnapshot)
#' in the *Amazon RDS User Guide.*
#'
#' @usage
#' rds_copy_db_snapshot(SourceDBSnapshotIdentifier,
#'   TargetDBSnapshotIdentifier, KmsKeyId, Tags, CopyTags, PreSignedUrl,
#'   OptionGroupName, TargetCustomAvailabilityZone, SourceRegion)
#'
#' @param SourceDBSnapshotIdentifier &#91;required&#93; The identifier for the source DB snapshot.
#' 
#' If the source snapshot is in the same AWS Region as the copy, specify a
#' valid DB snapshot identifier. For example, you might specify
#' `rds:mysql-instance1-snapshot-20130805`.
#' 
#' If the source snapshot is in a different AWS Region than the copy,
#' specify a valid DB snapshot ARN. For example, you might specify
#' `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`.
#' 
#' If you are copying from a shared manual DB snapshot, this parameter must
#' be the Amazon Resource Name (ARN) of the shared DB snapshot.
#' 
#' If you are copying an encrypted snapshot this parameter must be in the
#' ARN format for the source AWS Region, and must match the
#' `SourceDBSnapshotIdentifier` in the `PreSignedUrl` parameter.
#' 
#' Constraints:
#' 
#' -   Must specify a valid system snapshot in the "available" state.
#' 
#' Example: `rds:mydb-2012-04-02-00-01`
#' 
#' Example:
#' `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805`
#' @param TargetDBSnapshotIdentifier &#91;required&#93; The identifier for the copy of the snapshot.
#' 
#' Constraints:
#' 
#' -   Can't be null, empty, or blank
#' 
#' -   Must contain from 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `my-db-snapshot`
#' @param KmsKeyId The AWS KMS key identifier for an encrypted DB snapshot. The AWS KMS key
#' identifier is the key ARN, key ID, alias ARN, or alias name for the AWS
#' KMS customer master key (CMK).
#' 
#' If you copy an encrypted DB snapshot from your AWS account, you can
#' specify a value for this parameter to encrypt the copy with a new AWS
#' KMS CMK. If you don't specify a value for this parameter, then the copy
#' of the DB snapshot is encrypted with the same AWS KMS key as the source
#' DB snapshot.
#' 
#' If you copy an encrypted DB snapshot that is shared from another AWS
#' account, then you must specify a value for this parameter.
#' 
#' If you specify this parameter when you copy an unencrypted snapshot, the
#' copy is encrypted.
#' 
#' If you copy an encrypted snapshot to a different AWS Region, then you
#' must specify a AWS KMS key identifier for the destination AWS Region.
#' AWS KMS CMKs are specific to the AWS Region that they are created in,
#' and you can't use CMKs from one AWS Region in another AWS Region.
#' @param Tags 
#' @param CopyTags A value that indicates whether to copy all tags from the source DB
#' snapshot to the target DB snapshot. By default, tags are not copied.
#' @param PreSignedUrl The URL that contains a Signature Version 4 signed request for the
#' [`copy_db_snapshot`][rds_copy_db_snapshot] API action in the source AWS
#' Region that contains the source DB snapshot to copy.
#' 
#' You must specify this parameter when you copy an encrypted DB snapshot
#' from another AWS Region by using the Amazon RDS API. Don't specify
#' `PreSignedUrl` when you are copying an encrypted DB snapshot in the same
#' AWS Region.
#' 
#' The presigned URL must be a valid request for the
#' [`copy_db_snapshot`][rds_copy_db_snapshot] API action that can be
#' executed in the source AWS Region that contains the encrypted DB
#' snapshot to be copied. The presigned URL request must contain the
#' following parameter values:
#' 
#' -   `DestinationRegion` - The AWS Region that the encrypted DB snapshot
#'     is copied to. This AWS Region is the same one where the
#'     [`copy_db_snapshot`][rds_copy_db_snapshot] action is called that
#'     contains this presigned URL.
#' 
#'     For example, if you copy an encrypted DB snapshot from the us-west-2
#'     AWS Region to the us-east-1 AWS Region, then you call the
#'     [`copy_db_snapshot`][rds_copy_db_snapshot] action in the us-east-1
#'     AWS Region and provide a presigned URL that contains a call to the
#'     [`copy_db_snapshot`][rds_copy_db_snapshot] action in the us-west-2
#'     AWS Region. For this example, the `DestinationRegion` in the
#'     presigned URL must be set to the us-east-1 AWS Region.
#' 
#' -   `KmsKeyId` - The AWS KMS key identifier for the customer master key
#'     (CMK) to use to encrypt the copy of the DB snapshot in the
#'     destination AWS Region. This is the same identifier for both the
#'     [`copy_db_snapshot`][rds_copy_db_snapshot] action that is called in
#'     the destination AWS Region, and the action contained in the
#'     presigned URL.
#' 
#' -   `SourceDBSnapshotIdentifier` - The DB snapshot identifier for the
#'     encrypted snapshot to be copied. This identifier must be in the
#'     Amazon Resource Name (ARN) format for the source AWS Region. For
#'     example, if you are copying an encrypted DB snapshot from the
#'     us-west-2 AWS Region, then your `SourceDBSnapshotIdentifier` looks
#'     like the following example:
#'     `arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115`.
#' 
#' To learn how to generate a Signature Version 4 signed request, see
#' [Authenticating Requests: Using Query Parameters (AWS Signature Version
#' 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
#' and [Signature Version 4 Signing
#' Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
#' 
#' If you are using an AWS SDK tool or the AWS CLI, you can specify
#' `SourceRegion` (or `--source-region` for the AWS CLI) instead of
#' specifying `PreSignedUrl` manually. Specifying `SourceRegion`
#' autogenerates a pre-signed URL that is a valid request for the operation
#' that can be executed in the source AWS Region.
#' 
#' If you supply a value for this operation's `SourceRegion` parameter, a
#' pre-signed URL will be calculated on your behalf.
#' @param OptionGroupName The name of an option group to associate with the copy of the snapshot.
#' 
#' Specify this option if you are copying a snapshot from one AWS Region to
#' another, and your DB instance uses a nondefault option group. If your
#' source DB instance uses Transparent Data Encryption for Oracle or
#' Microsoft SQL Server, you must specify this option when copying across
#' AWS Regions. For more information, see [Option group
#' considerations](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html#USER_CopySnapshot.Options)
#' in the *Amazon RDS User Guide.*
#' @param TargetCustomAvailabilityZone The external custom Availability Zone (CAZ) identifier for the target
#' CAZ.
#' 
#' Example: `rds-caz-aiqhTgQv`.
#' @param SourceRegion The ID of the region that contains the snapshot to be copied.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSnapshot = list(
#'     DBSnapshotIdentifier = "string",
#'     DBInstanceIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     AvailabilityZone = "string",
#'     VpcId = "string",
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     Iops = 123,
#'     OptionGroupName = "string",
#'     PercentProgress = 123,
#'     SourceRegion = "string",
#'     SourceDBSnapshotIdentifier = "string",
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     Encrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBSnapshotArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DbiResourceId = "string",
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$copy_db_snapshot(
#'   SourceDBSnapshotIdentifier = "string",
#'   TargetDBSnapshotIdentifier = "string",
#'   KmsKeyId = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   CopyTags = TRUE|FALSE,
#'   PreSignedUrl = "string",
#'   OptionGroupName = "string",
#'   TargetCustomAvailabilityZone = "string",
#'   SourceRegion = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_copy_db_snapshot
rds_copy_db_snapshot <- function(SourceDBSnapshotIdentifier, TargetDBSnapshotIdentifier, KmsKeyId = NULL, Tags = NULL, CopyTags = NULL, PreSignedUrl = NULL, OptionGroupName = NULL, TargetCustomAvailabilityZone = NULL, SourceRegion = NULL) {
  op <- new_operation(
    name = "CopyDBSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$copy_db_snapshot_input(SourceDBSnapshotIdentifier = SourceDBSnapshotIdentifier, TargetDBSnapshotIdentifier = TargetDBSnapshotIdentifier, KmsKeyId = KmsKeyId, Tags = Tags, CopyTags = CopyTags, PreSignedUrl = PreSignedUrl, OptionGroupName = OptionGroupName, TargetCustomAvailabilityZone = TargetCustomAvailabilityZone, SourceRegion = SourceRegion)
  output <- .rds$copy_db_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$copy_db_snapshot <- rds_copy_db_snapshot

#' Copies the specified option group
#'
#' @description
#' Copies the specified option group.
#'
#' @usage
#' rds_copy_option_group(SourceOptionGroupIdentifier,
#'   TargetOptionGroupIdentifier, TargetOptionGroupDescription, Tags)
#'
#' @param SourceOptionGroupIdentifier &#91;required&#93; The identifier for the source option group.
#' 
#' Constraints:
#' 
#' -   Must specify a valid option group.
#' @param TargetOptionGroupIdentifier &#91;required&#93; The identifier for the copied option group.
#' 
#' Constraints:
#' 
#' -   Can't be null, empty, or blank
#' 
#' -   Must contain from 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `my-option-group`
#' @param TargetOptionGroupDescription &#91;required&#93; The description for the copied option group.
#' @param Tags 
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OptionGroup = list(
#'     OptionGroupName = "string",
#'     OptionGroupDescription = "string",
#'     EngineName = "string",
#'     MajorEngineVersion = "string",
#'     Options = list(
#'       list(
#'         OptionName = "string",
#'         OptionDescription = "string",
#'         Persistent = TRUE|FALSE,
#'         Permanent = TRUE|FALSE,
#'         Port = 123,
#'         OptionVersion = "string",
#'         OptionSettings = list(
#'           list(
#'             Name = "string",
#'             Value = "string",
#'             DefaultValue = "string",
#'             Description = "string",
#'             ApplyType = "string",
#'             DataType = "string",
#'             AllowedValues = "string",
#'             IsModifiable = TRUE|FALSE,
#'             IsCollection = TRUE|FALSE
#'           )
#'         ),
#'         DBSecurityGroupMemberships = list(
#'           list(
#'             DBSecurityGroupName = "string",
#'             Status = "string"
#'           )
#'         ),
#'         VpcSecurityGroupMemberships = list(
#'           list(
#'             VpcSecurityGroupId = "string",
#'             Status = "string"
#'           )
#'         )
#'       )
#'     ),
#'     AllowsVpcAndNonVpcInstanceMemberships = TRUE|FALSE,
#'     VpcId = "string",
#'     OptionGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$copy_option_group(
#'   SourceOptionGroupIdentifier = "string",
#'   TargetOptionGroupIdentifier = "string",
#'   TargetOptionGroupDescription = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_copy_option_group
rds_copy_option_group <- function(SourceOptionGroupIdentifier, TargetOptionGroupIdentifier, TargetOptionGroupDescription, Tags = NULL) {
  op <- new_operation(
    name = "CopyOptionGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$copy_option_group_input(SourceOptionGroupIdentifier = SourceOptionGroupIdentifier, TargetOptionGroupIdentifier = TargetOptionGroupIdentifier, TargetOptionGroupDescription = TargetOptionGroupDescription, Tags = Tags)
  output <- .rds$copy_option_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$copy_option_group <- rds_copy_option_group

#' Creates a custom Availability Zone (AZ)
#'
#' @description
#' Creates a custom Availability Zone (AZ).
#' 
#' A custom AZ is an on-premises AZ that is integrated with a VMware
#' vSphere cluster.
#' 
#' For more information about RDS on VMware, see the [RDS on VMware User
#' Guide.](https://docs.aws.amazon.com/AmazonRDS/latest/RDSonVMwareUserGuide/rds-on-vmware.html)
#'
#' @usage
#' rds_create_custom_availability_zone(CustomAvailabilityZoneName,
#'   ExistingVpnId, NewVpnTunnelName, VpnTunnelOriginatorIP)
#'
#' @param CustomAvailabilityZoneName &#91;required&#93; The name of the custom Availability Zone (AZ).
#' @param ExistingVpnId The ID of an existing virtual private network (VPN) between the Amazon
#' RDS website and the VMware vSphere cluster.
#' @param NewVpnTunnelName The name of a new VPN tunnel between the Amazon RDS website and the
#' VMware vSphere cluster.
#' 
#' Specify this parameter only if `ExistingVpnId` isn't specified.
#' @param VpnTunnelOriginatorIP The IP address of network traffic from your on-premises data center. A
#' custom AZ receives the network traffic.
#' 
#' Specify this parameter only if `ExistingVpnId` isn't specified.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   CustomAvailabilityZone = list(
#'     CustomAvailabilityZoneId = "string",
#'     CustomAvailabilityZoneName = "string",
#'     CustomAvailabilityZoneStatus = "string",
#'     VpnDetails = list(
#'       VpnId = "string",
#'       VpnTunnelOriginatorIP = "string",
#'       VpnGatewayIp = "string",
#'       VpnPSK = "string",
#'       VpnName = "string",
#'       VpnState = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_custom_availability_zone(
#'   CustomAvailabilityZoneName = "string",
#'   ExistingVpnId = "string",
#'   NewVpnTunnelName = "string",
#'   VpnTunnelOriginatorIP = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_custom_availability_zone
rds_create_custom_availability_zone <- function(CustomAvailabilityZoneName, ExistingVpnId = NULL, NewVpnTunnelName = NULL, VpnTunnelOriginatorIP = NULL) {
  op <- new_operation(
    name = "CreateCustomAvailabilityZone",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_custom_availability_zone_input(CustomAvailabilityZoneName = CustomAvailabilityZoneName, ExistingVpnId = ExistingVpnId, NewVpnTunnelName = NewVpnTunnelName, VpnTunnelOriginatorIP = VpnTunnelOriginatorIP)
  output <- .rds$create_custom_availability_zone_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_custom_availability_zone <- rds_create_custom_availability_zone

#' Creates a new Amazon Aurora DB cluster
#'
#' @description
#' Creates a new Amazon Aurora DB cluster.
#' 
#' You can use the `ReplicationSourceIdentifier` parameter to create the DB
#' cluster as a read replica of another DB cluster or Amazon RDS MySQL DB
#' instance. For cross-region replication where the DB cluster identified
#' by `ReplicationSourceIdentifier` is encrypted, you must also specify the
#' `PreSignedUrl` parameter.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_create_db_cluster(AvailabilityZones, BackupRetentionPeriod,
#'   CharacterSetName, DatabaseName, DBClusterIdentifier,
#'   DBClusterParameterGroupName, VpcSecurityGroupIds, DBSubnetGroupName,
#'   Engine, EngineVersion, Port, MasterUsername, MasterUserPassword,
#'   OptionGroupName, PreferredBackupWindow, PreferredMaintenanceWindow,
#'   ReplicationSourceIdentifier, Tags, StorageEncrypted, KmsKeyId,
#'   PreSignedUrl, EnableIAMDatabaseAuthentication, BacktrackWindow,
#'   EnableCloudwatchLogsExports, EngineMode, ScalingConfiguration,
#'   DeletionProtection, GlobalClusterIdentifier, EnableHttpEndpoint,
#'   CopyTagsToSnapshot, Domain, DomainIAMRoleName,
#'   EnableGlobalWriteForwarding, SourceRegion)
#'
#' @param AvailabilityZones A list of Availability Zones (AZs) where instances in the DB cluster can
#' be created. For information on AWS Regions and Availability Zones, see
#' [Choosing the Regions and Availability
#' Zones](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html)
#' in the *Amazon Aurora User Guide*.
#' @param BackupRetentionPeriod The number of days for which automated backups are retained.
#' 
#' Default: 1
#' 
#' Constraints:
#' 
#' -   Must be a value from 1 to 35
#' @param CharacterSetName A value that indicates that the DB cluster should be associated with the
#' specified CharacterSet.
#' @param DatabaseName The name for your database of up to 64 alphanumeric characters. If you
#' do not provide a name, Amazon RDS doesn't create a database in the DB
#' cluster you are creating.
#' @param DBClusterIdentifier &#91;required&#93; The DB cluster identifier. This parameter is stored as a lowercase
#' string.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `my-cluster1`
#' @param DBClusterParameterGroupName The name of the DB cluster parameter group to associate with this DB
#' cluster. If you do not specify a value, then the default DB cluster
#' parameter group for the specified DB engine and version is used.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the name of an existing DB cluster parameter
#'     group.
#' @param VpcSecurityGroupIds A list of EC2 VPC security groups to associate with this DB cluster.
#' @param DBSubnetGroupName A DB subnet group to associate with this DB cluster.
#' 
#' Constraints: Must match the name of an existing DBSubnetGroup. Must not
#' be default.
#' 
#' Example: `mySubnetgroup`
#' @param Engine &#91;required&#93; The name of the database engine to be used for this DB cluster.
#' 
#' Valid Values: `aurora` (for MySQL 5.6-compatible Aurora), `aurora-mysql`
#' (for MySQL 5.7-compatible Aurora), and `aurora-postgresql`
#' @param EngineVersion The version number of the database engine to use.
#' 
#' To list all of the available engine versions for `aurora` (for MySQL
#' 5.6-compatible Aurora), use the following command:
#' 
#' `aws rds describe-db-engine-versions --engine aurora --query "DBEngineVersions[].EngineVersion"`
#' 
#' To list all of the available engine versions for `aurora-mysql` (for
#' MySQL 5.7-compatible Aurora), use the following command:
#' 
#' `aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"`
#' 
#' To list all of the available engine versions for `aurora-postgresql`,
#' use the following command:
#' 
#' `aws rds describe-db-engine-versions --engine aurora-postgresql --query "DBEngineVersions[].EngineVersion"`
#' 
#' **Aurora MySQL**
#' 
#' Example: `5.6.10a`, `5.6.mysql_aurora.1.19.2`, `5.7.12`,
#' `5.7.mysql_aurora.2.04.5`
#' 
#' **Aurora PostgreSQL**
#' 
#' Example: `9.6.3`, `10.7`
#' @param Port The port number on which the instances in the DB cluster accept
#' connections.
#' 
#' Default: `3306` if engine is set as aurora or `5432` if set to
#' aurora-postgresql.
#' @param MasterUsername The name of the master user for the DB cluster.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 16 letters or numbers.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' @param MasterUserPassword The password for the master database user. This password can contain any
#' printable ASCII character except "/", """, or "@@".
#' 
#' Constraints: Must contain from 8 to 41 characters.
#' @param OptionGroupName A value that indicates that the DB cluster should be associated with the
#' specified option group.
#' 
#' Permanent options can't be removed from an option group. The option
#' group can't be removed from a DB cluster once it is associated with a DB
#' cluster.
#' @param PreferredBackupWindow The daily time range during which automated backups are created if
#' automated backups are enabled using the `BackupRetentionPeriod`
#' parameter.
#' 
#' The default is a 30-minute window selected at random from an 8-hour
#' block of time for each AWS Region. To see the time blocks available, see
#' [Adjusting the Preferred DB Cluster Maintenance
#' Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora)
#' in the *Amazon Aurora User Guide.*
#' 
#' Constraints:
#' 
#' -   Must be in the format `hh24:mi-hh24:mi`.
#' 
#' -   Must be in Universal Coordinated Time (UTC).
#' 
#' -   Must not conflict with the preferred maintenance window.
#' 
#' -   Must be at least 30 minutes.
#' @param PreferredMaintenanceWindow The weekly time range during which system maintenance can occur, in
#' Universal Coordinated Time (UTC).
#' 
#' Format: `ddd:hh24:mi-ddd:hh24:mi`
#' 
#' The default is a 30-minute window selected at random from an 8-hour
#' block of time for each AWS Region, occurring on a random day of the
#' week. To see the time blocks available, see [Adjusting the Preferred DB
#' Cluster Maintenance
#' Window](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora)
#' in the *Amazon Aurora User Guide.*
#' 
#' Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
#' 
#' Constraints: Minimum 30-minute window.
#' @param ReplicationSourceIdentifier The Amazon Resource Name (ARN) of the source DB instance or DB cluster
#' if this DB cluster is created as a read replica.
#' @param Tags Tags to assign to the DB cluster.
#' @param StorageEncrypted A value that indicates whether the DB cluster is encrypted.
#' @param KmsKeyId The AWS KMS key identifier for an encrypted DB cluster.
#' 
#' The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias
#' name for the AWS KMS customer master key (CMK). To use a CMK in a
#' different AWS account, specify the key ARN or alias ARN.
#' 
#' When a CMK isn't specified in `KmsKeyId`:
#' 
#' -   If `ReplicationSourceIdentifier` identifies an encrypted source,
#'     then Amazon RDS will use the CMK used to encrypt the source.
#'     Otherwise, Amazon RDS will use your default CMK.
#' 
#' -   If the `StorageEncrypted` parameter is enabled and
#'     `ReplicationSourceIdentifier` isn't specified, then Amazon RDS will
#'     use your default CMK.
#' 
#' There is a default CMK for your AWS account. Your AWS account has a
#' different default CMK for each AWS Region.
#' 
#' If you create a read replica of an encrypted DB cluster in another AWS
#' Region, you must set `KmsKeyId` to a AWS KMS key identifier that is
#' valid in the destination AWS Region. This CMK is used to encrypt the
#' read replica in that AWS Region.
#' @param PreSignedUrl A URL that contains a Signature Version 4 signed request for the
#' [`create_db_cluster`][rds_create_db_cluster] action to be called in the
#' source AWS Region where the DB cluster is replicated from. You only need
#' to specify `PreSignedUrl` when you are performing cross-region
#' replication from an encrypted DB cluster.
#' 
#' The pre-signed URL must be a valid request for the
#' [`create_db_cluster`][rds_create_db_cluster] API action that can be
#' executed in the source AWS Region that contains the encrypted DB cluster
#' to be copied.
#' 
#' The pre-signed URL request must contain the following parameter values:
#' 
#' -   `KmsKeyId` - The AWS KMS key identifier for the key to use to
#'     encrypt the copy of the DB cluster in the destination AWS Region.
#'     This should refer to the same AWS KMS CMK for both the
#'     [`create_db_cluster`][rds_create_db_cluster] action that is called
#'     in the destination AWS Region, and the action contained in the
#'     pre-signed URL.
#' 
#' -   `DestinationRegion` - The name of the AWS Region that Aurora read
#'     replica will be created in.
#' 
#' -   `ReplicationSourceIdentifier` - The DB cluster identifier for the
#'     encrypted DB cluster to be copied. This identifier must be in the
#'     Amazon Resource Name (ARN) format for the source AWS Region. For
#'     example, if you are copying an encrypted DB cluster from the
#'     us-west-2 AWS Region, then your `ReplicationSourceIdentifier` would
#'     look like Example:
#'     `arn:aws:rds:us-west-2:123456789012:cluster:aurora-cluster1`.
#' 
#' To learn how to generate a Signature Version 4 signed request, see
#' [Authenticating Requests: Using Query Parameters (AWS Signature Version
#' 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
#' and [Signature Version 4 Signing
#' Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
#' 
#' If you are using an AWS SDK tool or the AWS CLI, you can specify
#' `SourceRegion` (or `--source-region` for the AWS CLI) instead of
#' specifying `PreSignedUrl` manually. Specifying `SourceRegion`
#' autogenerates a pre-signed URL that is a valid request for the operation
#' that can be executed in the source AWS Region.
#' 
#' If you supply a value for this operation's `SourceRegion` parameter, a
#' pre-signed URL will be calculated on your behalf.
#' @param EnableIAMDatabaseAuthentication A value that indicates whether to enable mapping of AWS Identity and
#' Access Management (IAM) accounts to database accounts. By default,
#' mapping is disabled.
#' 
#' For more information, see [IAM Database
#' Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
#' in the *Amazon Aurora User Guide.*
#' @param BacktrackWindow The target backtrack window, in seconds. To disable backtracking, set
#' this value to 0.
#' 
#' Currently, Backtrack is only supported for Aurora MySQL DB clusters.
#' 
#' Default: 0
#' 
#' Constraints:
#' 
#' -   If specified, this value must be set to a number from 0 to 259,200
#'     (72 hours).
#' @param EnableCloudwatchLogsExports The list of log types that need to be enabled for exporting to
#' CloudWatch Logs. The values in the list depend on the DB engine being
#' used. For more information, see [Publishing Database Logs to Amazon
#' CloudWatch
#' Logs](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
#' in the *Amazon Aurora User Guide*.
#' 
#' **Aurora MySQL**
#' 
#' Possible values are `audit`, `error`, `general`, and `slowquery`.
#' 
#' **Aurora PostgreSQL**
#' 
#' Possible values are `postgresql` and `upgrade`.
#' @param EngineMode The DB engine mode of the DB cluster, either `provisioned` `serverless`,
#' `parallelquery`, `global`, or `multimaster`.
#' 
#' The `parallelquery` engine mode isn't required for Aurora MySQL version
#' 1.23 and higher 1.x versions, and version 2.09 and higher 2.x versions.
#' 
#' The `global` engine mode isn't required for Aurora MySQL version 1.22
#' and higher 1.x versions, and `global` engine mode isn't required for any
#' 2.x versions.
#' 
#' The `multimaster` engine mode only applies for DB clusters created with
#' Aurora MySQL version 5.6.10a.
#' 
#' For Aurora PostgreSQL, the `global` engine mode isn't required, and both
#' the `parallelquery` and the `multimaster` engine modes currently aren't
#' supported.
#' 
#' Limitations and requirements apply to some DB engine modes. For more
#' information, see the following sections in the *Amazon Aurora User
#' Guide*:
#' 
#' -   [Limitations of Aurora
#'     Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations)
#' 
#' -   [Limitations of Parallel
#'     Query](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-mysql-parallel-query.html#aurora-mysql-parallel-query-limitations)
#' 
#' -   [Limitations of Aurora Global
#'     Databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database.limitations)
#' 
#' -   [Limitations of Multi-Master
#'     Clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-multi-master.html#aurora-multi-master-limitations)
#' @param ScalingConfiguration For DB clusters in `serverless` DB engine mode, the scaling properties
#' of the DB cluster.
#' @param DeletionProtection A value that indicates whether the DB cluster has deletion protection
#' enabled. The database can't be deleted when deletion protection is
#' enabled. By default, deletion protection is disabled.
#' @param GlobalClusterIdentifier The global cluster ID of an Aurora cluster that becomes the primary
#' cluster in the new global database cluster.
#' @param EnableHttpEndpoint A value that indicates whether to enable the HTTP endpoint for an Aurora
#' Serverless DB cluster. By default, the HTTP endpoint is disabled.
#' 
#' When enabled, the HTTP endpoint provides a connectionless web service
#' API for running SQL queries on the Aurora Serverless DB cluster. You can
#' also query your database from inside the RDS console with the query
#' editor.
#' 
#' For more information, see [Using the Data API for Aurora
#' Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
#' in the *Amazon Aurora User Guide*.
#' @param CopyTagsToSnapshot A value that indicates whether to copy all tags from the DB cluster to
#' snapshots of the DB cluster. The default is not to copy them.
#' @param Domain The Active Directory directory ID to create the DB cluster in.
#' 
#' For Amazon Aurora DB clusters, Amazon RDS can use Kerberos
#' Authentication to authenticate users that connect to the DB cluster. For
#' more information, see [Kerberos
#' Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/database-authentication.html)
#' in the *Amazon Aurora User Guide*.
#' @param DomainIAMRoleName Specify the name of the IAM role to be used when making API calls to the
#' Directory Service.
#' @param EnableGlobalWriteForwarding A value that indicates whether to enable write operations to be
#' forwarded from this cluster to the primary cluster in an Aurora global
#' database. The resulting changes are replicated back to this cluster.
#' This parameter only applies to DB clusters that are secondary clusters
#' in an Aurora global database. By default, Aurora disallows write
#' operations for secondary clusters.
#' @param SourceRegion The ID of the region that contains the source for the read replica.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBCluster = list(
#'     AllocatedStorage = 123,
#'     AvailabilityZones = list(
#'       "string"
#'     ),
#'     BackupRetentionPeriod = 123,
#'     CharacterSetName = "string",
#'     DatabaseName = "string",
#'     DBClusterIdentifier = "string",
#'     DBClusterParameterGroup = "string",
#'     DBSubnetGroup = "string",
#'     Status = "string",
#'     PercentProgress = "string",
#'     EarliestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Endpoint = "string",
#'     ReaderEndpoint = "string",
#'     CustomEndpoints = list(
#'       "string"
#'     ),
#'     MultiAZ = TRUE|FALSE,
#'     Engine = "string",
#'     EngineVersion = "string",
#'     LatestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Port = 123,
#'     MasterUsername = "string",
#'     DBClusterOptionGroupMemberships = list(
#'       list(
#'         DBClusterOptionGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     PreferredBackupWindow = "string",
#'     PreferredMaintenanceWindow = "string",
#'     ReplicationSourceIdentifier = "string",
#'     ReadReplicaIdentifiers = list(
#'       "string"
#'     ),
#'     DBClusterMembers = list(
#'       list(
#'         DBInstanceIdentifier = "string",
#'         IsClusterWriter = TRUE|FALSE,
#'         DBClusterParameterGroupStatus = "string",
#'         PromotionTier = 123
#'       )
#'     ),
#'     VpcSecurityGroups = list(
#'       list(
#'         VpcSecurityGroupId = "string",
#'         Status = "string"
#'       )
#'     ),
#'     HostedZoneId = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DbClusterResourceId = "string",
#'     DBClusterArn = "string",
#'     AssociatedRoles = list(
#'       list(
#'         RoleArn = "string",
#'         Status = "string",
#'         FeatureName = "string"
#'       )
#'     ),
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     CloneGroupId = "string",
#'     ClusterCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     EarliestBacktrackTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     BacktrackWindow = 123,
#'     BacktrackConsumedChangeRecords = 123,
#'     EnabledCloudwatchLogsExports = list(
#'       "string"
#'     ),
#'     Capacity = 123,
#'     EngineMode = "string",
#'     ScalingConfigurationInfo = list(
#'       MinCapacity = 123,
#'       MaxCapacity = 123,
#'       AutoPause = TRUE|FALSE,
#'       SecondsUntilAutoPause = 123,
#'       TimeoutAction = "string"
#'     ),
#'     DeletionProtection = TRUE|FALSE,
#'     HttpEndpointEnabled = TRUE|FALSE,
#'     ActivityStreamMode = "sync"|"async",
#'     ActivityStreamStatus = "stopped"|"starting"|"started"|"stopping",
#'     ActivityStreamKmsKeyId = "string",
#'     ActivityStreamKinesisStreamName = "string",
#'     CopyTagsToSnapshot = TRUE|FALSE,
#'     CrossAccountClone = TRUE|FALSE,
#'     DomainMemberships = list(
#'       list(
#'         Domain = "string",
#'         Status = "string",
#'         FQDN = "string",
#'         IAMRoleName = "string"
#'       )
#'     ),
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     GlobalWriteForwardingStatus = "enabled"|"disabled"|"enabling"|"disabling"|"unknown",
#'     GlobalWriteForwardingRequested = TRUE|FALSE,
#'     PendingModifiedValues = list(
#'       PendingCloudwatchLogsExports = list(
#'         LogTypesToEnable = list(
#'           "string"
#'         ),
#'         LogTypesToDisable = list(
#'           "string"
#'         )
#'       ),
#'       DBClusterIdentifier = "string",
#'       MasterUserPassword = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       EngineVersion = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_cluster(
#'   AvailabilityZones = list(
#'     "string"
#'   ),
#'   BackupRetentionPeriod = 123,
#'   CharacterSetName = "string",
#'   DatabaseName = "string",
#'   DBClusterIdentifier = "string",
#'   DBClusterParameterGroupName = "string",
#'   VpcSecurityGroupIds = list(
#'     "string"
#'   ),
#'   DBSubnetGroupName = "string",
#'   Engine = "string",
#'   EngineVersion = "string",
#'   Port = 123,
#'   MasterUsername = "string",
#'   MasterUserPassword = "string",
#'   OptionGroupName = "string",
#'   PreferredBackupWindow = "string",
#'   PreferredMaintenanceWindow = "string",
#'   ReplicationSourceIdentifier = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   StorageEncrypted = TRUE|FALSE,
#'   KmsKeyId = "string",
#'   PreSignedUrl = "string",
#'   EnableIAMDatabaseAuthentication = TRUE|FALSE,
#'   BacktrackWindow = 123,
#'   EnableCloudwatchLogsExports = list(
#'     "string"
#'   ),
#'   EngineMode = "string",
#'   ScalingConfiguration = list(
#'     MinCapacity = 123,
#'     MaxCapacity = 123,
#'     AutoPause = TRUE|FALSE,
#'     SecondsUntilAutoPause = 123,
#'     TimeoutAction = "string"
#'   ),
#'   DeletionProtection = TRUE|FALSE,
#'   GlobalClusterIdentifier = "string",
#'   EnableHttpEndpoint = TRUE|FALSE,
#'   CopyTagsToSnapshot = TRUE|FALSE,
#'   Domain = "string",
#'   DomainIAMRoleName = "string",
#'   EnableGlobalWriteForwarding = TRUE|FALSE,
#'   SourceRegion = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_cluster
rds_create_db_cluster <- function(AvailabilityZones = NULL, BackupRetentionPeriod = NULL, CharacterSetName = NULL, DatabaseName = NULL, DBClusterIdentifier, DBClusterParameterGroupName = NULL, VpcSecurityGroupIds = NULL, DBSubnetGroupName = NULL, Engine, EngineVersion = NULL, Port = NULL, MasterUsername = NULL, MasterUserPassword = NULL, OptionGroupName = NULL, PreferredBackupWindow = NULL, PreferredMaintenanceWindow = NULL, ReplicationSourceIdentifier = NULL, Tags = NULL, StorageEncrypted = NULL, KmsKeyId = NULL, PreSignedUrl = NULL, EnableIAMDatabaseAuthentication = NULL, BacktrackWindow = NULL, EnableCloudwatchLogsExports = NULL, EngineMode = NULL, ScalingConfiguration = NULL, DeletionProtection = NULL, GlobalClusterIdentifier = NULL, EnableHttpEndpoint = NULL, CopyTagsToSnapshot = NULL, Domain = NULL, DomainIAMRoleName = NULL, EnableGlobalWriteForwarding = NULL, SourceRegion = NULL) {
  op <- new_operation(
    name = "CreateDBCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_cluster_input(AvailabilityZones = AvailabilityZones, BackupRetentionPeriod = BackupRetentionPeriod, CharacterSetName = CharacterSetName, DatabaseName = DatabaseName, DBClusterIdentifier = DBClusterIdentifier, DBClusterParameterGroupName = DBClusterParameterGroupName, VpcSecurityGroupIds = VpcSecurityGroupIds, DBSubnetGroupName = DBSubnetGroupName, Engine = Engine, EngineVersion = EngineVersion, Port = Port, MasterUsername = MasterUsername, MasterUserPassword = MasterUserPassword, OptionGroupName = OptionGroupName, PreferredBackupWindow = PreferredBackupWindow, PreferredMaintenanceWindow = PreferredMaintenanceWindow, ReplicationSourceIdentifier = ReplicationSourceIdentifier, Tags = Tags, StorageEncrypted = StorageEncrypted, KmsKeyId = KmsKeyId, PreSignedUrl = PreSignedUrl, EnableIAMDatabaseAuthentication = EnableIAMDatabaseAuthentication, BacktrackWindow = BacktrackWindow, EnableCloudwatchLogsExports = EnableCloudwatchLogsExports, EngineMode = EngineMode, ScalingConfiguration = ScalingConfiguration, DeletionProtection = DeletionProtection, GlobalClusterIdentifier = GlobalClusterIdentifier, EnableHttpEndpoint = EnableHttpEndpoint, CopyTagsToSnapshot = CopyTagsToSnapshot, Domain = Domain, DomainIAMRoleName = DomainIAMRoleName, EnableGlobalWriteForwarding = EnableGlobalWriteForwarding, SourceRegion = SourceRegion)
  output <- .rds$create_db_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_cluster <- rds_create_db_cluster

#' Creates a new custom endpoint and associates it with an Amazon Aurora DB
#' cluster
#'
#' @description
#' Creates a new custom endpoint and associates it with an Amazon Aurora DB
#' cluster.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_create_db_cluster_endpoint(DBClusterIdentifier,
#'   DBClusterEndpointIdentifier, EndpointType, StaticMembers,
#'   ExcludedMembers, Tags)
#'
#' @param DBClusterIdentifier &#91;required&#93; The DB cluster identifier of the DB cluster associated with the
#' endpoint. This parameter is stored as a lowercase string.
#' @param DBClusterEndpointIdentifier &#91;required&#93; The identifier to use for the new endpoint. This parameter is stored as
#' a lowercase string.
#' @param EndpointType &#91;required&#93; The type of the endpoint. One of: `READER`, `WRITER`, `ANY`.
#' @param StaticMembers List of DB instance identifiers that are part of the custom endpoint
#' group.
#' @param ExcludedMembers List of DB instance identifiers that aren't part of the custom endpoint
#' group. All other eligible instances are reachable through the custom
#' endpoint. Only relevant if the list of static members is empty.
#' @param Tags The tags to be assigned to the Amazon RDS resource.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterEndpointIdentifier = "string",
#'   DBClusterIdentifier = "string",
#'   DBClusterEndpointResourceIdentifier = "string",
#'   Endpoint = "string",
#'   Status = "string",
#'   EndpointType = "string",
#'   CustomEndpointType = "string",
#'   StaticMembers = list(
#'     "string"
#'   ),
#'   ExcludedMembers = list(
#'     "string"
#'   ),
#'   DBClusterEndpointArn = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_cluster_endpoint(
#'   DBClusterIdentifier = "string",
#'   DBClusterEndpointIdentifier = "string",
#'   EndpointType = "string",
#'   StaticMembers = list(
#'     "string"
#'   ),
#'   ExcludedMembers = list(
#'     "string"
#'   ),
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_cluster_endpoint
rds_create_db_cluster_endpoint <- function(DBClusterIdentifier, DBClusterEndpointIdentifier, EndpointType, StaticMembers = NULL, ExcludedMembers = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBClusterEndpoint",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_cluster_endpoint_input(DBClusterIdentifier = DBClusterIdentifier, DBClusterEndpointIdentifier = DBClusterEndpointIdentifier, EndpointType = EndpointType, StaticMembers = StaticMembers, ExcludedMembers = ExcludedMembers, Tags = Tags)
  output <- .rds$create_db_cluster_endpoint_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_cluster_endpoint <- rds_create_db_cluster_endpoint

#' Creates a new DB cluster parameter group
#'
#' @description
#' Creates a new DB cluster parameter group.
#' 
#' Parameters in a DB cluster parameter group apply to all of the instances
#' in a DB cluster.
#' 
#' A DB cluster parameter group is initially created with the default
#' parameters for the database engine used by instances in the DB cluster.
#' To provide custom values for any of the parameters, you must modify the
#' group after creating it using
#' [`modify_db_cluster_parameter_group`][rds_modify_db_cluster_parameter_group].
#' Once you've created a DB cluster parameter group, you need to associate
#' it with your DB cluster using
#' [`modify_db_cluster`][rds_modify_db_cluster]. When you associate a new
#' DB cluster parameter group with a running DB cluster, you need to reboot
#' the DB instances in the DB cluster without failover for the new DB
#' cluster parameter group and associated settings to take effect.
#' 
#' After you create a DB cluster parameter group, you should wait at least
#' 5 minutes before creating your first DB cluster that uses that DB
#' cluster parameter group as the default parameter group. This allows
#' Amazon RDS to fully complete the create action before the DB cluster
#' parameter group is used as the default for a new DB cluster. This is
#' especially important for parameters that are critical when creating the
#' default database for a DB cluster, such as the character set for the
#' default database defined by the `character_set_database` parameter. You
#' can use the *Parameter Groups* option of the Amazon RDS console or the
#' [`describe_db_cluster_parameters`][rds_describe_db_cluster_parameters]
#' action to verify that your DB cluster parameter group has been created
#' or modified.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_create_db_cluster_parameter_group(DBClusterParameterGroupName,
#'   DBParameterGroupFamily, Description, Tags)
#'
#' @param DBClusterParameterGroupName &#91;required&#93; The name of the DB cluster parameter group.
#' 
#' Constraints:
#' 
#' -   Must match the name of an existing DB cluster parameter group.
#' 
#' This value is stored as a lowercase string.
#' @param DBParameterGroupFamily &#91;required&#93; The DB cluster parameter group family name. A DB cluster parameter group
#' can be associated with one and only one DB cluster parameter group
#' family, and can be applied only to a DB cluster running a database
#' engine and engine version compatible with that DB cluster parameter
#' group family.
#' 
#' **Aurora MySQL**
#' 
#' Example: `aurora5.6`, `aurora-mysql5.7`
#' 
#' **Aurora PostgreSQL**
#' 
#' Example: `aurora-postgresql9.6`
#' @param Description &#91;required&#93; The description for the DB cluster parameter group.
#' @param Tags Tags to assign to the DB cluster parameter group.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterParameterGroup = list(
#'     DBClusterParameterGroupName = "string",
#'     DBParameterGroupFamily = "string",
#'     Description = "string",
#'     DBClusterParameterGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_cluster_parameter_group(
#'   DBClusterParameterGroupName = "string",
#'   DBParameterGroupFamily = "string",
#'   Description = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_cluster_parameter_group
rds_create_db_cluster_parameter_group <- function(DBClusterParameterGroupName, DBParameterGroupFamily, Description, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBClusterParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_cluster_parameter_group_input(DBClusterParameterGroupName = DBClusterParameterGroupName, DBParameterGroupFamily = DBParameterGroupFamily, Description = Description, Tags = Tags)
  output <- .rds$create_db_cluster_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_cluster_parameter_group <- rds_create_db_cluster_parameter_group

#' Creates a snapshot of a DB cluster
#'
#' @description
#' Creates a snapshot of a DB cluster. For more information on Amazon
#' Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_create_db_cluster_snapshot(DBClusterSnapshotIdentifier,
#'   DBClusterIdentifier, Tags)
#'
#' @param DBClusterSnapshotIdentifier &#91;required&#93; The identifier of the DB cluster snapshot. This parameter is stored as a
#' lowercase string.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `my-cluster1-snapshot1`
#' @param DBClusterIdentifier &#91;required&#93; The identifier of the DB cluster to create a snapshot for. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   Must match the identifier of an existing DBCluster.
#' 
#' Example: `my-cluster1`
#' @param Tags The tags to be assigned to the DB cluster snapshot.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterSnapshot = list(
#'     AvailabilityZones = list(
#'       "string"
#'     ),
#'     DBClusterSnapshotIdentifier = "string",
#'     DBClusterIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     VpcId = "string",
#'     ClusterCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     PercentProgress = 123,
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBClusterSnapshotArn = "string",
#'     SourceDBClusterSnapshotArn = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_cluster_snapshot(
#'   DBClusterSnapshotIdentifier = "string",
#'   DBClusterIdentifier = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_cluster_snapshot
rds_create_db_cluster_snapshot <- function(DBClusterSnapshotIdentifier, DBClusterIdentifier, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBClusterSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_cluster_snapshot_input(DBClusterSnapshotIdentifier = DBClusterSnapshotIdentifier, DBClusterIdentifier = DBClusterIdentifier, Tags = Tags)
  output <- .rds$create_db_cluster_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_cluster_snapshot <- rds_create_db_cluster_snapshot

#' Creates a new DB instance
#'
#' @description
#' Creates a new DB instance.
#'
#' @usage
#' rds_create_db_instance(DBName, DBInstanceIdentifier, AllocatedStorage,
#'   DBInstanceClass, Engine, MasterUsername, MasterUserPassword,
#'   DBSecurityGroups, VpcSecurityGroupIds, AvailabilityZone,
#'   DBSubnetGroupName, PreferredMaintenanceWindow, DBParameterGroupName,
#'   BackupRetentionPeriod, PreferredBackupWindow, Port, MultiAZ,
#'   EngineVersion, AutoMinorVersionUpgrade, LicenseModel, Iops,
#'   OptionGroupName, CharacterSetName, NcharCharacterSetName,
#'   PubliclyAccessible, Tags, DBClusterIdentifier, StorageType,
#'   TdeCredentialArn, TdeCredentialPassword, StorageEncrypted, KmsKeyId,
#'   Domain, CopyTagsToSnapshot, MonitoringInterval, MonitoringRoleArn,
#'   DomainIAMRoleName, PromotionTier, Timezone,
#'   EnableIAMDatabaseAuthentication, EnablePerformanceInsights,
#'   PerformanceInsightsKMSKeyId, PerformanceInsightsRetentionPeriod,
#'   EnableCloudwatchLogsExports, ProcessorFeatures, DeletionProtection,
#'   MaxAllocatedStorage, EnableCustomerOwnedIp)
#'
#' @param DBName The meaning of this parameter differs according to the database engine
#' you use.
#' 
#' **MySQL**
#' 
#' The name of the database to create when the DB instance is created. If
#' this parameter isn't specified, no database is created in the DB
#' instance.
#' 
#' Constraints:
#' 
#' -   Must contain 1 to 64 letters or numbers.
#' 
#' -   Must begin with a letter. Subsequent characters can be letters,
#'     underscores, or digits (0-9).
#' 
#' -   Can't be a word reserved by the specified database engine
#' 
#' **MariaDB**
#' 
#' The name of the database to create when the DB instance is created. If
#' this parameter isn't specified, no database is created in the DB
#' instance.
#' 
#' Constraints:
#' 
#' -   Must contain 1 to 64 letters or numbers.
#' 
#' -   Must begin with a letter. Subsequent characters can be letters,
#'     underscores, or digits (0-9).
#' 
#' -   Can't be a word reserved by the specified database engine
#' 
#' **PostgreSQL**
#' 
#' The name of the database to create when the DB instance is created. If
#' this parameter isn't specified, no database is created in the DB
#' instance.
#' 
#' Constraints:
#' 
#' -   Must contain 1 to 63 letters, numbers, or underscores.
#' 
#' -   Must begin with a letter. Subsequent characters can be letters,
#'     underscores, or digits (0-9).
#' 
#' -   Can't be a word reserved by the specified database engine
#' 
#' **Oracle**
#' 
#' The Oracle System ID (SID) of the created DB instance. If you specify
#' `null`, the default value `ORCL` is used. You can't specify the string
#' NULL, or any other reserved word, for `DBName`.
#' 
#' Default: `ORCL`
#' 
#' Constraints:
#' 
#' -   Can't be longer than 8 characters
#' 
#' **SQL Server**
#' 
#' Not applicable. Must be null.
#' 
#' **Amazon Aurora**
#' 
#' The name of the database to create when the primary instance of the DB
#' cluster is created. If this parameter isn't specified, no database is
#' created in the DB instance.
#' 
#' Constraints:
#' 
#' -   Must contain 1 to 64 letters or numbers.
#' 
#' -   Can't be a word reserved by the specified database engine
#' @param DBInstanceIdentifier &#91;required&#93; The DB instance identifier. This parameter is stored as a lowercase
#' string.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `mydbinstance`
#' @param AllocatedStorage The amount of storage (in gibibytes) to allocate for the DB instance.
#' 
#' Type: Integer
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. Aurora cluster volumes automatically grow as the amount
#' of data in your database increases, though you are only charged for the
#' space that you use in an Aurora cluster volume.
#' 
#' **MySQL**
#' 
#' Constraints to the amount of storage for each storage type are the
#' following:
#' 
#' -   General Purpose (SSD) storage (gp2): Must be an integer from 20
#'     to 65536.
#' 
#' -   Provisioned IOPS storage (io1): Must be an integer from 100
#'     to 65536.
#' 
#' -   Magnetic storage (standard): Must be an integer from 5 to 3072.
#' 
#' **MariaDB**
#' 
#' Constraints to the amount of storage for each storage type are the
#' following:
#' 
#' -   General Purpose (SSD) storage (gp2): Must be an integer from 20
#'     to 65536.
#' 
#' -   Provisioned IOPS storage (io1): Must be an integer from 100
#'     to 65536.
#' 
#' -   Magnetic storage (standard): Must be an integer from 5 to 3072.
#' 
#' **PostgreSQL**
#' 
#' Constraints to the amount of storage for each storage type are the
#' following:
#' 
#' -   General Purpose (SSD) storage (gp2): Must be an integer from 20
#'     to 65536.
#' 
#' -   Provisioned IOPS storage (io1): Must be an integer from 100
#'     to 65536.
#' 
#' -   Magnetic storage (standard): Must be an integer from 5 to 3072.
#' 
#' **Oracle**
#' 
#' Constraints to the amount of storage for each storage type are the
#' following:
#' 
#' -   General Purpose (SSD) storage (gp2): Must be an integer from 20
#'     to 65536.
#' 
#' -   Provisioned IOPS storage (io1): Must be an integer from 100
#'     to 65536.
#' 
#' -   Magnetic storage (standard): Must be an integer from 10 to 3072.
#' 
#' **SQL Server**
#' 
#' Constraints to the amount of storage for each storage type are the
#' following:
#' 
#' -   General Purpose (SSD) storage (gp2):
#' 
#'     -   Enterprise and Standard editions: Must be an integer from 200
#'         to 16384.
#' 
#'     -   Web and Express editions: Must be an integer from 20 to 16384.
#' 
#' -   Provisioned IOPS storage (io1):
#' 
#'     -   Enterprise and Standard editions: Must be an integer from 200
#'         to 16384.
#' 
#'     -   Web and Express editions: Must be an integer from 100 to 16384.
#' 
#' -   Magnetic storage (standard):
#' 
#'     -   Enterprise and Standard editions: Must be an integer from 200
#'         to 1024.
#' 
#'     -   Web and Express editions: Must be an integer from 20 to 1024.
#' @param DBInstanceClass &#91;required&#93; The compute and memory capacity of the DB instance, for example,
#' `db.m4.large`. Not all DB instance classes are available in all AWS
#' Regions, or for all database engines. For the full list of DB instance
#' classes, and availability for your engine, see [DB Instance
#' Class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
#' in the *Amazon RDS User Guide.*
#' @param Engine &#91;required&#93; The name of the database engine to be used for this instance.
#' 
#' Not every database engine is available for every AWS Region.
#' 
#' Valid Values:
#' 
#' -   `aurora` (for MySQL 5.6-compatible Aurora)
#' 
#' -   `aurora-mysql` (for MySQL 5.7-compatible Aurora)
#' 
#' -   `aurora-postgresql`
#' 
#' -   `mariadb`
#' 
#' -   `mysql`
#' 
#' -   `oracle-ee`
#' 
#' -   `oracle-se2`
#' 
#' -   `oracle-se1`
#' 
#' -   `oracle-se`
#' 
#' -   `postgres`
#' 
#' -   `sqlserver-ee`
#' 
#' -   `sqlserver-se`
#' 
#' -   `sqlserver-ex`
#' 
#' -   `sqlserver-web`
#' @param MasterUsername The name for the master user.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The name for the master user is managed by the DB
#' cluster.
#' 
#' **MariaDB**
#' 
#' Constraints:
#' 
#' -   Required for MariaDB.
#' 
#' -   Must be 1 to 16 letters or numbers.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' 
#' **Microsoft SQL Server**
#' 
#' Constraints:
#' 
#' -   Required for SQL Server.
#' 
#' -   Must be 1 to 128 letters or numbers.
#' 
#' -   The first character must be a letter.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' 
#' **MySQL**
#' 
#' Constraints:
#' 
#' -   Required for MySQL.
#' 
#' -   Must be 1 to 16 letters or numbers.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' 
#' **Oracle**
#' 
#' Constraints:
#' 
#' -   Required for Oracle.
#' 
#' -   Must be 1 to 30 letters or numbers.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' 
#' **PostgreSQL**
#' 
#' Constraints:
#' 
#' -   Required for PostgreSQL.
#' 
#' -   Must be 1 to 63 letters or numbers.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't be a reserved word for the chosen database engine.
#' @param MasterUserPassword The password for the master user. The password can include any printable
#' ASCII character except "/", """, or "@@".
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The password for the master user is managed by the DB
#' cluster.
#' 
#' **MariaDB**
#' 
#' Constraints: Must contain from 8 to 41 characters.
#' 
#' **Microsoft SQL Server**
#' 
#' Constraints: Must contain from 8 to 128 characters.
#' 
#' **MySQL**
#' 
#' Constraints: Must contain from 8 to 41 characters.
#' 
#' **Oracle**
#' 
#' Constraints: Must contain from 8 to 30 characters.
#' 
#' **PostgreSQL**
#' 
#' Constraints: Must contain from 8 to 128 characters.
#' @param DBSecurityGroups A list of DB security groups to associate with this DB instance.
#' 
#' Default: The default DB security group for the database engine.
#' @param VpcSecurityGroupIds A list of Amazon EC2 VPC security groups to associate with this DB
#' instance.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The associated list of EC2 VPC security groups is
#' managed by the DB cluster.
#' 
#' Default: The default EC2 VPC security group for the DB subnet group's
#' VPC.
#' @param AvailabilityZone The Availability Zone (AZ) where the database will be created. For
#' information on AWS Regions and Availability Zones, see [Regions and
#' Availability
#' Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).
#' 
#' Default: A random, system-chosen Availability Zone in the endpoint's AWS
#' Region.
#' 
#' Example: `us-east-1d`
#' 
#' Constraint: The `AvailabilityZone` parameter can't be specified if the
#' DB instance is a Multi-AZ deployment. The specified Availability Zone
#' must be in the same AWS Region as the current endpoint.
#' 
#' If you're creating a DB instance in an RDS on VMware environment,
#' specify the identifier of the custom Availability Zone to create the DB
#' instance in.
#' 
#' For more information about RDS on VMware, see the [RDS on VMware User
#' Guide.](https://docs.aws.amazon.com/AmazonRDS/latest/RDSonVMwareUserGuide/rds-on-vmware.html)
#' @param DBSubnetGroupName A DB subnet group to associate with this DB instance.
#' 
#' If there is no DB subnet group, then it is a non-VPC DB instance.
#' @param PreferredMaintenanceWindow The time range each week during which system maintenance can occur, in
#' Universal Coordinated Time (UTC). For more information, see [Amazon RDS
#' Maintenance
#' Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance).
#' 
#' Format: `ddd:hh24:mi-ddd:hh24:mi`
#' 
#' The default is a 30-minute window selected at random from an 8-hour
#' block of time for each AWS Region, occurring on a random day of the
#' week.
#' 
#' Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
#' 
#' Constraints: Minimum 30-minute window.
#' @param DBParameterGroupName The name of the DB parameter group to associate with this DB instance.
#' If you do not specify a value, then the default DB parameter group for
#' the specified DB engine and version is used.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' @param BackupRetentionPeriod The number of days for which automated backups are retained. Setting
#' this parameter to a positive number enables backups. Setting this
#' parameter to 0 disables automated backups.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The retention period for automated backups is managed by
#' the DB cluster.
#' 
#' Default: 1
#' 
#' Constraints:
#' 
#' -   Must be a value from 0 to 35
#' 
#' -   Can't be set to 0 if the DB instance is a source to read replicas
#' @param PreferredBackupWindow The daily time range during which automated backups are created if
#' automated backups are enabled, using the `BackupRetentionPeriod`
#' parameter. For more information, see [The Backup
#' Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
#' in the *Amazon RDS User Guide*.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The daily time range for creating automated backups is
#' managed by the DB cluster.
#' 
#' The default is a 30-minute window selected at random from an 8-hour
#' block of time for each AWS Region. To see the time blocks available, see
#' [Adjusting the Preferred DB Instance Maintenance
#' Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow)
#' in the *Amazon RDS User Guide*.
#' 
#' Constraints:
#' 
#' -   Must be in the format `hh24:mi-hh24:mi`.
#' 
#' -   Must be in Universal Coordinated Time (UTC).
#' 
#' -   Must not conflict with the preferred maintenance window.
#' 
#' -   Must be at least 30 minutes.
#' @param Port The port number on which the database accepts connections.
#' 
#' **MySQL**
#' 
#' Default: `3306`
#' 
#' Valid values: `1150-65535`
#' 
#' Type: Integer
#' 
#' **MariaDB**
#' 
#' Default: `3306`
#' 
#' Valid values: `1150-65535`
#' 
#' Type: Integer
#' 
#' **PostgreSQL**
#' 
#' Default: `5432`
#' 
#' Valid values: `1150-65535`
#' 
#' Type: Integer
#' 
#' **Oracle**
#' 
#' Default: `1521`
#' 
#' Valid values: `1150-65535`
#' 
#' **SQL Server**
#' 
#' Default: `1433`
#' 
#' Valid values: `1150-65535` except `1234`, `1434`, `3260`, `3343`,
#' `3389`, `47001`, and `49152-49156`.
#' 
#' **Amazon Aurora**
#' 
#' Default: `3306`
#' 
#' Valid values: `1150-65535`
#' 
#' Type: Integer
#' @param MultiAZ A value that indicates whether the DB instance is a Multi-AZ deployment.
#' You can't set the `AvailabilityZone` parameter if the DB instance is a
#' Multi-AZ deployment.
#' @param EngineVersion The version number of the database engine to use.
#' 
#' For a list of valid engine versions, use the
#' [`describe_db_engine_versions`][rds_describe_db_engine_versions] action.
#' 
#' The following are the database engines and links to information about
#' the major and minor versions that are available with Amazon RDS. Not
#' every database engine is available for every AWS Region.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The version number of the database engine to be used by
#' the DB instance is managed by the DB cluster.
#' 
#' **MariaDB**
#' 
#' See [MariaDB on Amazon RDS
#' Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
#' in the *Amazon RDS User Guide.*
#' 
#' **Microsoft SQL Server**
#' 
#' See [Microsoft SQL Server Versions on Amazon
#' RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
#' in the *Amazon RDS User Guide.*
#' 
#' **MySQL**
#' 
#' See [MySQL on Amazon RDS
#' Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
#' in the *Amazon RDS User Guide.*
#' 
#' **Oracle**
#' 
#' See [Oracle Database Engine Release
#' Notes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
#' in the *Amazon RDS User Guide.*
#' 
#' **PostgreSQL**
#' 
#' See [Supported PostgreSQL Database
#' Versions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.DBVersions)
#' in the *Amazon RDS User Guide.*
#' @param AutoMinorVersionUpgrade A value that indicates whether minor engine upgrades are applied
#' automatically to the DB instance during the maintenance window. By
#' default, minor engine upgrades are applied automatically.
#' @param LicenseModel License model information for this DB instance.
#' 
#' Valid values: `license-included` | `bring-your-own-license` |
#' `general-public-license`
#' @param Iops The amount of Provisioned IOPS (input/output operations per second) to
#' be initially allocated for the DB instance. For information about valid
#' Iops values, see [Amazon RDS Provisioned IOPS Storage to Improve
#' Performance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
#' in the *Amazon RDS User Guide*.
#' 
#' Constraints: For MariaDB, MySQL, Oracle, and PostgreSQL DB instances,
#' must be a multiple between .5 and 50 of the storage amount for the DB
#' instance. For SQL Server DB instances, must be a multiple between 1 and
#' 50 of the storage amount for the DB instance.
#' @param OptionGroupName Indicates that the DB instance should be associated with the specified
#' option group.
#' 
#' Permanent options, such as the TDE option for Oracle Advanced Security
#' TDE, can't be removed from an option group. Also, that option group
#' can't be removed from a DB instance once it is associated with a DB
#' instance
#' @param CharacterSetName For supported engines, indicates that the DB instance should be
#' associated with the specified CharacterSet.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The character set is managed by the DB cluster. For more
#' information, see [`create_db_cluster`][rds_create_db_cluster].
#' @param NcharCharacterSetName The name of the NCHAR character set for the Oracle DB instance.
#' @param PubliclyAccessible A value that indicates whether the DB instance is publicly accessible.
#' 
#' When the DB instance is publicly accessible, its DNS endpoint resolves
#' to the private IP address from within the DB instance's VPC, and to the
#' public IP address from outside of the DB instance's VPC. Access to the
#' DB instance is ultimately controlled by the security group it uses, and
#' that public access is not permitted if the security group assigned to
#' the DB instance doesn't permit it.
#' 
#' When the DB instance isn't publicly accessible, it is an internal DB
#' instance with a DNS name that resolves to a private IP address.
#' 
#' Default: The default behavior varies depending on whether
#' `DBSubnetGroupName` is specified.
#' 
#' If `DBSubnetGroupName` isn't specified, and `PubliclyAccessible` isn't
#' specified, the following applies:
#' 
#' -   If the default VPC in the target region doesn’t have an Internet
#'     gateway attached to it, the DB instance is private.
#' 
#' -   If the default VPC in the target region has an Internet gateway
#'     attached to it, the DB instance is public.
#' 
#' If `DBSubnetGroupName` is specified, and `PubliclyAccessible` isn't
#' specified, the following applies:
#' 
#' -   If the subnets are part of a VPC that doesn’t have an Internet
#'     gateway attached to it, the DB instance is private.
#' 
#' -   If the subnets are part of a VPC that has an Internet gateway
#'     attached to it, the DB instance is public.
#' @param Tags Tags to assign to the DB instance.
#' @param DBClusterIdentifier The identifier of the DB cluster that the instance will belong to.
#' @param StorageType Specifies the storage type to be associated with the DB instance.
#' 
#' Valid values: `standard | gp2 | io1`
#' 
#' If you specify `io1`, you must also include a value for the `Iops`
#' parameter.
#' 
#' Default: `io1` if the `Iops` parameter is specified, otherwise `gp2`
#' @param TdeCredentialArn The ARN from the key store with which to associate the instance for TDE
#' encryption.
#' @param TdeCredentialPassword The password for the given ARN from the key store in order to access the
#' device.
#' @param StorageEncrypted A value that indicates whether the DB instance is encrypted. By default,
#' it isn't encrypted.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The encryption for DB instances is managed by the DB
#' cluster.
#' @param KmsKeyId The AWS KMS key identifier for an encrypted DB instance.
#' 
#' The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias
#' name for the AWS KMS customer master key (CMK). To use a CMK in a
#' different AWS account, specify the key ARN or alias ARN.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. The AWS KMS key identifier is managed by the DB cluster.
#' For more information, see [`create_db_cluster`][rds_create_db_cluster].
#' 
#' If `StorageEncrypted` is enabled, and you do not specify a value for the
#' `KmsKeyId` parameter, then Amazon RDS uses your default CMK. There is a
#' default CMK for your AWS account. Your AWS account has a different
#' default CMK for each AWS Region.
#' @param Domain The Active Directory directory ID to create the DB instance in.
#' Currently, only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB
#' instances can be created in an Active Directory Domain.
#' 
#' For more information, see [Kerberos
#' Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/database-authentication.html)
#' in the *Amazon RDS User Guide*.
#' @param CopyTagsToSnapshot A value that indicates whether to copy tags from the DB instance to
#' snapshots of the DB instance. By default, tags are not copied.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. Copying tags to snapshots is managed by the DB cluster.
#' Setting this value for an Aurora DB instance has no effect on the DB
#' cluster setting.
#' @param MonitoringInterval The interval, in seconds, between points when Enhanced Monitoring
#' metrics are collected for the DB instance. To disable collecting
#' Enhanced Monitoring metrics, specify 0. The default is 0.
#' 
#' If `MonitoringRoleArn` is specified, then you must also set
#' `MonitoringInterval` to a value other than 0.
#' 
#' Valid Values: `0, 1, 5, 10, 15, 30, 60`
#' @param MonitoringRoleArn The ARN for the IAM role that permits RDS to send enhanced monitoring
#' metrics to Amazon CloudWatch Logs. For example,
#' `arn:aws:iam:123456789012:role/emaccess`. For information on creating a
#' monitoring role, go to [Setting Up and Enabling Enhanced
#' Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
#' in the *Amazon RDS User Guide*.
#' 
#' If `MonitoringInterval` is set to a value other than 0, then you must
#' supply a `MonitoringRoleArn` value.
#' @param DomainIAMRoleName Specify the name of the IAM role to be used when making API calls to the
#' Directory Service.
#' @param PromotionTier A value that specifies the order in which an Aurora Replica is promoted
#' to the primary instance after a failure of the existing primary
#' instance. For more information, see [Fault Tolerance for an Aurora DB
#' Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.FaultTolerance)
#' in the *Amazon Aurora User Guide*.
#' 
#' Default: 1
#' 
#' Valid Values: 0 - 15
#' @param Timezone The time zone of the DB instance. The time zone parameter is currently
#' supported only by [Microsoft SQL
#' Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone).
#' @param EnableIAMDatabaseAuthentication A value that indicates whether to enable mapping of AWS Identity and
#' Access Management (IAM) accounts to database accounts. By default,
#' mapping is disabled.
#' 
#' This setting doesn't apply to Amazon Aurora. Mapping AWS IAM accounts to
#' database accounts is managed by the DB cluster.
#' 
#' For more information, see [IAM Database Authentication for MySQL and
#' PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
#' in the *Amazon RDS User Guide.*
#' @param EnablePerformanceInsights A value that indicates whether to enable Performance Insights for the DB
#' instance.
#' 
#' For more information, see [Using Amazon Performance
#' Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
#' in the *Amazon Relational Database Service User Guide*.
#' @param PerformanceInsightsKMSKeyId The AWS KMS key identifier for encryption of Performance Insights data.
#' 
#' The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias
#' name for the AWS KMS customer master key (CMK).
#' 
#' If you do not specify a value for `PerformanceInsightsKMSKeyId`, then
#' Amazon RDS uses your default CMK. There is a default CMK for your AWS
#' account. Your AWS account has a different default CMK for each AWS
#' Region.
#' @param PerformanceInsightsRetentionPeriod The amount of time, in days, to retain Performance Insights data. Valid
#' values are 7 or 731 (2 years).
#' @param EnableCloudwatchLogsExports The list of log types that need to be enabled for exporting to
#' CloudWatch Logs. The values in the list depend on the DB engine being
#' used. For more information, see [Publishing Database Logs to Amazon
#' CloudWatch
#' Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
#' in the *Amazon Relational Database Service User Guide*.
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. CloudWatch Logs exports are managed by the DB cluster.
#' 
#' **MariaDB**
#' 
#' Possible values are `audit`, `error`, `general`, and `slowquery`.
#' 
#' **Microsoft SQL Server**
#' 
#' Possible values are `agent` and `error`.
#' 
#' **MySQL**
#' 
#' Possible values are `audit`, `error`, `general`, and `slowquery`.
#' 
#' **Oracle**
#' 
#' Possible values are `alert`, `audit`, `listener`, and `trace`.
#' 
#' **PostgreSQL**
#' 
#' Possible values are `postgresql` and `upgrade`.
#' @param ProcessorFeatures The number of CPU cores and the number of threads per core for the DB
#' instance class of the DB instance.
#' @param DeletionProtection A value that indicates whether the DB instance has deletion protection
#' enabled. The database can't be deleted when deletion protection is
#' enabled. By default, deletion protection is disabled. For more
#' information, see [Deleting a DB
#' Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
#' 
#' **Amazon Aurora**
#' 
#' Not applicable. You can enable or disable deletion protection for the DB
#' cluster. For more information, see
#' [`create_db_cluster`][rds_create_db_cluster]. DB instances in a DB
#' cluster can be deleted even when deletion protection is enabled for the
#' DB cluster.
#' @param MaxAllocatedStorage The upper limit to which Amazon RDS can automatically scale the storage
#' of the DB instance.
#' @param EnableCustomerOwnedIp A value that indicates whether to enable a customer-owned IP address
#' (CoIP) for an RDS on Outposts DB instance.
#' 
#' A *CoIP* provides local or external connectivity to resources in your
#' Outpost subnets through your on-premises network. For some use cases, a
#' CoIP can provide lower latency for connections to the DB instance from
#' outside of its virtual private cloud (VPC) on your local network.
#' 
#' For more information about RDS on Outposts, see [Working with Amazon RDS
#' on AWS
#' Outposts](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
#' in the *Amazon RDS User Guide*.
#' 
#' For more information about CoIPs, see [Customer-owned IP
#' addresses](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing)
#' in the *AWS Outposts User Guide*.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBInstance = list(
#'     DBInstanceIdentifier = "string",
#'     DBInstanceClass = "string",
#'     Engine = "string",
#'     DBInstanceStatus = "string",
#'     MasterUsername = "string",
#'     DBName = "string",
#'     Endpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     AllocatedStorage = 123,
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     PreferredBackupWindow = "string",
#'     BackupRetentionPeriod = 123,
#'     DBSecurityGroups = list(
#'       list(
#'         DBSecurityGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     VpcSecurityGroups = list(
#'       list(
#'         VpcSecurityGroupId = "string",
#'         Status = "string"
#'       )
#'     ),
#'     DBParameterGroups = list(
#'       list(
#'         DBParameterGroupName = "string",
#'         ParameterApplyStatus = "string"
#'       )
#'     ),
#'     AvailabilityZone = "string",
#'     DBSubnetGroup = list(
#'       DBSubnetGroupName = "string",
#'       DBSubnetGroupDescription = "string",
#'       VpcId = "string",
#'       SubnetGroupStatus = "string",
#'       Subnets = list(
#'         list(
#'           SubnetIdentifier = "string",
#'           SubnetAvailabilityZone = list(
#'             Name = "string"
#'           ),
#'           SubnetOutpost = list(
#'             Arn = "string"
#'           ),
#'           SubnetStatus = "string"
#'         )
#'       ),
#'       DBSubnetGroupArn = "string"
#'     ),
#'     PreferredMaintenanceWindow = "string",
#'     PendingModifiedValues = list(
#'       DBInstanceClass = "string",
#'       AllocatedStorage = 123,
#'       MasterUserPassword = "string",
#'       Port = 123,
#'       BackupRetentionPeriod = 123,
#'       MultiAZ = TRUE|FALSE,
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       Iops = 123,
#'       DBInstanceIdentifier = "string",
#'       StorageType = "string",
#'       CACertificateIdentifier = "string",
#'       DBSubnetGroupName = "string",
#'       PendingCloudwatchLogsExports = list(
#'         LogTypesToEnable = list(
#'           "string"
#'         ),
#'         LogTypesToDisable = list(
#'           "string"
#'         )
#'       ),
#'       ProcessorFeatures = list(
#'         list(
#'           Name = "string",
#'           Value = "string"
#'         )
#'       ),
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE
#'     ),
#'     LatestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MultiAZ = TRUE|FALSE,
#'     EngineVersion = "string",
#'     AutoMinorVersionUpgrade = TRUE|FALSE,
#'     ReadReplicaSourceDBInstanceIdentifier = "string",
#'     ReadReplicaDBInstanceIdentifiers = list(
#'       "string"
#'     ),
#'     ReadReplicaDBClusterIdentifiers = list(
#'       "string"
#'     ),
#'     ReplicaMode = "open-read-only"|"mounted",
#'     LicenseModel = "string",
#'     Iops = 123,
#'     OptionGroupMemberships = list(
#'       list(
#'         OptionGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     CharacterSetName = "string",
#'     NcharCharacterSetName = "string",
#'     SecondaryAvailabilityZone = "string",
#'     PubliclyAccessible = TRUE|FALSE,
#'     StatusInfos = list(
#'       list(
#'         StatusType = "string",
#'         Normal = TRUE|FALSE,
#'         Status = "string",
#'         Message = "string"
#'       )
#'     ),
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     DbInstancePort = 123,
#'     DBClusterIdentifier = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DbiResourceId = "string",
#'     CACertificateIdentifier = "string",
#'     DomainMemberships = list(
#'       list(
#'         Domain = "string",
#'         Status = "string",
#'         FQDN = "string",
#'         IAMRoleName = "string"
#'       )
#'     ),
#'     CopyTagsToSnapshot = TRUE|FALSE,
#'     MonitoringInterval = 123,
#'     EnhancedMonitoringResourceArn = "string",
#'     MonitoringRoleArn = "string",
#'     PromotionTier = 123,
#'     DBInstanceArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     PerformanceInsightsEnabled = TRUE|FALSE,
#'     PerformanceInsightsKMSKeyId = "string",
#'     PerformanceInsightsRetentionPeriod = 123,
#'     EnabledCloudwatchLogsExports = list(
#'       "string"
#'     ),
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DeletionProtection = TRUE|FALSE,
#'     AssociatedRoles = list(
#'       list(
#'         RoleArn = "string",
#'         FeatureName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     ListenerEndpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     MaxAllocatedStorage = 123,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DBInstanceAutomatedBackupsReplications = list(
#'       list(
#'         DBInstanceAutomatedBackupsArn = "string"
#'       )
#'     ),
#'     CustomerOwnedIpEnabled = TRUE|FALSE
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_instance(
#'   DBName = "string",
#'   DBInstanceIdentifier = "string",
#'   AllocatedStorage = 123,
#'   DBInstanceClass = "string",
#'   Engine = "string",
#'   MasterUsername = "string",
#'   MasterUserPassword = "string",
#'   DBSecurityGroups = list(
#'     "string"
#'   ),
#'   VpcSecurityGroupIds = list(
#'     "string"
#'   ),
#'   AvailabilityZone = "string",
#'   DBSubnetGroupName = "string",
#'   PreferredMaintenanceWindow = "string",
#'   DBParameterGroupName = "string",
#'   BackupRetentionPeriod = 123,
#'   PreferredBackupWindow = "string",
#'   Port = 123,
#'   MultiAZ = TRUE|FALSE,
#'   EngineVersion = "string",
#'   AutoMinorVersionUpgrade = TRUE|FALSE,
#'   LicenseModel = "string",
#'   Iops = 123,
#'   OptionGroupName = "string",
#'   CharacterSetName = "string",
#'   NcharCharacterSetName = "string",
#'   PubliclyAccessible = TRUE|FALSE,
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   DBClusterIdentifier = "string",
#'   StorageType = "string",
#'   TdeCredentialArn = "string",
#'   TdeCredentialPassword = "string",
#'   StorageEncrypted = TRUE|FALSE,
#'   KmsKeyId = "string",
#'   Domain = "string",
#'   CopyTagsToSnapshot = TRUE|FALSE,
#'   MonitoringInterval = 123,
#'   MonitoringRoleArn = "string",
#'   DomainIAMRoleName = "string",
#'   PromotionTier = 123,
#'   Timezone = "string",
#'   EnableIAMDatabaseAuthentication = TRUE|FALSE,
#'   EnablePerformanceInsights = TRUE|FALSE,
#'   PerformanceInsightsKMSKeyId = "string",
#'   PerformanceInsightsRetentionPeriod = 123,
#'   EnableCloudwatchLogsExports = list(
#'     "string"
#'   ),
#'   ProcessorFeatures = list(
#'     list(
#'       Name = "string",
#'       Value = "string"
#'     )
#'   ),
#'   DeletionProtection = TRUE|FALSE,
#'   MaxAllocatedStorage = 123,
#'   EnableCustomerOwnedIp = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_instance
rds_create_db_instance <- function(DBName = NULL, DBInstanceIdentifier, AllocatedStorage = NULL, DBInstanceClass, Engine, MasterUsername = NULL, MasterUserPassword = NULL, DBSecurityGroups = NULL, VpcSecurityGroupIds = NULL, AvailabilityZone = NULL, DBSubnetGroupName = NULL, PreferredMaintenanceWindow = NULL, DBParameterGroupName = NULL, BackupRetentionPeriod = NULL, PreferredBackupWindow = NULL, Port = NULL, MultiAZ = NULL, EngineVersion = NULL, AutoMinorVersionUpgrade = NULL, LicenseModel = NULL, Iops = NULL, OptionGroupName = NULL, CharacterSetName = NULL, NcharCharacterSetName = NULL, PubliclyAccessible = NULL, Tags = NULL, DBClusterIdentifier = NULL, StorageType = NULL, TdeCredentialArn = NULL, TdeCredentialPassword = NULL, StorageEncrypted = NULL, KmsKeyId = NULL, Domain = NULL, CopyTagsToSnapshot = NULL, MonitoringInterval = NULL, MonitoringRoleArn = NULL, DomainIAMRoleName = NULL, PromotionTier = NULL, Timezone = NULL, EnableIAMDatabaseAuthentication = NULL, EnablePerformanceInsights = NULL, PerformanceInsightsKMSKeyId = NULL, PerformanceInsightsRetentionPeriod = NULL, EnableCloudwatchLogsExports = NULL, ProcessorFeatures = NULL, DeletionProtection = NULL, MaxAllocatedStorage = NULL, EnableCustomerOwnedIp = NULL) {
  op <- new_operation(
    name = "CreateDBInstance",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_instance_input(DBName = DBName, DBInstanceIdentifier = DBInstanceIdentifier, AllocatedStorage = AllocatedStorage, DBInstanceClass = DBInstanceClass, Engine = Engine, MasterUsername = MasterUsername, MasterUserPassword = MasterUserPassword, DBSecurityGroups = DBSecurityGroups, VpcSecurityGroupIds = VpcSecurityGroupIds, AvailabilityZone = AvailabilityZone, DBSubnetGroupName = DBSubnetGroupName, PreferredMaintenanceWindow = PreferredMaintenanceWindow, DBParameterGroupName = DBParameterGroupName, BackupRetentionPeriod = BackupRetentionPeriod, PreferredBackupWindow = PreferredBackupWindow, Port = Port, MultiAZ = MultiAZ, EngineVersion = EngineVersion, AutoMinorVersionUpgrade = AutoMinorVersionUpgrade, LicenseModel = LicenseModel, Iops = Iops, OptionGroupName = OptionGroupName, CharacterSetName = CharacterSetName, NcharCharacterSetName = NcharCharacterSetName, PubliclyAccessible = PubliclyAccessible, Tags = Tags, DBClusterIdentifier = DBClusterIdentifier, StorageType = StorageType, TdeCredentialArn = TdeCredentialArn, TdeCredentialPassword = TdeCredentialPassword, StorageEncrypted = StorageEncrypted, KmsKeyId = KmsKeyId, Domain = Domain, CopyTagsToSnapshot = CopyTagsToSnapshot, MonitoringInterval = MonitoringInterval, MonitoringRoleArn = MonitoringRoleArn, DomainIAMRoleName = DomainIAMRoleName, PromotionTier = PromotionTier, Timezone = Timezone, EnableIAMDatabaseAuthentication = EnableIAMDatabaseAuthentication, EnablePerformanceInsights = EnablePerformanceInsights, PerformanceInsightsKMSKeyId = PerformanceInsightsKMSKeyId, PerformanceInsightsRetentionPeriod = PerformanceInsightsRetentionPeriod, EnableCloudwatchLogsExports = EnableCloudwatchLogsExports, ProcessorFeatures = ProcessorFeatures, DeletionProtection = DeletionProtection, MaxAllocatedStorage = MaxAllocatedStorage, EnableCustomerOwnedIp = EnableCustomerOwnedIp)
  output <- .rds$create_db_instance_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_instance <- rds_create_db_instance

#' Creates a new DB instance that acts as a read replica for an existing
#' source DB instance
#'
#' @description
#' Creates a new DB instance that acts as a read replica for an existing
#' source DB instance. You can create a read replica for a DB instance
#' running MySQL, MariaDB, Oracle, PostgreSQL, or SQL Server. For more
#' information, see [Working with Read
#' Replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)
#' in the *Amazon RDS User Guide*.
#' 
#' Amazon Aurora doesn't support this action. Call the
#' [`create_db_instance`][rds_create_db_instance] action to create a DB
#' instance for an Aurora DB cluster.
#' 
#' All read replica DB instances are created with backups disabled. All
#' other DB instance attributes (including DB security groups and DB
#' parameter groups) are inherited from the source DB instance, except as
#' specified.
#' 
#' Your source DB instance must have backup retention enabled.
#'
#' @usage
#' rds_create_db_instance_read_replica(DBInstanceIdentifier,
#'   SourceDBInstanceIdentifier, DBInstanceClass, AvailabilityZone, Port,
#'   MultiAZ, AutoMinorVersionUpgrade, Iops, OptionGroupName,
#'   DBParameterGroupName, PubliclyAccessible, Tags, DBSubnetGroupName,
#'   VpcSecurityGroupIds, StorageType, CopyTagsToSnapshot,
#'   MonitoringInterval, MonitoringRoleArn, KmsKeyId, PreSignedUrl,
#'   EnableIAMDatabaseAuthentication, EnablePerformanceInsights,
#'   PerformanceInsightsKMSKeyId, PerformanceInsightsRetentionPeriod,
#'   EnableCloudwatchLogsExports, ProcessorFeatures,
#'   UseDefaultProcessorFeatures, DeletionProtection, Domain,
#'   DomainIAMRoleName, ReplicaMode, MaxAllocatedStorage, SourceRegion)
#'
#' @param DBInstanceIdentifier &#91;required&#93; The DB instance identifier of the read replica. This identifier is the
#' unique key that identifies a DB instance. This parameter is stored as a
#' lowercase string.
#' @param SourceDBInstanceIdentifier &#91;required&#93; The identifier of the DB instance that will act as the source for the
#' read replica. Each DB instance can have up to five read replicas.
#' 
#' Constraints:
#' 
#' -   Must be the identifier of an existing MySQL, MariaDB, Oracle,
#'     PostgreSQL, or SQL Server DB instance.
#' 
#' -   Can specify a DB instance that is a MySQL read replica only if the
#'     source is running MySQL 5.6 or later.
#' 
#' -   For the limitations of Oracle read replicas, see [Read Replica
#'     Limitations with
#'     Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html)
#'     in the *Amazon RDS User Guide*.
#' 
#' -   For the limitations of SQL Server read replicas, see [Read Replica
#'     Limitations with Microsoft SQL
#'     Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/) in
#'     the *Amazon RDS User Guide*.
#' 
#' -   Can specify a PostgreSQL DB instance only if the source is running
#'     PostgreSQL 9.3.5 or later (9.4.7 and higher for cross-region
#'     replication).
#' 
#' -   The specified DB instance must have automatic backups enabled, that
#'     is, its backup retention period must be greater than 0.
#' 
#' -   If the source DB instance is in the same AWS Region as the read
#'     replica, specify a valid DB instance identifier.
#' 
#' -   If the source DB instance is in a different AWS Region from the read
#'     replica, specify a valid DB instance ARN. For more information, see
#'     [Constructing an ARN for Amazon
#'     RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
#'     in the *Amazon RDS User Guide*. This doesn't apply to SQL Server,
#'     which doesn't support cross-region replicas.
#' @param DBInstanceClass The compute and memory capacity of the read replica, for example,
#' `db.m4.large`. Not all DB instance classes are available in all AWS
#' Regions, or for all database engines. For the full list of DB instance
#' classes, and availability for your engine, see [DB Instance
#' Class](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
#' in the *Amazon RDS User Guide.*
#' 
#' Default: Inherits from the source DB instance.
#' @param AvailabilityZone The Availability Zone (AZ) where the read replica will be created.
#' 
#' Default: A random, system-chosen Availability Zone in the endpoint's AWS
#' Region.
#' 
#' Example: `us-east-1d`
#' @param Port The port number that the DB instance uses for connections.
#' 
#' Default: Inherits from the source DB instance
#' 
#' Valid Values: `1150-65535`
#' @param MultiAZ A value that indicates whether the read replica is in a Multi-AZ
#' deployment.
#' 
#' You can create a read replica as a Multi-AZ DB instance. RDS creates a
#' standby of your replica in another Availability Zone for failover
#' support for the replica. Creating your read replica as a Multi-AZ DB
#' instance is independent of whether the source database is a Multi-AZ DB
#' instance.
#' @param AutoMinorVersionUpgrade A value that indicates whether minor engine upgrades are applied
#' automatically to the read replica during the maintenance window.
#' 
#' Default: Inherits from the source DB instance
#' @param Iops The amount of Provisioned IOPS (input/output operations per second) to
#' be initially allocated for the DB instance.
#' @param OptionGroupName The option group the DB instance is associated with. If omitted, the
#' option group associated with the source instance is used.
#' 
#' For SQL Server, you must use the option group associated with the source
#' instance.
#' @param DBParameterGroupName The name of the DB parameter group to associate with this DB instance.
#' 
#' If you do not specify a value for `DBParameterGroupName`, then Amazon
#' RDS uses the `DBParameterGroup` of source DB instance for a same region
#' read replica, or the default `DBParameterGroup` for the specified DB
#' engine for a cross region read replica.
#' 
#' Currently, specifying a parameter group for this operation is only
#' supported for Oracle DB instances.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' @param PubliclyAccessible A value that indicates whether the DB instance is publicly accessible.
#' 
#' When the DB instance is publicly accessible, its DNS endpoint resolves
#' to the private IP address from within the DB instance's VPC, and to the
#' public IP address from outside of the DB instance's VPC. Access to the
#' DB instance is ultimately controlled by the security group it uses, and
#' that public access is not permitted if the security group assigned to
#' the DB instance doesn't permit it.
#' 
#' When the DB instance isn't publicly accessible, it is an internal DB
#' instance with a DNS name that resolves to a private IP address.
#' 
#' For more information, see
#' [`create_db_instance`][rds_create_db_instance].
#' @param Tags 
#' @param DBSubnetGroupName Specifies a DB subnet group for the DB instance. The new DB instance is
#' created in the VPC associated with the DB subnet group. If no DB subnet
#' group is specified, then the new DB instance isn't created in a VPC.
#' 
#' Constraints:
#' 
#' -   Can only be specified if the source DB instance identifier specifies
#'     a DB instance in another AWS Region.
#' 
#' -   If supplied, must match the name of an existing DBSubnetGroup.
#' 
#' -   The specified DB subnet group must be in the same AWS Region in
#'     which the operation is running.
#' 
#' -   All read replicas in one AWS Region that are created from the same
#'     source DB instance must either:&gt;
#' 
#'     -   Specify DB subnet groups from the same VPC. All these read
#'         replicas are created in the same VPC.
#' 
#'     -   Not specify a DB subnet group. All these read replicas are
#'         created outside of any VPC.
#' 
#' Example: `mySubnetgroup`
#' @param VpcSecurityGroupIds A list of EC2 VPC security groups to associate with the read replica.
#' 
#' Default: The default EC2 VPC security group for the DB subnet group's
#' VPC.
#' @param StorageType Specifies the storage type to be associated with the read replica.
#' 
#' Valid values: `standard | gp2 | io1`
#' 
#' If you specify `io1`, you must also include a value for the `Iops`
#' parameter.
#' 
#' Default: `io1` if the `Iops` parameter is specified, otherwise `gp2`
#' @param CopyTagsToSnapshot A value that indicates whether to copy all tags from the read replica to
#' snapshots of the read replica. By default, tags are not copied.
#' @param MonitoringInterval The interval, in seconds, between points when Enhanced Monitoring
#' metrics are collected for the read replica. To disable collecting
#' Enhanced Monitoring metrics, specify 0. The default is 0.
#' 
#' If `MonitoringRoleArn` is specified, then you must also set
#' `MonitoringInterval` to a value other than 0.
#' 
#' Valid Values: `0, 1, 5, 10, 15, 30, 60`
#' @param MonitoringRoleArn The ARN for the IAM role that permits RDS to send enhanced monitoring
#' metrics to Amazon CloudWatch Logs. For example,
#' `arn:aws:iam:123456789012:role/emaccess`. For information on creating a
#' monitoring role, go to [To create an IAM role for Amazon RDS Enhanced
#' Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html#USER_Monitoring)
#' in the *Amazon RDS User Guide*.
#' 
#' If `MonitoringInterval` is set to a value other than 0, then you must
#' supply a `MonitoringRoleArn` value.
#' @param KmsKeyId The AWS KMS key identifier for an encrypted read replica.
#' 
#' The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias
#' name for the AWS KMS CMK.
#' 
#' If you create an encrypted read replica in the same AWS Region as the
#' source DB instance, then do not specify a value for this parameter. A
#' read replica in the same Region is always encrypted with the same AWS
#' KMS CMK as the source DB instance.
#' 
#' If you create an encrypted read replica in a different AWS Region, then
#' you must specify a AWS KMS key identifier for the destination AWS
#' Region. AWS KMS CMKs are specific to the AWS Region that they are
#' created in, and you can't use CMKs from one AWS Region in another AWS
#' Region.
#' 
#' You can't create an encrypted read replica from an unencrypted DB
#' instance.
#' @param PreSignedUrl The URL that contains a Signature Version 4 signed request for the
#' [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#' API action in the source AWS Region that contains the source DB
#' instance.
#' 
#' You must specify this parameter when you create an encrypted read
#' replica from another AWS Region by using the Amazon RDS API. Don't
#' specify `PreSignedUrl` when you are creating an encrypted read replica
#' in the same AWS Region.
#' 
#' The presigned URL must be a valid request for the
#' [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#' API action that can be executed in the source AWS Region that contains
#' the encrypted source DB instance. The presigned URL request must contain
#' the following parameter values:
#' 
#' -   `DestinationRegion` - The AWS Region that the encrypted read replica
#'     is created in. This AWS Region is the same one where the
#'     [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#'     action is called that contains this presigned URL.
#' 
#'     For example, if you create an encrypted DB instance in the us-west-1
#'     AWS Region, from a source DB instance in the us-east-2 AWS Region,
#'     then you call the
#'     [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#'     action in the us-east-1 AWS Region and provide a presigned URL that
#'     contains a call to the
#'     [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#'     action in the us-west-2 AWS Region. For this example, the
#'     `DestinationRegion` in the presigned URL must be set to the
#'     us-east-1 AWS Region.
#' 
#' -   `KmsKeyId` - The AWS KMS key identifier for the key to use to
#'     encrypt the read replica in the destination AWS Region. This is the
#'     same identifier for both the
#'     [`create_db_instance_read_replica`][rds_create_db_instance_read_replica]
#'     action that is called in the destination AWS Region, and the action
#'     contained in the presigned URL.
#' 
#' -   `SourceDBInstanceIdentifier` - The DB instance identifier for the
#'     encrypted DB instance to be replicated. This identifier must be in
#'     the Amazon Resource Name (ARN) format for the source AWS Region. For
#'     example, if you are creating an encrypted read replica from a DB
#'     instance in the us-west-2 AWS Region, then your
#'     `SourceDBInstanceIdentifier` looks like the following example:
#'     `arn:aws:rds:us-west-2:123456789012:instance:mysql-instance1-20161115`.
#' 
#' To learn how to generate a Signature Version 4 signed request, see
#' [Authenticating Requests: Using Query Parameters (AWS Signature Version
#' 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
#' and [Signature Version 4 Signing
#' Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
#' 
#' If you are using an AWS SDK tool or the AWS CLI, you can specify
#' `SourceRegion` (or `--source-region` for the AWS CLI) instead of
#' specifying `PreSignedUrl` manually. Specifying `SourceRegion`
#' autogenerates a presigned URL that is a valid request for the operation
#' that can be executed in the source AWS Region.
#' 
#' `SourceRegion` isn't supported for SQL Server, because SQL Server on
#' Amazon RDS doesn't support cross-region read replicas.
#' 
#' If you supply a value for this operation's `SourceRegion` parameter, a
#' pre-signed URL will be calculated on your behalf.
#' @param EnableIAMDatabaseAuthentication A value that indicates whether to enable mapping of AWS Identity and
#' Access Management (IAM) accounts to database accounts. By default,
#' mapping is disabled.
#' 
#' For more information about IAM database authentication, see [IAM
#' Database Authentication for MySQL and
#' PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
#' in the *Amazon RDS User Guide.*
#' @param EnablePerformanceInsights A value that indicates whether to enable Performance Insights for the
#' read replica.
#' 
#' For more information, see [Using Amazon Performance
#' Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
#' in the *Amazon RDS User Guide*.
#' @param PerformanceInsightsKMSKeyId The AWS KMS key identifier for encryption of Performance Insights data.
#' 
#' The AWS KMS key identifier is the key ARN, key ID, alias ARN, or alias
#' name for the AWS KMS customer master key (CMK).
#' 
#' If you do not specify a value for `PerformanceInsightsKMSKeyId`, then
#' Amazon RDS uses your default CMK. There is a default CMK for your AWS
#' account. Your AWS account has a different default CMK for each AWS
#' Region.
#' @param PerformanceInsightsRetentionPeriod The amount of time, in days, to retain Performance Insights data. Valid
#' values are 7 or 731 (2 years).
#' @param EnableCloudwatchLogsExports The list of logs that the new DB instance is to export to CloudWatch
#' Logs. The values in the list depend on the DB engine being used. For
#' more information, see [Publishing Database Logs to Amazon CloudWatch
#' Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
#' in the *Amazon RDS User Guide*.
#' @param ProcessorFeatures The number of CPU cores and the number of threads per core for the DB
#' instance class of the DB instance.
#' @param UseDefaultProcessorFeatures A value that indicates whether the DB instance class of the DB instance
#' uses its default processor features.
#' @param DeletionProtection A value that indicates whether the DB instance has deletion protection
#' enabled. The database can't be deleted when deletion protection is
#' enabled. By default, deletion protection is disabled. For more
#' information, see [Deleting a DB
#' Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
#' @param Domain The Active Directory directory ID to create the DB instance in.
#' Currently, only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB
#' instances can be created in an Active Directory Domain.
#' 
#' For more information, see [Kerberos
#' Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/database-authentication.html)
#' in the *Amazon RDS User Guide*.
#' @param DomainIAMRoleName Specify the name of the IAM role to be used when making API calls to the
#' Directory Service.
#' @param ReplicaMode The open mode of the replica database: mounted or read-only.
#' 
#' This parameter is only supported for Oracle DB instances.
#' 
#' Mounted DB replicas are included in Oracle Enterprise Edition. The main
#' use case for mounted replicas is cross-Region disaster recovery. The
#' primary database doesn't use Active Data Guard to transmit information
#' to the mounted replica. Because it doesn't accept user connections, a
#' mounted replica can't serve a read-only workload.
#' 
#' You can create a combination of mounted and read-only DB replicas for
#' the same primary DB instance. For more information, see [Working with
#' Oracle Read Replicas for Amazon
#' RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html)
#' in the *Amazon RDS User Guide*.
#' @param MaxAllocatedStorage The upper limit to which Amazon RDS can automatically scale the storage
#' of the DB instance.
#' @param SourceRegion The ID of the region that contains the source for the read replica.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBInstance = list(
#'     DBInstanceIdentifier = "string",
#'     DBInstanceClass = "string",
#'     Engine = "string",
#'     DBInstanceStatus = "string",
#'     MasterUsername = "string",
#'     DBName = "string",
#'     Endpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     AllocatedStorage = 123,
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     PreferredBackupWindow = "string",
#'     BackupRetentionPeriod = 123,
#'     DBSecurityGroups = list(
#'       list(
#'         DBSecurityGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     VpcSecurityGroups = list(
#'       list(
#'         VpcSecurityGroupId = "string",
#'         Status = "string"
#'       )
#'     ),
#'     DBParameterGroups = list(
#'       list(
#'         DBParameterGroupName = "string",
#'         ParameterApplyStatus = "string"
#'       )
#'     ),
#'     AvailabilityZone = "string",
#'     DBSubnetGroup = list(
#'       DBSubnetGroupName = "string",
#'       DBSubnetGroupDescription = "string",
#'       VpcId = "string",
#'       SubnetGroupStatus = "string",
#'       Subnets = list(
#'         list(
#'           SubnetIdentifier = "string",
#'           SubnetAvailabilityZone = list(
#'             Name = "string"
#'           ),
#'           SubnetOutpost = list(
#'             Arn = "string"
#'           ),
#'           SubnetStatus = "string"
#'         )
#'       ),
#'       DBSubnetGroupArn = "string"
#'     ),
#'     PreferredMaintenanceWindow = "string",
#'     PendingModifiedValues = list(
#'       DBInstanceClass = "string",
#'       AllocatedStorage = 123,
#'       MasterUserPassword = "string",
#'       Port = 123,
#'       BackupRetentionPeriod = 123,
#'       MultiAZ = TRUE|FALSE,
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       Iops = 123,
#'       DBInstanceIdentifier = "string",
#'       StorageType = "string",
#'       CACertificateIdentifier = "string",
#'       DBSubnetGroupName = "string",
#'       PendingCloudwatchLogsExports = list(
#'         LogTypesToEnable = list(
#'           "string"
#'         ),
#'         LogTypesToDisable = list(
#'           "string"
#'         )
#'       ),
#'       ProcessorFeatures = list(
#'         list(
#'           Name = "string",
#'           Value = "string"
#'         )
#'       ),
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE
#'     ),
#'     LatestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MultiAZ = TRUE|FALSE,
#'     EngineVersion = "string",
#'     AutoMinorVersionUpgrade = TRUE|FALSE,
#'     ReadReplicaSourceDBInstanceIdentifier = "string",
#'     ReadReplicaDBInstanceIdentifiers = list(
#'       "string"
#'     ),
#'     ReadReplicaDBClusterIdentifiers = list(
#'       "string"
#'     ),
#'     ReplicaMode = "open-read-only"|"mounted",
#'     LicenseModel = "string",
#'     Iops = 123,
#'     OptionGroupMemberships = list(
#'       list(
#'         OptionGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     CharacterSetName = "string",
#'     NcharCharacterSetName = "string",
#'     SecondaryAvailabilityZone = "string",
#'     PubliclyAccessible = TRUE|FALSE,
#'     StatusInfos = list(
#'       list(
#'         StatusType = "string",
#'         Normal = TRUE|FALSE,
#'         Status = "string",
#'         Message = "string"
#'       )
#'     ),
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     DbInstancePort = 123,
#'     DBClusterIdentifier = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DbiResourceId = "string",
#'     CACertificateIdentifier = "string",
#'     DomainMemberships = list(
#'       list(
#'         Domain = "string",
#'         Status = "string",
#'         FQDN = "string",
#'         IAMRoleName = "string"
#'       )
#'     ),
#'     CopyTagsToSnapshot = TRUE|FALSE,
#'     MonitoringInterval = 123,
#'     EnhancedMonitoringResourceArn = "string",
#'     MonitoringRoleArn = "string",
#'     PromotionTier = 123,
#'     DBInstanceArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     PerformanceInsightsEnabled = TRUE|FALSE,
#'     PerformanceInsightsKMSKeyId = "string",
#'     PerformanceInsightsRetentionPeriod = 123,
#'     EnabledCloudwatchLogsExports = list(
#'       "string"
#'     ),
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DeletionProtection = TRUE|FALSE,
#'     AssociatedRoles = list(
#'       list(
#'         RoleArn = "string",
#'         FeatureName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     ListenerEndpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     MaxAllocatedStorage = 123,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DBInstanceAutomatedBackupsReplications = list(
#'       list(
#'         DBInstanceAutomatedBackupsArn = "string"
#'       )
#'     ),
#'     CustomerOwnedIpEnabled = TRUE|FALSE
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_instance_read_replica(
#'   DBInstanceIdentifier = "string",
#'   SourceDBInstanceIdentifier = "string",
#'   DBInstanceClass = "string",
#'   AvailabilityZone = "string",
#'   Port = 123,
#'   MultiAZ = TRUE|FALSE,
#'   AutoMinorVersionUpgrade = TRUE|FALSE,
#'   Iops = 123,
#'   OptionGroupName = "string",
#'   DBParameterGroupName = "string",
#'   PubliclyAccessible = TRUE|FALSE,
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   DBSubnetGroupName = "string",
#'   VpcSecurityGroupIds = list(
#'     "string"
#'   ),
#'   StorageType = "string",
#'   CopyTagsToSnapshot = TRUE|FALSE,
#'   MonitoringInterval = 123,
#'   MonitoringRoleArn = "string",
#'   KmsKeyId = "string",
#'   PreSignedUrl = "string",
#'   EnableIAMDatabaseAuthentication = TRUE|FALSE,
#'   EnablePerformanceInsights = TRUE|FALSE,
#'   PerformanceInsightsKMSKeyId = "string",
#'   PerformanceInsightsRetentionPeriod = 123,
#'   EnableCloudwatchLogsExports = list(
#'     "string"
#'   ),
#'   ProcessorFeatures = list(
#'     list(
#'       Name = "string",
#'       Value = "string"
#'     )
#'   ),
#'   UseDefaultProcessorFeatures = TRUE|FALSE,
#'   DeletionProtection = TRUE|FALSE,
#'   Domain = "string",
#'   DomainIAMRoleName = "string",
#'   ReplicaMode = "open-read-only"|"mounted",
#'   MaxAllocatedStorage = 123,
#'   SourceRegion = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_instance_read_replica
rds_create_db_instance_read_replica <- function(DBInstanceIdentifier, SourceDBInstanceIdentifier, DBInstanceClass = NULL, AvailabilityZone = NULL, Port = NULL, MultiAZ = NULL, AutoMinorVersionUpgrade = NULL, Iops = NULL, OptionGroupName = NULL, DBParameterGroupName = NULL, PubliclyAccessible = NULL, Tags = NULL, DBSubnetGroupName = NULL, VpcSecurityGroupIds = NULL, StorageType = NULL, CopyTagsToSnapshot = NULL, MonitoringInterval = NULL, MonitoringRoleArn = NULL, KmsKeyId = NULL, PreSignedUrl = NULL, EnableIAMDatabaseAuthentication = NULL, EnablePerformanceInsights = NULL, PerformanceInsightsKMSKeyId = NULL, PerformanceInsightsRetentionPeriod = NULL, EnableCloudwatchLogsExports = NULL, ProcessorFeatures = NULL, UseDefaultProcessorFeatures = NULL, DeletionProtection = NULL, Domain = NULL, DomainIAMRoleName = NULL, ReplicaMode = NULL, MaxAllocatedStorage = NULL, SourceRegion = NULL) {
  op <- new_operation(
    name = "CreateDBInstanceReadReplica",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_instance_read_replica_input(DBInstanceIdentifier = DBInstanceIdentifier, SourceDBInstanceIdentifier = SourceDBInstanceIdentifier, DBInstanceClass = DBInstanceClass, AvailabilityZone = AvailabilityZone, Port = Port, MultiAZ = MultiAZ, AutoMinorVersionUpgrade = AutoMinorVersionUpgrade, Iops = Iops, OptionGroupName = OptionGroupName, DBParameterGroupName = DBParameterGroupName, PubliclyAccessible = PubliclyAccessible, Tags = Tags, DBSubnetGroupName = DBSubnetGroupName, VpcSecurityGroupIds = VpcSecurityGroupIds, StorageType = StorageType, CopyTagsToSnapshot = CopyTagsToSnapshot, MonitoringInterval = MonitoringInterval, MonitoringRoleArn = MonitoringRoleArn, KmsKeyId = KmsKeyId, PreSignedUrl = PreSignedUrl, EnableIAMDatabaseAuthentication = EnableIAMDatabaseAuthentication, EnablePerformanceInsights = EnablePerformanceInsights, PerformanceInsightsKMSKeyId = PerformanceInsightsKMSKeyId, PerformanceInsightsRetentionPeriod = PerformanceInsightsRetentionPeriod, EnableCloudwatchLogsExports = EnableCloudwatchLogsExports, ProcessorFeatures = ProcessorFeatures, UseDefaultProcessorFeatures = UseDefaultProcessorFeatures, DeletionProtection = DeletionProtection, Domain = Domain, DomainIAMRoleName = DomainIAMRoleName, ReplicaMode = ReplicaMode, MaxAllocatedStorage = MaxAllocatedStorage, SourceRegion = SourceRegion)
  output <- .rds$create_db_instance_read_replica_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_instance_read_replica <- rds_create_db_instance_read_replica

#' Creates a new DB parameter group
#'
#' @description
#' Creates a new DB parameter group.
#' 
#' A DB parameter group is initially created with the default parameters
#' for the database engine used by the DB instance. To provide custom
#' values for any of the parameters, you must modify the group after
#' creating it using *ModifyDBParameterGroup*. Once you've created a DB
#' parameter group, you need to associate it with your DB instance using
#' *ModifyDBInstance*. When you associate a new DB parameter group with a
#' running DB instance, you need to reboot the DB instance without failover
#' for the new DB parameter group and associated settings to take effect.
#' 
#' After you create a DB parameter group, you should wait at least 5
#' minutes before creating your first DB instance that uses that DB
#' parameter group as the default parameter group. This allows Amazon RDS
#' to fully complete the create action before the parameter group is used
#' as the default for a new DB instance. This is especially important for
#' parameters that are critical when creating the default database for a DB
#' instance, such as the character set for the default database defined by
#' the `character_set_database` parameter. You can use the *Parameter
#' Groups* option of the Amazon RDS console or the *DescribeDBParameters*
#' command to verify that your DB parameter group has been created or
#' modified.
#'
#' @usage
#' rds_create_db_parameter_group(DBParameterGroupName,
#'   DBParameterGroupFamily, Description, Tags)
#'
#' @param DBParameterGroupName &#91;required&#93; The name of the DB parameter group.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' This value is stored as a lowercase string.
#' @param DBParameterGroupFamily &#91;required&#93; The DB parameter group family name. A DB parameter group can be
#' associated with one and only one DB parameter group family, and can be
#' applied only to a DB instance running a database engine and engine
#' version compatible with that DB parameter group family.
#' 
#' To list all of the available parameter group families, use the following
#' command:
#' 
#' `aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"`
#' 
#' The output contains duplicates.
#' @param Description &#91;required&#93; The description for the DB parameter group.
#' @param Tags Tags to assign to the DB parameter group.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBParameterGroup = list(
#'     DBParameterGroupName = "string",
#'     DBParameterGroupFamily = "string",
#'     Description = "string",
#'     DBParameterGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_parameter_group(
#'   DBParameterGroupName = "string",
#'   DBParameterGroupFamily = "string",
#'   Description = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_parameter_group
rds_create_db_parameter_group <- function(DBParameterGroupName, DBParameterGroupFamily, Description, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_parameter_group_input(DBParameterGroupName = DBParameterGroupName, DBParameterGroupFamily = DBParameterGroupFamily, Description = Description, Tags = Tags)
  output <- .rds$create_db_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_parameter_group <- rds_create_db_parameter_group

#' Creates a new DB proxy
#'
#' @description
#' Creates a new DB proxy.
#'
#' @usage
#' rds_create_db_proxy(DBProxyName, EngineFamily, Auth, RoleArn,
#'   VpcSubnetIds, VpcSecurityGroupIds, RequireTLS, IdleClientTimeout,
#'   DebugLogging, Tags)
#'
#' @param DBProxyName &#91;required&#93; The identifier for the proxy. This name must be unique for all proxies
#' owned by your AWS account in the specified AWS Region. An identifier
#' must begin with a letter and must contain only ASCII letters, digits,
#' and hyphens; it can't end with a hyphen or contain two consecutive
#' hyphens.
#' @param EngineFamily &#91;required&#93; The kinds of databases that the proxy can connect to. This value
#' determines which database network protocol the proxy recognizes when it
#' interprets network traffic to and from the database. The engine family
#' applies to MySQL and PostgreSQL for both RDS and Aurora.
#' @param Auth &#91;required&#93; The authorization mechanism that the proxy uses.
#' @param RoleArn &#91;required&#93; The Amazon Resource Name (ARN) of the IAM role that the proxy uses to
#' access secrets in AWS Secrets Manager.
#' @param VpcSubnetIds &#91;required&#93; One or more VPC subnet IDs to associate with the new proxy.
#' @param VpcSecurityGroupIds One or more VPC security group IDs to associate with the new proxy.
#' @param RequireTLS A Boolean parameter that specifies whether Transport Layer Security
#' (TLS) encryption is required for connections to the proxy. By enabling
#' this setting, you can enforce encrypted TLS connections to the proxy.
#' @param IdleClientTimeout The number of seconds that a connection to the proxy can be inactive
#' before the proxy disconnects it. You can set this value higher or lower
#' than the connection timeout limit for the associated database.
#' @param DebugLogging Whether the proxy includes detailed information about SQL statements in
#' its logs. This information helps you to debug issues involving SQL
#' behavior or the performance and scalability of the proxy connections.
#' The debug information includes the text of SQL statements that you
#' submit through the proxy. Thus, only enable this setting when needed for
#' debugging, and only when you have security measures in place to
#' safeguard any sensitive information that appears in the logs.
#' @param Tags An optional set of key-value pairs to associate arbitrary data of your
#' choosing with the proxy.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBProxy = list(
#'     DBProxyName = "string",
#'     DBProxyArn = "string",
#'     Status = "available"|"modifying"|"incompatible-network"|"insufficient-resource-limits"|"creating"|"deleting"|"suspended"|"suspending"|"reactivating",
#'     EngineFamily = "string",
#'     VpcSecurityGroupIds = list(
#'       "string"
#'     ),
#'     VpcSubnetIds = list(
#'       "string"
#'     ),
#'     Auth = list(
#'       list(
#'         Description = "string",
#'         UserName = "string",
#'         AuthScheme = "SECRETS",
#'         SecretArn = "string",
#'         IAMAuth = "DISABLED"|"REQUIRED"
#'       )
#'     ),
#'     RoleArn = "string",
#'     Endpoint = "string",
#'     RequireTLS = TRUE|FALSE,
#'     IdleClientTimeout = 123,
#'     DebugLogging = TRUE|FALSE,
#'     CreatedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     UpdatedDate = as.POSIXct(
#'       "2015-01-01"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_proxy(
#'   DBProxyName = "string",
#'   EngineFamily = "MYSQL"|"POSTGRESQL",
#'   Auth = list(
#'     list(
#'       Description = "string",
#'       UserName = "string",
#'       AuthScheme = "SECRETS",
#'       SecretArn = "string",
#'       IAMAuth = "DISABLED"|"REQUIRED"
#'     )
#'   ),
#'   RoleArn = "string",
#'   VpcSubnetIds = list(
#'     "string"
#'   ),
#'   VpcSecurityGroupIds = list(
#'     "string"
#'   ),
#'   RequireTLS = TRUE|FALSE,
#'   IdleClientTimeout = 123,
#'   DebugLogging = TRUE|FALSE,
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_proxy
rds_create_db_proxy <- function(DBProxyName, EngineFamily, Auth, RoleArn, VpcSubnetIds, VpcSecurityGroupIds = NULL, RequireTLS = NULL, IdleClientTimeout = NULL, DebugLogging = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBProxy",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_proxy_input(DBProxyName = DBProxyName, EngineFamily = EngineFamily, Auth = Auth, RoleArn = RoleArn, VpcSubnetIds = VpcSubnetIds, VpcSecurityGroupIds = VpcSecurityGroupIds, RequireTLS = RequireTLS, IdleClientTimeout = IdleClientTimeout, DebugLogging = DebugLogging, Tags = Tags)
  output <- .rds$create_db_proxy_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_proxy <- rds_create_db_proxy

#' Creates a new DB security group
#'
#' @description
#' Creates a new DB security group. DB security groups control access to a
#' DB instance.
#' 
#' A DB security group controls access to EC2-Classic DB instances that are
#' not in a VPC.
#'
#' @usage
#' rds_create_db_security_group(DBSecurityGroupName,
#'   DBSecurityGroupDescription, Tags)
#'
#' @param DBSecurityGroupName &#91;required&#93; The name for the DB security group. This value is stored as a lowercase
#' string.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' -   Must not be "Default"
#' 
#' Example: `mysecuritygroup`
#' @param DBSecurityGroupDescription &#91;required&#93; The description for the DB security group.
#' @param Tags Tags to assign to the DB security group.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSecurityGroup = list(
#'     OwnerId = "string",
#'     DBSecurityGroupName = "string",
#'     DBSecurityGroupDescription = "string",
#'     VpcId = "string",
#'     EC2SecurityGroups = list(
#'       list(
#'         Status = "string",
#'         EC2SecurityGroupName = "string",
#'         EC2SecurityGroupId = "string",
#'         EC2SecurityGroupOwnerId = "string"
#'       )
#'     ),
#'     IPRanges = list(
#'       list(
#'         Status = "string",
#'         CIDRIP = "string"
#'       )
#'     ),
#'     DBSecurityGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_security_group(
#'   DBSecurityGroupName = "string",
#'   DBSecurityGroupDescription = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_security_group
rds_create_db_security_group <- function(DBSecurityGroupName, DBSecurityGroupDescription, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBSecurityGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_security_group_input(DBSecurityGroupName = DBSecurityGroupName, DBSecurityGroupDescription = DBSecurityGroupDescription, Tags = Tags)
  output <- .rds$create_db_security_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_security_group <- rds_create_db_security_group

#' Creates a snapshot of a DB instance
#'
#' @description
#' Creates a snapshot of a DB instance. The source DB instance must be in
#' the `available` or `storage-optimization` state.
#'
#' @usage
#' rds_create_db_snapshot(DBSnapshotIdentifier, DBInstanceIdentifier, Tags)
#'
#' @param DBSnapshotIdentifier &#91;required&#93; The identifier for the DB snapshot.
#' 
#' Constraints:
#' 
#' -   Can't be null, empty, or blank
#' 
#' -   Must contain from 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `my-snapshot-id`
#' @param DBInstanceIdentifier &#91;required&#93; The identifier of the DB instance that you want to create the snapshot
#' of.
#' 
#' Constraints:
#' 
#' -   Must match the identifier of an existing DBInstance.
#' @param Tags 
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSnapshot = list(
#'     DBSnapshotIdentifier = "string",
#'     DBInstanceIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     AvailabilityZone = "string",
#'     VpcId = "string",
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     Iops = 123,
#'     OptionGroupName = "string",
#'     PercentProgress = 123,
#'     SourceRegion = "string",
#'     SourceDBSnapshotIdentifier = "string",
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     Encrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBSnapshotArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DbiResourceId = "string",
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_snapshot(
#'   DBSnapshotIdentifier = "string",
#'   DBInstanceIdentifier = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_snapshot
rds_create_db_snapshot <- function(DBSnapshotIdentifier, DBInstanceIdentifier, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_snapshot_input(DBSnapshotIdentifier = DBSnapshotIdentifier, DBInstanceIdentifier = DBInstanceIdentifier, Tags = Tags)
  output <- .rds$create_db_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_snapshot <- rds_create_db_snapshot

#' Creates a new DB subnet group
#'
#' @description
#' Creates a new DB subnet group. DB subnet groups must contain at least
#' one subnet in at least two AZs in the AWS Region.
#'
#' @usage
#' rds_create_db_subnet_group(DBSubnetGroupName, DBSubnetGroupDescription,
#'   SubnetIds, Tags)
#'
#' @param DBSubnetGroupName &#91;required&#93; The name for the DB subnet group. This value is stored as a lowercase
#' string.
#' 
#' Constraints: Must contain no more than 255 letters, numbers, periods,
#' underscores, spaces, or hyphens. Must not be default.
#' 
#' Example: `mySubnetgroup`
#' @param DBSubnetGroupDescription &#91;required&#93; The description for the DB subnet group.
#' @param SubnetIds &#91;required&#93; The EC2 Subnet IDs for the DB subnet group.
#' @param Tags Tags to assign to the DB subnet group.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSubnetGroup = list(
#'     DBSubnetGroupName = "string",
#'     DBSubnetGroupDescription = "string",
#'     VpcId = "string",
#'     SubnetGroupStatus = "string",
#'     Subnets = list(
#'       list(
#'         SubnetIdentifier = "string",
#'         SubnetAvailabilityZone = list(
#'           Name = "string"
#'         ),
#'         SubnetOutpost = list(
#'           Arn = "string"
#'         ),
#'         SubnetStatus = "string"
#'       )
#'     ),
#'     DBSubnetGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_db_subnet_group(
#'   DBSubnetGroupName = "string",
#'   DBSubnetGroupDescription = "string",
#'   SubnetIds = list(
#'     "string"
#'   ),
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_db_subnet_group
rds_create_db_subnet_group <- function(DBSubnetGroupName, DBSubnetGroupDescription, SubnetIds, Tags = NULL) {
  op <- new_operation(
    name = "CreateDBSubnetGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_db_subnet_group_input(DBSubnetGroupName = DBSubnetGroupName, DBSubnetGroupDescription = DBSubnetGroupDescription, SubnetIds = SubnetIds, Tags = Tags)
  output <- .rds$create_db_subnet_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_db_subnet_group <- rds_create_db_subnet_group

#' Creates an RDS event notification subscription
#'
#' @description
#' Creates an RDS event notification subscription. This action requires a
#' topic Amazon Resource Name (ARN) created by either the RDS console, the
#' SNS console, or the SNS API. To obtain an ARN with SNS, you must create
#' a topic in Amazon SNS and subscribe to the topic. The ARN is displayed
#' in the SNS console.
#' 
#' You can specify the type of source (`SourceType`) that you want to be
#' notified of and provide a list of RDS sources (`SourceIds`) that
#' triggers the events. You can also provide a list of event categories
#' (`EventCategories`) for events that you want to be notified of. For
#' example, you can specify `SourceType` = `db-instance`, `SourceIds` =
#' `mydbinstance1`, `mydbinstance2` and `EventCategories` = `Availability`,
#' `Backup`.
#' 
#' If you specify both the `SourceType` and `SourceIds`, such as
#' `SourceType` = `db-instance` and `SourceIdentifier` = `myDBInstance1`,
#' you are notified of all the `db-instance` events for the specified
#' source. If you specify a `SourceType` but do not specify a
#' `SourceIdentifier`, you receive notice of the events for that source
#' type for all your RDS sources. If you don't specify either the
#' SourceType or the `SourceIdentifier`, you are notified of events
#' generated from all RDS sources belonging to your customer account.
#' 
#' RDS event notification is only available for unencrypted SNS topics. If
#' you specify an encrypted SNS topic, event notifications aren't sent for
#' the topic.
#'
#' @usage
#' rds_create_event_subscription(SubscriptionName, SnsTopicArn, SourceType,
#'   EventCategories, SourceIds, Enabled, Tags)
#'
#' @param SubscriptionName &#91;required&#93; The name of the subscription.
#' 
#' Constraints: The name must be less than 255 characters.
#' @param SnsTopicArn &#91;required&#93; The Amazon Resource Name (ARN) of the SNS topic created for event
#' notification. The ARN is created by Amazon SNS when you create a topic
#' and subscribe to it.
#' @param SourceType The type of source that is generating the events. For example, if you
#' want to be notified of events generated by a DB instance, you set this
#' parameter to `db-instance`. If this value isn't specified, all events
#' are returned.
#' 
#' Valid values: `db-instance` | `db-cluster` | `db-parameter-group` |
#' `db-security-group` | `db-snapshot` | `db-cluster-snapshot`
#' @param EventCategories A list of event categories for a particular source type (`SourceType`)
#' that you want to subscribe to. You can see a list of the categories for
#' a given source type in
#' [Events](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html)
#' in the *Amazon RDS User Guide* or by using the
#' [`describe_event_categories`][rds_describe_event_categories] operation.
#' @param SourceIds The list of identifiers of the event sources for which events are
#' returned. If not specified, then all sources are included in the
#' response. An identifier must begin with a letter and must contain only
#' ASCII letters, digits, and hyphens. It can't end with a hyphen or
#' contain two consecutive hyphens.
#' 
#' Constraints:
#' 
#' -   If a `SourceIds` value is supplied, `SourceType` must also be
#'     provided.
#' 
#' -   If the source type is a DB instance, a `DBInstanceIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB cluster, a `DBClusterIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB parameter group, a `DBParameterGroupName`
#'     value must be supplied.
#' 
#' -   If the source type is a DB security group, a `DBSecurityGroupName`
#'     value must be supplied.
#' 
#' -   If the source type is a DB snapshot, a `DBSnapshotIdentifier` value
#'     must be supplied.
#' 
#' -   If the source type is a DB cluster snapshot, a
#'     `DBClusterSnapshotIdentifier` value must be supplied.
#' @param Enabled A value that indicates whether to activate the subscription. If the
#' event notification subscription isn't activated, the subscription is
#' created but not active.
#' @param Tags 
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EventSubscription = list(
#'     CustomerAwsId = "string",
#'     CustSubscriptionId = "string",
#'     SnsTopicArn = "string",
#'     Status = "string",
#'     SubscriptionCreationTime = "string",
#'     SourceType = "string",
#'     SourceIdsList = list(
#'       "string"
#'     ),
#'     EventCategoriesList = list(
#'       "string"
#'     ),
#'     Enabled = TRUE|FALSE,
#'     EventSubscriptionArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_event_subscription(
#'   SubscriptionName = "string",
#'   SnsTopicArn = "string",
#'   SourceType = "string",
#'   EventCategories = list(
#'     "string"
#'   ),
#'   SourceIds = list(
#'     "string"
#'   ),
#'   Enabled = TRUE|FALSE,
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_event_subscription
rds_create_event_subscription <- function(SubscriptionName, SnsTopicArn, SourceType = NULL, EventCategories = NULL, SourceIds = NULL, Enabled = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateEventSubscription",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_event_subscription_input(SubscriptionName = SubscriptionName, SnsTopicArn = SnsTopicArn, SourceType = SourceType, EventCategories = EventCategories, SourceIds = SourceIds, Enabled = Enabled, Tags = Tags)
  output <- .rds$create_event_subscription_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_event_subscription <- rds_create_event_subscription

#' Creates an Aurora global database spread across multiple AWS Regions
#'
#' @description
#' Creates an Aurora global database spread across multiple AWS Regions.
#' The global database contains a single primary cluster with read-write
#' capability, and a read-only secondary cluster that receives data from
#' the primary cluster through high-speed replication performed by the
#' Aurora storage subsystem.
#' 
#' You can create a global database that is initially empty, and then add a
#' primary cluster and a secondary cluster to it. Or you can specify an
#' existing Aurora cluster during the create operation, and this cluster
#' becomes the primary cluster of the global database.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_create_global_cluster(GlobalClusterIdentifier,
#'   SourceDBClusterIdentifier, Engine, EngineVersion, DeletionProtection,
#'   DatabaseName, StorageEncrypted)
#'
#' @param GlobalClusterIdentifier The cluster identifier of the new global database cluster.
#' @param SourceDBClusterIdentifier The Amazon Resource Name (ARN) to use as the primary cluster of the
#' global database. This parameter is optional.
#' @param Engine The name of the database engine to be used for this DB cluster.
#' @param EngineVersion The engine version of the Aurora global database.
#' @param DeletionProtection The deletion protection setting for the new global database. The global
#' database can't be deleted when deletion protection is enabled.
#' @param DatabaseName The name for your database of up to 64 alpha-numeric characters. If you
#' do not provide a name, Amazon Aurora will not create a database in the
#' global database cluster you are creating.
#' @param StorageEncrypted The storage encryption setting for the new global database cluster.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   GlobalCluster = list(
#'     GlobalClusterIdentifier = "string",
#'     GlobalClusterResourceId = "string",
#'     GlobalClusterArn = "string",
#'     Status = "string",
#'     Engine = "string",
#'     EngineVersion = "string",
#'     DatabaseName = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     DeletionProtection = TRUE|FALSE,
#'     GlobalClusterMembers = list(
#'       list(
#'         DBClusterArn = "string",
#'         Readers = list(
#'           "string"
#'         ),
#'         IsWriter = TRUE|FALSE,
#'         GlobalWriteForwardingStatus = "enabled"|"disabled"|"enabling"|"disabling"|"unknown"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_global_cluster(
#'   GlobalClusterIdentifier = "string",
#'   SourceDBClusterIdentifier = "string",
#'   Engine = "string",
#'   EngineVersion = "string",
#'   DeletionProtection = TRUE|FALSE,
#'   DatabaseName = "string",
#'   StorageEncrypted = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_global_cluster
rds_create_global_cluster <- function(GlobalClusterIdentifier = NULL, SourceDBClusterIdentifier = NULL, Engine = NULL, EngineVersion = NULL, DeletionProtection = NULL, DatabaseName = NULL, StorageEncrypted = NULL) {
  op <- new_operation(
    name = "CreateGlobalCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_global_cluster_input(GlobalClusterIdentifier = GlobalClusterIdentifier, SourceDBClusterIdentifier = SourceDBClusterIdentifier, Engine = Engine, EngineVersion = EngineVersion, DeletionProtection = DeletionProtection, DatabaseName = DatabaseName, StorageEncrypted = StorageEncrypted)
  output <- .rds$create_global_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_global_cluster <- rds_create_global_cluster

#' Creates a new option group
#'
#' @description
#' Creates a new option group. You can create up to 20 option groups.
#'
#' @usage
#' rds_create_option_group(OptionGroupName, EngineName, MajorEngineVersion,
#'   OptionGroupDescription, Tags)
#'
#' @param OptionGroupName &#91;required&#93; Specifies the name of the option group to be created.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' Example: `myoptiongroup`
#' @param EngineName &#91;required&#93; Specifies the name of the engine that this option group should be
#' associated with.
#' @param MajorEngineVersion &#91;required&#93; Specifies the major version of the engine that this option group should
#' be associated with.
#' @param OptionGroupDescription &#91;required&#93; The description of the option group.
#' @param Tags Tags to assign to the option group.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OptionGroup = list(
#'     OptionGroupName = "string",
#'     OptionGroupDescription = "string",
#'     EngineName = "string",
#'     MajorEngineVersion = "string",
#'     Options = list(
#'       list(
#'         OptionName = "string",
#'         OptionDescription = "string",
#'         Persistent = TRUE|FALSE,
#'         Permanent = TRUE|FALSE,
#'         Port = 123,
#'         OptionVersion = "string",
#'         OptionSettings = list(
#'           list(
#'             Name = "string",
#'             Value = "string",
#'             DefaultValue = "string",
#'             Description = "string",
#'             ApplyType = "string",
#'             DataType = "string",
#'             AllowedValues = "string",
#'             IsModifiable = TRUE|FALSE,
#'             IsCollection = TRUE|FALSE
#'           )
#'         ),
#'         DBSecurityGroupMemberships = list(
#'           list(
#'             DBSecurityGroupName = "string",
#'             Status = "string"
#'           )
#'         ),
#'         VpcSecurityGroupMemberships = list(
#'           list(
#'             VpcSecurityGroupId = "string",
#'             Status = "string"
#'           )
#'         )
#'       )
#'     ),
#'     AllowsVpcAndNonVpcInstanceMemberships = TRUE|FALSE,
#'     VpcId = "string",
#'     OptionGroupArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_option_group(
#'   OptionGroupName = "string",
#'   EngineName = "string",
#'   MajorEngineVersion = "string",
#'   OptionGroupDescription = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_create_option_group
rds_create_option_group <- function(OptionGroupName, EngineName, MajorEngineVersion, OptionGroupDescription, Tags = NULL) {
  op <- new_operation(
    name = "CreateOptionGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$create_option_group_input(OptionGroupName = OptionGroupName, EngineName = EngineName, MajorEngineVersion = MajorEngineVersion, OptionGroupDescription = OptionGroupDescription, Tags = Tags)
  output <- .rds$create_option_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$create_option_group <- rds_create_option_group

#' Deletes a custom Availability Zone (AZ)
#'
#' @description
#' Deletes a custom Availability Zone (AZ).
#' 
#' A custom AZ is an on-premises AZ that is integrated with a VMware
#' vSphere cluster.
#' 
#' For more information about RDS on VMware, see the [RDS on VMware User
#' Guide.](https://docs.aws.amazon.com/AmazonRDS/latest/RDSonVMwareUserGuide/rds-on-vmware.html)
#'
#' @usage
#' rds_delete_custom_availability_zone(CustomAvailabilityZoneId)
#'
#' @param CustomAvailabilityZoneId &#91;required&#93; The custom AZ identifier.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   CustomAvailabilityZone = list(
#'     CustomAvailabilityZoneId = "string",
#'     CustomAvailabilityZoneName = "string",
#'     CustomAvailabilityZoneStatus = "string",
#'     VpnDetails = list(
#'       VpnId = "string",
#'       VpnTunnelOriginatorIP = "string",
#'       VpnGatewayIp = "string",
#'       VpnPSK = "string",
#'       VpnName = "string",
#'       VpnState = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_custom_availability_zone(
#'   CustomAvailabilityZoneId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_custom_availability_zone
rds_delete_custom_availability_zone <- function(CustomAvailabilityZoneId) {
  op <- new_operation(
    name = "DeleteCustomAvailabilityZone",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_custom_availability_zone_input(CustomAvailabilityZoneId = CustomAvailabilityZoneId)
  output <- .rds$delete_custom_availability_zone_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_custom_availability_zone <- rds_delete_custom_availability_zone

#' The DeleteDBCluster action deletes a previously provisioned DB cluster
#'
#' @description
#' The DeleteDBCluster action deletes a previously provisioned DB cluster.
#' When you delete a DB cluster, all automated backups for that DB cluster
#' are deleted and can't be recovered. Manual DB cluster snapshots of the
#' specified DB cluster are not deleted.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_delete_db_cluster(DBClusterIdentifier, SkipFinalSnapshot,
#'   FinalDBSnapshotIdentifier)
#'
#' @param DBClusterIdentifier &#91;required&#93; The DB cluster identifier for the DB cluster to be deleted. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   Must match an existing DBClusterIdentifier.
#' @param SkipFinalSnapshot A value that indicates whether to skip the creation of a final DB
#' cluster snapshot before the DB cluster is deleted. If skip is specified,
#' no DB cluster snapshot is created. If skip isn't specified, a DB cluster
#' snapshot is created before the DB cluster is deleted. By default, skip
#' isn't specified, and the DB cluster snapshot is created. By default,
#' this parameter is disabled.
#' 
#' You must specify a `FinalDBSnapshotIdentifier` parameter if
#' `SkipFinalSnapshot` is disabled.
#' @param FinalDBSnapshotIdentifier The DB cluster snapshot identifier of the new DB cluster snapshot
#' created when `SkipFinalSnapshot` is disabled.
#' 
#' Specifying this parameter and also skipping the creation of a final DB
#' cluster snapshot with the `SkipFinalShapshot` parameter results in an
#' error.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBCluster = list(
#'     AllocatedStorage = 123,
#'     AvailabilityZones = list(
#'       "string"
#'     ),
#'     BackupRetentionPeriod = 123,
#'     CharacterSetName = "string",
#'     DatabaseName = "string",
#'     DBClusterIdentifier = "string",
#'     DBClusterParameterGroup = "string",
#'     DBSubnetGroup = "string",
#'     Status = "string",
#'     PercentProgress = "string",
#'     EarliestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Endpoint = "string",
#'     ReaderEndpoint = "string",
#'     CustomEndpoints = list(
#'       "string"
#'     ),
#'     MultiAZ = TRUE|FALSE,
#'     Engine = "string",
#'     EngineVersion = "string",
#'     LatestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Port = 123,
#'     MasterUsername = "string",
#'     DBClusterOptionGroupMemberships = list(
#'       list(
#'         DBClusterOptionGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     PreferredBackupWindow = "string",
#'     PreferredMaintenanceWindow = "string",
#'     ReplicationSourceIdentifier = "string",
#'     ReadReplicaIdentifiers = list(
#'       "string"
#'     ),
#'     DBClusterMembers = list(
#'       list(
#'         DBInstanceIdentifier = "string",
#'         IsClusterWriter = TRUE|FALSE,
#'         DBClusterParameterGroupStatus = "string",
#'         PromotionTier = 123
#'       )
#'     ),
#'     VpcSecurityGroups = list(
#'       list(
#'         VpcSecurityGroupId = "string",
#'         Status = "string"
#'       )
#'     ),
#'     HostedZoneId = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DbClusterResourceId = "string",
#'     DBClusterArn = "string",
#'     AssociatedRoles = list(
#'       list(
#'         RoleArn = "string",
#'         Status = "string",
#'         FeatureName = "string"
#'       )
#'     ),
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     CloneGroupId = "string",
#'     ClusterCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     EarliestBacktrackTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     BacktrackWindow = 123,
#'     BacktrackConsumedChangeRecords = 123,
#'     EnabledCloudwatchLogsExports = list(
#'       "string"
#'     ),
#'     Capacity = 123,
#'     EngineMode = "string",
#'     ScalingConfigurationInfo = list(
#'       MinCapacity = 123,
#'       MaxCapacity = 123,
#'       AutoPause = TRUE|FALSE,
#'       SecondsUntilAutoPause = 123,
#'       TimeoutAction = "string"
#'     ),
#'     DeletionProtection = TRUE|FALSE,
#'     HttpEndpointEnabled = TRUE|FALSE,
#'     ActivityStreamMode = "sync"|"async",
#'     ActivityStreamStatus = "stopped"|"starting"|"started"|"stopping",
#'     ActivityStreamKmsKeyId = "string",
#'     ActivityStreamKinesisStreamName = "string",
#'     CopyTagsToSnapshot = TRUE|FALSE,
#'     CrossAccountClone = TRUE|FALSE,
#'     DomainMemberships = list(
#'       list(
#'         Domain = "string",
#'         Status = "string",
#'         FQDN = "string",
#'         IAMRoleName = "string"
#'       )
#'     ),
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     GlobalWriteForwardingStatus = "enabled"|"disabled"|"enabling"|"disabling"|"unknown",
#'     GlobalWriteForwardingRequested = TRUE|FALSE,
#'     PendingModifiedValues = list(
#'       PendingCloudwatchLogsExports = list(
#'         LogTypesToEnable = list(
#'           "string"
#'         ),
#'         LogTypesToDisable = list(
#'           "string"
#'         )
#'       ),
#'       DBClusterIdentifier = "string",
#'       MasterUserPassword = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       EngineVersion = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_cluster(
#'   DBClusterIdentifier = "string",
#'   SkipFinalSnapshot = TRUE|FALSE,
#'   FinalDBSnapshotIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_cluster
rds_delete_db_cluster <- function(DBClusterIdentifier, SkipFinalSnapshot = NULL, FinalDBSnapshotIdentifier = NULL) {
  op <- new_operation(
    name = "DeleteDBCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_cluster_input(DBClusterIdentifier = DBClusterIdentifier, SkipFinalSnapshot = SkipFinalSnapshot, FinalDBSnapshotIdentifier = FinalDBSnapshotIdentifier)
  output <- .rds$delete_db_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_cluster <- rds_delete_db_cluster

#' Deletes a custom endpoint and removes it from an Amazon Aurora DB
#' cluster
#'
#' @description
#' Deletes a custom endpoint and removes it from an Amazon Aurora DB
#' cluster.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_delete_db_cluster_endpoint(DBClusterEndpointIdentifier)
#'
#' @param DBClusterEndpointIdentifier &#91;required&#93; The identifier associated with the custom endpoint. This parameter is
#' stored as a lowercase string.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterEndpointIdentifier = "string",
#'   DBClusterIdentifier = "string",
#'   DBClusterEndpointResourceIdentifier = "string",
#'   Endpoint = "string",
#'   Status = "string",
#'   EndpointType = "string",
#'   CustomEndpointType = "string",
#'   StaticMembers = list(
#'     "string"
#'   ),
#'   ExcludedMembers = list(
#'     "string"
#'   ),
#'   DBClusterEndpointArn = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_cluster_endpoint(
#'   DBClusterEndpointIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_cluster_endpoint
rds_delete_db_cluster_endpoint <- function(DBClusterEndpointIdentifier) {
  op <- new_operation(
    name = "DeleteDBClusterEndpoint",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_cluster_endpoint_input(DBClusterEndpointIdentifier = DBClusterEndpointIdentifier)
  output <- .rds$delete_db_cluster_endpoint_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_cluster_endpoint <- rds_delete_db_cluster_endpoint

#' Deletes a specified DB cluster parameter group
#'
#' @description
#' Deletes a specified DB cluster parameter group. The DB cluster parameter
#' group to be deleted can't be associated with any DB clusters.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_delete_db_cluster_parameter_group(DBClusterParameterGroupName)
#'
#' @param DBClusterParameterGroupName &#91;required&#93; The name of the DB cluster parameter group.
#' 
#' Constraints:
#' 
#' -   Must be the name of an existing DB cluster parameter group.
#' 
#' -   You can't delete a default DB cluster parameter group.
#' 
#' -   Can't be associated with any DB clusters.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_cluster_parameter_group(
#'   DBClusterParameterGroupName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_cluster_parameter_group
rds_delete_db_cluster_parameter_group <- function(DBClusterParameterGroupName) {
  op <- new_operation(
    name = "DeleteDBClusterParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_cluster_parameter_group_input(DBClusterParameterGroupName = DBClusterParameterGroupName)
  output <- .rds$delete_db_cluster_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_cluster_parameter_group <- rds_delete_db_cluster_parameter_group

#' Deletes a DB cluster snapshot
#'
#' @description
#' Deletes a DB cluster snapshot. If the snapshot is being copied, the copy
#' operation is terminated.
#' 
#' The DB cluster snapshot must be in the `available` state to be deleted.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_delete_db_cluster_snapshot(DBClusterSnapshotIdentifier)
#'
#' @param DBClusterSnapshotIdentifier &#91;required&#93; The identifier of the DB cluster snapshot to delete.
#' 
#' Constraints: Must be the name of an existing DB cluster snapshot in the
#' `available` state.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterSnapshot = list(
#'     AvailabilityZones = list(
#'       "string"
#'     ),
#'     DBClusterSnapshotIdentifier = "string",
#'     DBClusterIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     VpcId = "string",
#'     ClusterCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     PercentProgress = 123,
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBClusterSnapshotArn = "string",
#'     SourceDBClusterSnapshotArn = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_cluster_snapshot(
#'   DBClusterSnapshotIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_cluster_snapshot
rds_delete_db_cluster_snapshot <- function(DBClusterSnapshotIdentifier) {
  op <- new_operation(
    name = "DeleteDBClusterSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_cluster_snapshot_input(DBClusterSnapshotIdentifier = DBClusterSnapshotIdentifier)
  output <- .rds$delete_db_cluster_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_cluster_snapshot <- rds_delete_db_cluster_snapshot

#' The DeleteDBInstance action deletes a previously provisioned DB instance
#'
#' @description
#' The DeleteDBInstance action deletes a previously provisioned DB
#' instance. When you delete a DB instance, all automated backups for that
#' instance are deleted and can't be recovered. Manual DB snapshots of the
#' DB instance to be deleted by
#' [`delete_db_instance`][rds_delete_db_instance] are not deleted.
#' 
#' If you request a final DB snapshot the status of the Amazon RDS DB
#' instance is `deleting` until the DB snapshot is created. The API action
#' `DescribeDBInstance` is used to monitor the status of this operation.
#' The action can't be canceled or reverted once submitted.
#' 
#' When a DB instance is in a failure state and has a status of `failed`,
#' `incompatible-restore`, or `incompatible-network`, you can only delete
#' it when you skip creation of the final snapshot with the
#' `SkipFinalSnapshot` parameter.
#' 
#' If the specified DB instance is part of an Amazon Aurora DB cluster, you
#' can't delete the DB instance if both of the following conditions are
#' true:
#' 
#' -   The DB cluster is a read replica of another Amazon Aurora DB
#'     cluster.
#' 
#' -   The DB instance is the only instance in the DB cluster.
#' 
#' To delete a DB instance in this case, first call the
#' [`promote_read_replica_db_cluster`][rds_promote_read_replica_db_cluster]
#' API action to promote the DB cluster so it's no longer a read replica.
#' After the promotion completes, then call the
#' [`delete_db_instance`][rds_delete_db_instance] API action to delete the
#' final instance in the DB cluster.
#'
#' @usage
#' rds_delete_db_instance(DBInstanceIdentifier, SkipFinalSnapshot,
#'   FinalDBSnapshotIdentifier, DeleteAutomatedBackups)
#'
#' @param DBInstanceIdentifier &#91;required&#93; The DB instance identifier for the DB instance to be deleted. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   Must match the name of an existing DB instance.
#' @param SkipFinalSnapshot A value that indicates whether to skip the creation of a final DB
#' snapshot before the DB instance is deleted. If skip is specified, no DB
#' snapshot is created. If skip isn't specified, a DB snapshot is created
#' before the DB instance is deleted. By default, skip isn't specified, and
#' the DB snapshot is created.
#' 
#' When a DB instance is in a failure state and has a status of 'failed',
#' 'incompatible-restore', or 'incompatible-network', it can only be
#' deleted when skip is specified.
#' 
#' Specify skip when deleting a read replica.
#' 
#' The FinalDBSnapshotIdentifier parameter must be specified if skip isn't
#' specified.
#' @param FinalDBSnapshotIdentifier The `DBSnapshotIdentifier` of the new `DBSnapshot` created when the
#' `SkipFinalSnapshot` parameter is disabled.
#' 
#' Specifying this parameter and also specifying to skip final DB snapshot
#' creation in SkipFinalShapshot results in an error.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters or numbers.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' -   Can't be specified when deleting a read replica.
#' @param DeleteAutomatedBackups A value that indicates whether to remove automated backups immediately
#' after the DB instance is deleted. This parameter isn't case-sensitive.
#' The default is to remove automated backups immediately after the DB
#' instance is deleted.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBInstance = list(
#'     DBInstanceIdentifier = "string",
#'     DBInstanceClass = "string",
#'     Engine = "string",
#'     DBInstanceStatus = "string",
#'     MasterUsername = "string",
#'     DBName = "string",
#'     Endpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     AllocatedStorage = 123,
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     PreferredBackupWindow = "string",
#'     BackupRetentionPeriod = 123,
#'     DBSecurityGroups = list(
#'       list(
#'         DBSecurityGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     VpcSecurityGroups = list(
#'       list(
#'         VpcSecurityGroupId = "string",
#'         Status = "string"
#'       )
#'     ),
#'     DBParameterGroups = list(
#'       list(
#'         DBParameterGroupName = "string",
#'         ParameterApplyStatus = "string"
#'       )
#'     ),
#'     AvailabilityZone = "string",
#'     DBSubnetGroup = list(
#'       DBSubnetGroupName = "string",
#'       DBSubnetGroupDescription = "string",
#'       VpcId = "string",
#'       SubnetGroupStatus = "string",
#'       Subnets = list(
#'         list(
#'           SubnetIdentifier = "string",
#'           SubnetAvailabilityZone = list(
#'             Name = "string"
#'           ),
#'           SubnetOutpost = list(
#'             Arn = "string"
#'           ),
#'           SubnetStatus = "string"
#'         )
#'       ),
#'       DBSubnetGroupArn = "string"
#'     ),
#'     PreferredMaintenanceWindow = "string",
#'     PendingModifiedValues = list(
#'       DBInstanceClass = "string",
#'       AllocatedStorage = 123,
#'       MasterUserPassword = "string",
#'       Port = 123,
#'       BackupRetentionPeriod = 123,
#'       MultiAZ = TRUE|FALSE,
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       Iops = 123,
#'       DBInstanceIdentifier = "string",
#'       StorageType = "string",
#'       CACertificateIdentifier = "string",
#'       DBSubnetGroupName = "string",
#'       PendingCloudwatchLogsExports = list(
#'         LogTypesToEnable = list(
#'           "string"
#'         ),
#'         LogTypesToDisable = list(
#'           "string"
#'         )
#'       ),
#'       ProcessorFeatures = list(
#'         list(
#'           Name = "string",
#'           Value = "string"
#'         )
#'       ),
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE
#'     ),
#'     LatestRestorableTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MultiAZ = TRUE|FALSE,
#'     EngineVersion = "string",
#'     AutoMinorVersionUpgrade = TRUE|FALSE,
#'     ReadReplicaSourceDBInstanceIdentifier = "string",
#'     ReadReplicaDBInstanceIdentifiers = list(
#'       "string"
#'     ),
#'     ReadReplicaDBClusterIdentifiers = list(
#'       "string"
#'     ),
#'     ReplicaMode = "open-read-only"|"mounted",
#'     LicenseModel = "string",
#'     Iops = 123,
#'     OptionGroupMemberships = list(
#'       list(
#'         OptionGroupName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     CharacterSetName = "string",
#'     NcharCharacterSetName = "string",
#'     SecondaryAvailabilityZone = "string",
#'     PubliclyAccessible = TRUE|FALSE,
#'     StatusInfos = list(
#'       list(
#'         StatusType = "string",
#'         Normal = TRUE|FALSE,
#'         Status = "string",
#'         Message = "string"
#'       )
#'     ),
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     DbInstancePort = 123,
#'     DBClusterIdentifier = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DbiResourceId = "string",
#'     CACertificateIdentifier = "string",
#'     DomainMemberships = list(
#'       list(
#'         Domain = "string",
#'         Status = "string",
#'         FQDN = "string",
#'         IAMRoleName = "string"
#'       )
#'     ),
#'     CopyTagsToSnapshot = TRUE|FALSE,
#'     MonitoringInterval = 123,
#'     EnhancedMonitoringResourceArn = "string",
#'     MonitoringRoleArn = "string",
#'     PromotionTier = 123,
#'     DBInstanceArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     PerformanceInsightsEnabled = TRUE|FALSE,
#'     PerformanceInsightsKMSKeyId = "string",
#'     PerformanceInsightsRetentionPeriod = 123,
#'     EnabledCloudwatchLogsExports = list(
#'       "string"
#'     ),
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DeletionProtection = TRUE|FALSE,
#'     AssociatedRoles = list(
#'       list(
#'         RoleArn = "string",
#'         FeatureName = "string",
#'         Status = "string"
#'       )
#'     ),
#'     ListenerEndpoint = list(
#'       Address = "string",
#'       Port = 123,
#'       HostedZoneId = "string"
#'     ),
#'     MaxAllocatedStorage = 123,
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DBInstanceAutomatedBackupsReplications = list(
#'       list(
#'         DBInstanceAutomatedBackupsArn = "string"
#'       )
#'     ),
#'     CustomerOwnedIpEnabled = TRUE|FALSE
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_instance(
#'   DBInstanceIdentifier = "string",
#'   SkipFinalSnapshot = TRUE|FALSE,
#'   FinalDBSnapshotIdentifier = "string",
#'   DeleteAutomatedBackups = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_instance
rds_delete_db_instance <- function(DBInstanceIdentifier, SkipFinalSnapshot = NULL, FinalDBSnapshotIdentifier = NULL, DeleteAutomatedBackups = NULL) {
  op <- new_operation(
    name = "DeleteDBInstance",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_instance_input(DBInstanceIdentifier = DBInstanceIdentifier, SkipFinalSnapshot = SkipFinalSnapshot, FinalDBSnapshotIdentifier = FinalDBSnapshotIdentifier, DeleteAutomatedBackups = DeleteAutomatedBackups)
  output <- .rds$delete_db_instance_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_instance <- rds_delete_db_instance

#' Deletes automated backups using the DbiResourceId value of the source DB
#' instance or the Amazon Resource Name (ARN) of the automated backups
#'
#' @description
#' Deletes automated backups using the `DbiResourceId` value of the source
#' DB instance or the Amazon Resource Name (ARN) of the automated backups.
#'
#' @usage
#' rds_delete_db_instance_automated_backup(DbiResourceId,
#'   DBInstanceAutomatedBackupsArn)
#'
#' @param DbiResourceId The identifier for the source DB instance, which can't be changed and
#' which is unique to an AWS Region.
#' @param DBInstanceAutomatedBackupsArn The Amazon Resource Name (ARN) of the automated backups to delete, for
#' example,
#' `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBInstanceAutomatedBackup = list(
#'     DBInstanceArn = "string",
#'     DbiResourceId = "string",
#'     Region = "string",
#'     DBInstanceIdentifier = "string",
#'     RestoreWindow = list(
#'       EarliestTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LatestTime = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     ),
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     AvailabilityZone = "string",
#'     VpcId = "string",
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     Engine = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     Iops = 123,
#'     OptionGroupName = "string",
#'     TdeCredentialArn = "string",
#'     Encrypted = TRUE|FALSE,
#'     StorageType = "string",
#'     KmsKeyId = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     BackupRetentionPeriod = 123,
#'     DBInstanceAutomatedBackupsArn = "string",
#'     DBInstanceAutomatedBackupsReplications = list(
#'       list(
#'         DBInstanceAutomatedBackupsArn = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_instance_automated_backup(
#'   DbiResourceId = "string",
#'   DBInstanceAutomatedBackupsArn = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_instance_automated_backup
rds_delete_db_instance_automated_backup <- function(DbiResourceId = NULL, DBInstanceAutomatedBackupsArn = NULL) {
  op <- new_operation(
    name = "DeleteDBInstanceAutomatedBackup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_instance_automated_backup_input(DbiResourceId = DbiResourceId, DBInstanceAutomatedBackupsArn = DBInstanceAutomatedBackupsArn)
  output <- .rds$delete_db_instance_automated_backup_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_instance_automated_backup <- rds_delete_db_instance_automated_backup

#' Deletes a specified DB parameter group
#'
#' @description
#' Deletes a specified DB parameter group. The DB parameter group to be
#' deleted can't be associated with any DB instances.
#'
#' @usage
#' rds_delete_db_parameter_group(DBParameterGroupName)
#'
#' @param DBParameterGroupName &#91;required&#93; The name of the DB parameter group.
#' 
#' Constraints:
#' 
#' -   Must be the name of an existing DB parameter group
#' 
#' -   You can't delete a default DB parameter group
#' 
#' -   Can't be associated with any DB instances
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_parameter_group(
#'   DBParameterGroupName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_parameter_group
rds_delete_db_parameter_group <- function(DBParameterGroupName) {
  op <- new_operation(
    name = "DeleteDBParameterGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_parameter_group_input(DBParameterGroupName = DBParameterGroupName)
  output <- .rds$delete_db_parameter_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_parameter_group <- rds_delete_db_parameter_group

#' Deletes an existing proxy
#'
#' @description
#' Deletes an existing proxy.
#'
#' @usage
#' rds_delete_db_proxy(DBProxyName)
#'
#' @param DBProxyName &#91;required&#93; The name of the DB proxy to delete.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBProxy = list(
#'     DBProxyName = "string",
#'     DBProxyArn = "string",
#'     Status = "available"|"modifying"|"incompatible-network"|"insufficient-resource-limits"|"creating"|"deleting"|"suspended"|"suspending"|"reactivating",
#'     EngineFamily = "string",
#'     VpcSecurityGroupIds = list(
#'       "string"
#'     ),
#'     VpcSubnetIds = list(
#'       "string"
#'     ),
#'     Auth = list(
#'       list(
#'         Description = "string",
#'         UserName = "string",
#'         AuthScheme = "SECRETS",
#'         SecretArn = "string",
#'         IAMAuth = "DISABLED"|"REQUIRED"
#'       )
#'     ),
#'     RoleArn = "string",
#'     Endpoint = "string",
#'     RequireTLS = TRUE|FALSE,
#'     IdleClientTimeout = 123,
#'     DebugLogging = TRUE|FALSE,
#'     CreatedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     UpdatedDate = as.POSIXct(
#'       "2015-01-01"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_proxy(
#'   DBProxyName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_proxy
rds_delete_db_proxy <- function(DBProxyName) {
  op <- new_operation(
    name = "DeleteDBProxy",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_proxy_input(DBProxyName = DBProxyName)
  output <- .rds$delete_db_proxy_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_proxy <- rds_delete_db_proxy

#' Deletes a DB security group
#'
#' @description
#' Deletes a DB security group.
#' 
#' The specified DB security group must not be associated with any DB
#' instances.
#'
#' @usage
#' rds_delete_db_security_group(DBSecurityGroupName)
#'
#' @param DBSecurityGroupName &#91;required&#93; The name of the DB security group to delete.
#' 
#' You can't delete the default DB security group.
#' 
#' Constraints:
#' 
#' -   Must be 1 to 255 letters, numbers, or hyphens.
#' 
#' -   First character must be a letter
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens
#' 
#' -   Must not be "Default"
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_security_group(
#'   DBSecurityGroupName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_security_group
rds_delete_db_security_group <- function(DBSecurityGroupName) {
  op <- new_operation(
    name = "DeleteDBSecurityGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_security_group_input(DBSecurityGroupName = DBSecurityGroupName)
  output <- .rds$delete_db_security_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_security_group <- rds_delete_db_security_group

#' Deletes a DB snapshot
#'
#' @description
#' Deletes a DB snapshot. If the snapshot is being copied, the copy
#' operation is terminated.
#' 
#' The DB snapshot must be in the `available` state to be deleted.
#'
#' @usage
#' rds_delete_db_snapshot(DBSnapshotIdentifier)
#'
#' @param DBSnapshotIdentifier &#91;required&#93; The DB snapshot identifier.
#' 
#' Constraints: Must be the name of an existing DB snapshot in the
#' `available` state.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSnapshot = list(
#'     DBSnapshotIdentifier = "string",
#'     DBInstanceIdentifier = "string",
#'     SnapshotCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Engine = "string",
#'     AllocatedStorage = 123,
#'     Status = "string",
#'     Port = 123,
#'     AvailabilityZone = "string",
#'     VpcId = "string",
#'     InstanceCreateTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     MasterUsername = "string",
#'     EngineVersion = "string",
#'     LicenseModel = "string",
#'     SnapshotType = "string",
#'     Iops = 123,
#'     OptionGroupName = "string",
#'     PercentProgress = 123,
#'     SourceRegion = "string",
#'     SourceDBSnapshotIdentifier = "string",
#'     StorageType = "string",
#'     TdeCredentialArn = "string",
#'     Encrypted = TRUE|FALSE,
#'     KmsKeyId = "string",
#'     DBSnapshotArn = "string",
#'     Timezone = "string",
#'     IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'     ProcessorFeatures = list(
#'       list(
#'         Name = "string",
#'         Value = "string"
#'       )
#'     ),
#'     DbiResourceId = "string",
#'     TagList = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_snapshot(
#'   DBSnapshotIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_snapshot
rds_delete_db_snapshot <- function(DBSnapshotIdentifier) {
  op <- new_operation(
    name = "DeleteDBSnapshot",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_snapshot_input(DBSnapshotIdentifier = DBSnapshotIdentifier)
  output <- .rds$delete_db_snapshot_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_snapshot <- rds_delete_db_snapshot

#' Deletes a DB subnet group
#'
#' @description
#' Deletes a DB subnet group.
#' 
#' The specified database subnet group must not be associated with any DB
#' instances.
#'
#' @usage
#' rds_delete_db_subnet_group(DBSubnetGroupName)
#'
#' @param DBSubnetGroupName &#91;required&#93; The name of the database subnet group to delete.
#' 
#' You can't delete the default subnet group.
#' 
#' Constraints:
#' 
#' Constraints: Must match the name of an existing DBSubnetGroup. Must not
#' be default.
#' 
#' Example: `mySubnetgroup`
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_db_subnet_group(
#'   DBSubnetGroupName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_db_subnet_group
rds_delete_db_subnet_group <- function(DBSubnetGroupName) {
  op <- new_operation(
    name = "DeleteDBSubnetGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_db_subnet_group_input(DBSubnetGroupName = DBSubnetGroupName)
  output <- .rds$delete_db_subnet_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_db_subnet_group <- rds_delete_db_subnet_group

#' Deletes an RDS event notification subscription
#'
#' @description
#' Deletes an RDS event notification subscription.
#'
#' @usage
#' rds_delete_event_subscription(SubscriptionName)
#'
#' @param SubscriptionName &#91;required&#93; The name of the RDS event notification subscription you want to delete.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EventSubscription = list(
#'     CustomerAwsId = "string",
#'     CustSubscriptionId = "string",
#'     SnsTopicArn = "string",
#'     Status = "string",
#'     SubscriptionCreationTime = "string",
#'     SourceType = "string",
#'     SourceIdsList = list(
#'       "string"
#'     ),
#'     EventCategoriesList = list(
#'       "string"
#'     ),
#'     Enabled = TRUE|FALSE,
#'     EventSubscriptionArn = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_event_subscription(
#'   SubscriptionName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_event_subscription
rds_delete_event_subscription <- function(SubscriptionName) {
  op <- new_operation(
    name = "DeleteEventSubscription",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_event_subscription_input(SubscriptionName = SubscriptionName)
  output <- .rds$delete_event_subscription_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_event_subscription <- rds_delete_event_subscription

#' Deletes a global database cluster
#'
#' @description
#' Deletes a global database cluster. The primary and secondary clusters
#' must already be detached or destroyed first.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_delete_global_cluster(GlobalClusterIdentifier)
#'
#' @param GlobalClusterIdentifier &#91;required&#93; The cluster identifier of the global database cluster being deleted.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   GlobalCluster = list(
#'     GlobalClusterIdentifier = "string",
#'     GlobalClusterResourceId = "string",
#'     GlobalClusterArn = "string",
#'     Status = "string",
#'     Engine = "string",
#'     EngineVersion = "string",
#'     DatabaseName = "string",
#'     StorageEncrypted = TRUE|FALSE,
#'     DeletionProtection = TRUE|FALSE,
#'     GlobalClusterMembers = list(
#'       list(
#'         DBClusterArn = "string",
#'         Readers = list(
#'           "string"
#'         ),
#'         IsWriter = TRUE|FALSE,
#'         GlobalWriteForwardingStatus = "enabled"|"disabled"|"enabling"|"disabling"|"unknown"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_global_cluster(
#'   GlobalClusterIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_global_cluster
rds_delete_global_cluster <- function(GlobalClusterIdentifier) {
  op <- new_operation(
    name = "DeleteGlobalCluster",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_global_cluster_input(GlobalClusterIdentifier = GlobalClusterIdentifier)
  output <- .rds$delete_global_cluster_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_global_cluster <- rds_delete_global_cluster

#' Deletes the installation medium for a DB engine that requires an
#' on-premises customer provided license, such as Microsoft SQL Server
#'
#' @description
#' Deletes the installation medium for a DB engine that requires an
#' on-premises customer provided license, such as Microsoft SQL Server.
#'
#' @usage
#' rds_delete_installation_media(InstallationMediaId)
#'
#' @param InstallationMediaId &#91;required&#93; The installation medium ID.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstallationMediaId = "string",
#'   CustomAvailabilityZoneId = "string",
#'   Engine = "string",
#'   EngineVersion = "string",
#'   EngineInstallationMediaPath = "string",
#'   OSInstallationMediaPath = "string",
#'   Status = "string",
#'   FailureCause = list(
#'     Message = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_installation_media(
#'   InstallationMediaId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_installation_media
rds_delete_installation_media <- function(InstallationMediaId) {
  op <- new_operation(
    name = "DeleteInstallationMedia",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_installation_media_input(InstallationMediaId = InstallationMediaId)
  output <- .rds$delete_installation_media_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_installation_media <- rds_delete_installation_media

#' Deletes an existing option group
#'
#' @description
#' Deletes an existing option group.
#'
#' @usage
#' rds_delete_option_group(OptionGroupName)
#'
#' @param OptionGroupName &#91;required&#93; The name of the option group to be deleted.
#' 
#' You can't delete default option groups.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_option_group(
#'   OptionGroupName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_delete_option_group
rds_delete_option_group <- function(OptionGroupName) {
  op <- new_operation(
    name = "DeleteOptionGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$delete_option_group_input(OptionGroupName = OptionGroupName)
  output <- .rds$delete_option_group_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$delete_option_group <- rds_delete_option_group

#' Remove the association between one or more DBProxyTarget data structures
#' and a DBProxyTargetGroup
#'
#' @description
#' Remove the association between one or more `DBProxyTarget` data
#' structures and a `DBProxyTargetGroup`.
#'
#' @usage
#' rds_deregister_db_proxy_targets(DBProxyName, TargetGroupName,
#'   DBInstanceIdentifiers, DBClusterIdentifiers)
#'
#' @param DBProxyName &#91;required&#93; The identifier of the `DBProxy` that is associated with the
#' `DBProxyTargetGroup`.
#' @param TargetGroupName The identifier of the `DBProxyTargetGroup`.
#' @param DBInstanceIdentifiers One or more DB instance identifiers.
#' @param DBClusterIdentifiers One or more DB cluster identifiers.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$deregister_db_proxy_targets(
#'   DBProxyName = "string",
#'   TargetGroupName = "string",
#'   DBInstanceIdentifiers = list(
#'     "string"
#'   ),
#'   DBClusterIdentifiers = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_deregister_db_proxy_targets
rds_deregister_db_proxy_targets <- function(DBProxyName, TargetGroupName = NULL, DBInstanceIdentifiers = NULL, DBClusterIdentifiers = NULL) {
  op <- new_operation(
    name = "DeregisterDBProxyTargets",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$deregister_db_proxy_targets_input(DBProxyName = DBProxyName, TargetGroupName = TargetGroupName, DBInstanceIdentifiers = DBInstanceIdentifiers, DBClusterIdentifiers = DBClusterIdentifiers)
  output <- .rds$deregister_db_proxy_targets_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$deregister_db_proxy_targets <- rds_deregister_db_proxy_targets

#' Lists all of the attributes for a customer account
#'
#' @description
#' Lists all of the attributes for a customer account. The attributes
#' include Amazon RDS quotas for the account, such as the number of DB
#' instances allowed. The description for a quota includes the quota name,
#' current usage toward that quota, and the quota's maximum value.
#' 
#' This command doesn't take any parameters.
#'
#' @usage
#' rds_describe_account_attributes()
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AccountQuotas = list(
#'     list(
#'       AccountQuotaName = "string",
#'       Used = 123,
#'       Max = 123
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_account_attributes()
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_account_attributes
rds_describe_account_attributes <- function() {
  op <- new_operation(
    name = "DescribeAccountAttributes",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_account_attributes_input()
  output <- .rds$describe_account_attributes_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_account_attributes <- rds_describe_account_attributes

#' Lists the set of CA certificates provided by Amazon RDS for this AWS
#' account
#'
#' @description
#' Lists the set of CA certificates provided by Amazon RDS for this AWS
#' account.
#'
#' @usage
#' rds_describe_certificates(CertificateIdentifier, Filters, MaxRecords,
#'   Marker)
#'
#' @param CertificateIdentifier The user-supplied certificate identifier. If this parameter is
#' specified, information for only the identified certificate is returned.
#' This parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   Must match an existing CertificateIdentifier.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_certificates`][rds_describe_certificates] request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Certificates = list(
#'     list(
#'       CertificateIdentifier = "string",
#'       CertificateType = "string",
#'       Thumbprint = "string",
#'       ValidFrom = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ValidTill = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       CertificateArn = "string",
#'       CustomerOverride = TRUE|FALSE,
#'       CustomerOverrideValidTill = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_certificates(
#'   CertificateIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_certificates
rds_describe_certificates <- function(CertificateIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeCertificates",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_certificates_input(CertificateIdentifier = CertificateIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_certificates_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_certificates <- rds_describe_certificates

#' Returns information about custom Availability Zones (AZs)
#'
#' @description
#' Returns information about custom Availability Zones (AZs).
#' 
#' A custom AZ is an on-premises AZ that is integrated with a VMware
#' vSphere cluster.
#' 
#' For more information about RDS on VMware, see the [RDS on VMware User
#' Guide.](https://docs.aws.amazon.com/AmazonRDS/latest/RDSonVMwareUserGuide/rds-on-vmware.html)
#'
#' @usage
#' rds_describe_custom_availability_zones(CustomAvailabilityZoneId,
#'   Filters, MaxRecords, Marker)
#'
#' @param CustomAvailabilityZoneId The custom AZ identifier. If this parameter is specified, information
#' from only the specific custom AZ is returned.
#' @param Filters A filter that specifies one or more custom AZs to describe.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_custom_availability_zones`][rds_describe_custom_availability_zones]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   CustomAvailabilityZones = list(
#'     list(
#'       CustomAvailabilityZoneId = "string",
#'       CustomAvailabilityZoneName = "string",
#'       CustomAvailabilityZoneStatus = "string",
#'       VpnDetails = list(
#'         VpnId = "string",
#'         VpnTunnelOriginatorIP = "string",
#'         VpnGatewayIp = "string",
#'         VpnPSK = "string",
#'         VpnName = "string",
#'         VpnState = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_custom_availability_zones(
#'   CustomAvailabilityZoneId = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_custom_availability_zones
rds_describe_custom_availability_zones <- function(CustomAvailabilityZoneId = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeCustomAvailabilityZones",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_custom_availability_zones_input(CustomAvailabilityZoneId = CustomAvailabilityZoneId, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_custom_availability_zones_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_custom_availability_zones <- rds_describe_custom_availability_zones

#' Returns information about backtracks for a DB cluster
#'
#' @description
#' Returns information about backtracks for a DB cluster.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora MySQL DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_backtracks(DBClusterIdentifier,
#'   BacktrackIdentifier, Filters, MaxRecords, Marker)
#'
#' @param DBClusterIdentifier &#91;required&#93; The DB cluster identifier of the DB cluster to be described. This
#' parameter is stored as a lowercase string.
#' 
#' Constraints:
#' 
#' -   Must contain from 1 to 63 alphanumeric characters or hyphens.
#' 
#' -   First character must be a letter.
#' 
#' -   Can't end with a hyphen or contain two consecutive hyphens.
#' 
#' Example: `my-cluster1`
#' @param BacktrackIdentifier If specified, this value is the backtrack identifier of the backtrack to
#' be described.
#' 
#' Constraints:
#' 
#' -   Must contain a valid universally unique identifier (UUID). For more
#'     information about UUIDs, see [A Universally Unique Identifier (UUID)
#'     URN Namespace](https://www.ietf.org/rfc/rfc4122.txt).
#' 
#' Example: `123e4567-e89b-12d3-a456-426655440000`
#' @param Filters A filter that specifies one or more DB clusters to describe. Supported
#' filters include the following:
#' 
#' -   `db-cluster-backtrack-id` - Accepts backtrack identifiers. The
#'     results list includes information about only the backtracks
#'     identified by these identifiers.
#' 
#' -   `db-cluster-backtrack-status` - Accepts any of the following
#'     backtrack status values:
#' 
#'     -   `applying`
#' 
#'     -   `completed`
#' 
#'     -   `failed`
#' 
#'     -   `pending`
#' 
#'     The results list includes information about only the backtracks
#'     identified by these values.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_cluster_backtracks`][rds_describe_db_cluster_backtracks]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBClusterBacktracks = list(
#'     list(
#'       DBClusterIdentifier = "string",
#'       BacktrackIdentifier = "string",
#'       BacktrackTo = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       BacktrackedFrom = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       BacktrackRequestCreationTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Status = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_backtracks(
#'   DBClusterIdentifier = "string",
#'   BacktrackIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_backtracks
rds_describe_db_cluster_backtracks <- function(DBClusterIdentifier, BacktrackIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBClusterBacktracks",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_backtracks_input(DBClusterIdentifier = DBClusterIdentifier, BacktrackIdentifier = BacktrackIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_cluster_backtracks_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_backtracks <- rds_describe_db_cluster_backtracks

#' Returns information about endpoints for an Amazon Aurora DB cluster
#'
#' @description
#' Returns information about endpoints for an Amazon Aurora DB cluster.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_endpoints(DBClusterIdentifier,
#'   DBClusterEndpointIdentifier, Filters, MaxRecords, Marker)
#'
#' @param DBClusterIdentifier The DB cluster identifier of the DB cluster associated with the
#' endpoint. This parameter is stored as a lowercase string.
#' @param DBClusterEndpointIdentifier The identifier of the endpoint to describe. This parameter is stored as
#' a lowercase string.
#' @param Filters A set of name-value pairs that define which endpoints to include in the
#' output. The filters are specified as name-value pairs, in the format
#' `Name=endpoint_type,Values=endpoint_type1,endpoint_type2,...`. `Name`
#' can be one of: `db-cluster-endpoint-type`,
#' `db-cluster-endpoint-custom-type`, `db-cluster-endpoint-id`,
#' `db-cluster-endpoint-status`. `Values` for the
#' ` db-cluster-endpoint-type` filter can be one or more of: `reader`,
#' `writer`, `custom`. `Values` for the `db-cluster-endpoint-custom-type`
#' filter can be one or more of: `reader`, `any`. `Values` for the
#' `db-cluster-endpoint-status` filter can be one or more of: `available`,
#' `creating`, `deleting`, `inactive`, `modifying`.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_cluster_endpoints`][rds_describe_db_cluster_endpoints]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBClusterEndpoints = list(
#'     list(
#'       DBClusterEndpointIdentifier = "string",
#'       DBClusterIdentifier = "string",
#'       DBClusterEndpointResourceIdentifier = "string",
#'       Endpoint = "string",
#'       Status = "string",
#'       EndpointType = "string",
#'       CustomEndpointType = "string",
#'       StaticMembers = list(
#'         "string"
#'       ),
#'       ExcludedMembers = list(
#'         "string"
#'       ),
#'       DBClusterEndpointArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_endpoints(
#'   DBClusterIdentifier = "string",
#'   DBClusterEndpointIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_endpoints
rds_describe_db_cluster_endpoints <- function(DBClusterIdentifier = NULL, DBClusterEndpointIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBClusterEndpoints",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_endpoints_input(DBClusterIdentifier = DBClusterIdentifier, DBClusterEndpointIdentifier = DBClusterEndpointIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_cluster_endpoints_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_endpoints <- rds_describe_db_cluster_endpoints

#' Returns a list of DBClusterParameterGroup descriptions
#'
#' @description
#' Returns a list of `DBClusterParameterGroup` descriptions. If a
#' `DBClusterParameterGroupName` parameter is specified, the list will
#' contain only the description of the specified DB cluster parameter
#' group.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_parameter_groups(DBClusterParameterGroupName,
#'   Filters, MaxRecords, Marker)
#'
#' @param DBClusterParameterGroupName The name of a specific DB cluster parameter group to return details for.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the name of an existing
#'     DBClusterParameterGroup.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_cluster_parameter_groups`][rds_describe_db_cluster_parameter_groups]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBClusterParameterGroups = list(
#'     list(
#'       DBClusterParameterGroupName = "string",
#'       DBParameterGroupFamily = "string",
#'       Description = "string",
#'       DBClusterParameterGroupArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_parameter_groups(
#'   DBClusterParameterGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_parameter_groups
rds_describe_db_cluster_parameter_groups <- function(DBClusterParameterGroupName = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBClusterParameterGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_parameter_groups_input(DBClusterParameterGroupName = DBClusterParameterGroupName, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_cluster_parameter_groups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_parameter_groups <- rds_describe_db_cluster_parameter_groups

#' Returns the detailed parameter list for a particular DB cluster
#' parameter group
#'
#' @description
#' Returns the detailed parameter list for a particular DB cluster
#' parameter group.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_parameters(DBClusterParameterGroupName, Source,
#'   Filters, MaxRecords, Marker)
#'
#' @param DBClusterParameterGroupName &#91;required&#93; The name of a specific DB cluster parameter group to return parameter
#' details for.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the name of an existing
#'     DBClusterParameterGroup.
#' @param Source A value that indicates to return only parameters for a specific source.
#' Parameter sources can be `engine`, `service`, or `customer`.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_cluster_parameters`][rds_describe_db_cluster_parameters]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       ParameterName = "string",
#'       ParameterValue = "string",
#'       Description = "string",
#'       Source = "string",
#'       ApplyType = "string",
#'       DataType = "string",
#'       AllowedValues = "string",
#'       IsModifiable = TRUE|FALSE,
#'       MinimumEngineVersion = "string",
#'       ApplyMethod = "immediate"|"pending-reboot",
#'       SupportedEngineModes = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_parameters(
#'   DBClusterParameterGroupName = "string",
#'   Source = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_parameters
rds_describe_db_cluster_parameters <- function(DBClusterParameterGroupName, Source = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBClusterParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_parameters_input(DBClusterParameterGroupName = DBClusterParameterGroupName, Source = Source, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_cluster_parameters_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_parameters <- rds_describe_db_cluster_parameters

#' Returns a list of DB cluster snapshot attribute names and values for a
#' manual DB cluster snapshot
#'
#' @description
#' Returns a list of DB cluster snapshot attribute names and values for a
#' manual DB cluster snapshot.
#' 
#' When sharing snapshots with other AWS accounts,
#' [`describe_db_cluster_snapshot_attributes`][rds_describe_db_cluster_snapshot_attributes]
#' returns the `restore` attribute and a list of IDs for the AWS accounts
#' that are authorized to copy or restore the manual DB cluster snapshot.
#' If `all` is included in the list of values for the `restore` attribute,
#' then the manual DB cluster snapshot is public and can be copied or
#' restored by all AWS accounts.
#' 
#' To add or remove access for an AWS account to copy or restore a manual
#' DB cluster snapshot, or to make the manual DB cluster snapshot public or
#' private, use the
#' [`modify_db_cluster_snapshot_attribute`][rds_modify_db_cluster_snapshot_attribute]
#' API action.
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_snapshot_attributes(DBClusterSnapshotIdentifier)
#'
#' @param DBClusterSnapshotIdentifier &#91;required&#93; The identifier for the DB cluster snapshot to describe the attributes
#' for.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBClusterSnapshotAttributesResult = list(
#'     DBClusterSnapshotIdentifier = "string",
#'     DBClusterSnapshotAttributes = list(
#'       list(
#'         AttributeName = "string",
#'         AttributeValues = list(
#'           "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_snapshot_attributes(
#'   DBClusterSnapshotIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_snapshot_attributes
rds_describe_db_cluster_snapshot_attributes <- function(DBClusterSnapshotIdentifier) {
  op <- new_operation(
    name = "DescribeDBClusterSnapshotAttributes",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_snapshot_attributes_input(DBClusterSnapshotIdentifier = DBClusterSnapshotIdentifier)
  output <- .rds$describe_db_cluster_snapshot_attributes_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_snapshot_attributes <- rds_describe_db_cluster_snapshot_attributes

#' Returns information about DB cluster snapshots
#'
#' @description
#' Returns information about DB cluster snapshots. This API action supports
#' pagination.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This action only applies to Aurora DB clusters.
#'
#' @usage
#' rds_describe_db_cluster_snapshots(DBClusterIdentifier,
#'   DBClusterSnapshotIdentifier, SnapshotType, Filters, MaxRecords, Marker,
#'   IncludeShared, IncludePublic)
#'
#' @param DBClusterIdentifier The ID of the DB cluster to retrieve the list of DB cluster snapshots
#' for. This parameter can't be used in conjunction with the
#' `DBClusterSnapshotIdentifier` parameter. This parameter isn't
#' case-sensitive.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the identifier of an existing DBCluster.
#' @param DBClusterSnapshotIdentifier A specific DB cluster snapshot identifier to describe. This parameter
#' can't be used in conjunction with the `DBClusterIdentifier` parameter.
#' This value is stored as a lowercase string.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the identifier of an existing
#'     DBClusterSnapshot.
#' 
#' -   If this identifier is for an automated snapshot, the `SnapshotType`
#'     parameter must also be specified.
#' @param SnapshotType The type of DB cluster snapshots to be returned. You can specify one of
#' the following values:
#' 
#' -   `automated` - Return all DB cluster snapshots that have been
#'     automatically taken by Amazon RDS for my AWS account.
#' 
#' -   `manual` - Return all DB cluster snapshots that have been taken by
#'     my AWS account.
#' 
#' -   `shared` - Return all manual DB cluster snapshots that have been
#'     shared to my AWS account.
#' 
#' -   `public` - Return all DB cluster snapshots that have been marked as
#'     public.
#' 
#' If you don't specify a `SnapshotType` value, then both automated and
#' manual DB cluster snapshots are returned. You can include shared DB
#' cluster snapshots with these results by enabling the `IncludeShared`
#' parameter. You can include public DB cluster snapshots with these
#' results by enabling the `IncludePublic` parameter.
#' 
#' The `IncludeShared` and `IncludePublic` parameters don't apply for
#' `SnapshotType` values of `manual` or `automated`. The `IncludePublic`
#' parameter doesn't apply when `SnapshotType` is set to `shared`. The
#' `IncludeShared` parameter doesn't apply when `SnapshotType` is set to
#' `public`.
#' @param Filters A filter that specifies one or more DB cluster snapshots to describe.
#' 
#' Supported filters:
#' 
#' -   `db-cluster-id` - Accepts DB cluster identifiers and DB cluster
#'     Amazon Resource Names (ARNs).
#' 
#' -   `db-cluster-snapshot-id` - Accepts DB cluster snapshot identifiers.
#' 
#' -   `snapshot-type` - Accepts types of DB cluster snapshots.
#' 
#' -   `engine` - Accepts names of database engines.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_cluster_snapshots`][rds_describe_db_cluster_snapshots]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#' @param IncludeShared A value that indicates whether to include shared manual DB cluster
#' snapshots from other AWS accounts that this AWS account has been given
#' permission to copy or restore. By default, these snapshots are not
#' included.
#' 
#' You can give an AWS account permission to restore a manual DB cluster
#' snapshot from another AWS account by the
#' [`modify_db_cluster_snapshot_attribute`][rds_modify_db_cluster_snapshot_attribute]
#' API action.
#' @param IncludePublic A value that indicates whether to include manual DB cluster snapshots
#' that are public and can be copied or restored by any AWS account. By
#' default, the public snapshots are not included.
#' 
#' You can share a manual DB cluster snapshot as public by using the
#' [`modify_db_cluster_snapshot_attribute`][rds_modify_db_cluster_snapshot_attribute]
#' API action.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBClusterSnapshots = list(
#'     list(
#'       AvailabilityZones = list(
#'         "string"
#'       ),
#'       DBClusterSnapshotIdentifier = "string",
#'       DBClusterIdentifier = "string",
#'       SnapshotCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Engine = "string",
#'       AllocatedStorage = 123,
#'       Status = "string",
#'       Port = 123,
#'       VpcId = "string",
#'       ClusterCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       MasterUsername = "string",
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       SnapshotType = "string",
#'       PercentProgress = 123,
#'       StorageEncrypted = TRUE|FALSE,
#'       KmsKeyId = "string",
#'       DBClusterSnapshotArn = "string",
#'       SourceDBClusterSnapshotArn = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       TagList = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_cluster_snapshots(
#'   DBClusterIdentifier = "string",
#'   DBClusterSnapshotIdentifier = "string",
#'   SnapshotType = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string",
#'   IncludeShared = TRUE|FALSE,
#'   IncludePublic = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_cluster_snapshots
rds_describe_db_cluster_snapshots <- function(DBClusterIdentifier = NULL, DBClusterSnapshotIdentifier = NULL, SnapshotType = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL, IncludeShared = NULL, IncludePublic = NULL) {
  op <- new_operation(
    name = "DescribeDBClusterSnapshots",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_cluster_snapshots_input(DBClusterIdentifier = DBClusterIdentifier, DBClusterSnapshotIdentifier = DBClusterSnapshotIdentifier, SnapshotType = SnapshotType, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker, IncludeShared = IncludeShared, IncludePublic = IncludePublic)
  output <- .rds$describe_db_cluster_snapshots_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_cluster_snapshots <- rds_describe_db_cluster_snapshots

#' Returns information about provisioned Aurora DB clusters
#'
#' @description
#' Returns information about provisioned Aurora DB clusters. This API
#' supports pagination.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#' 
#' This operation can also return information for Amazon Neptune DB
#' instances and Amazon DocumentDB instances.
#'
#' @usage
#' rds_describe_db_clusters(DBClusterIdentifier, Filters, MaxRecords,
#'   Marker, IncludeShared)
#'
#' @param DBClusterIdentifier The user-supplied DB cluster identifier. If this parameter is specified,
#' information from only the specific DB cluster is returned. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   If supplied, must match an existing DBClusterIdentifier.
#' @param Filters A filter that specifies one or more DB clusters to describe.
#' 
#' Supported filters:
#' 
#' -   `db-cluster-id` - Accepts DB cluster identifiers and DB cluster
#'     Amazon Resource Names (ARNs). The results list will only include
#'     information about the DB clusters identified by these ARNs.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_clusters`][rds_describe_db_clusters] request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param IncludeShared Optional Boolean parameter that specifies whether the output includes
#' information about clusters shared from other AWS accounts.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBClusters = list(
#'     list(
#'       AllocatedStorage = 123,
#'       AvailabilityZones = list(
#'         "string"
#'       ),
#'       BackupRetentionPeriod = 123,
#'       CharacterSetName = "string",
#'       DatabaseName = "string",
#'       DBClusterIdentifier = "string",
#'       DBClusterParameterGroup = "string",
#'       DBSubnetGroup = "string",
#'       Status = "string",
#'       PercentProgress = "string",
#'       EarliestRestorableTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Endpoint = "string",
#'       ReaderEndpoint = "string",
#'       CustomEndpoints = list(
#'         "string"
#'       ),
#'       MultiAZ = TRUE|FALSE,
#'       Engine = "string",
#'       EngineVersion = "string",
#'       LatestRestorableTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Port = 123,
#'       MasterUsername = "string",
#'       DBClusterOptionGroupMemberships = list(
#'         list(
#'           DBClusterOptionGroupName = "string",
#'           Status = "string"
#'         )
#'       ),
#'       PreferredBackupWindow = "string",
#'       PreferredMaintenanceWindow = "string",
#'       ReplicationSourceIdentifier = "string",
#'       ReadReplicaIdentifiers = list(
#'         "string"
#'       ),
#'       DBClusterMembers = list(
#'         list(
#'           DBInstanceIdentifier = "string",
#'           IsClusterWriter = TRUE|FALSE,
#'           DBClusterParameterGroupStatus = "string",
#'           PromotionTier = 123
#'         )
#'       ),
#'       VpcSecurityGroups = list(
#'         list(
#'           VpcSecurityGroupId = "string",
#'           Status = "string"
#'         )
#'       ),
#'       HostedZoneId = "string",
#'       StorageEncrypted = TRUE|FALSE,
#'       KmsKeyId = "string",
#'       DbClusterResourceId = "string",
#'       DBClusterArn = "string",
#'       AssociatedRoles = list(
#'         list(
#'           RoleArn = "string",
#'           Status = "string",
#'           FeatureName = "string"
#'         )
#'       ),
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       CloneGroupId = "string",
#'       ClusterCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       EarliestBacktrackTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       BacktrackWindow = 123,
#'       BacktrackConsumedChangeRecords = 123,
#'       EnabledCloudwatchLogsExports = list(
#'         "string"
#'       ),
#'       Capacity = 123,
#'       EngineMode = "string",
#'       ScalingConfigurationInfo = list(
#'         MinCapacity = 123,
#'         MaxCapacity = 123,
#'         AutoPause = TRUE|FALSE,
#'         SecondsUntilAutoPause = 123,
#'         TimeoutAction = "string"
#'       ),
#'       DeletionProtection = TRUE|FALSE,
#'       HttpEndpointEnabled = TRUE|FALSE,
#'       ActivityStreamMode = "sync"|"async",
#'       ActivityStreamStatus = "stopped"|"starting"|"started"|"stopping",
#'       ActivityStreamKmsKeyId = "string",
#'       ActivityStreamKinesisStreamName = "string",
#'       CopyTagsToSnapshot = TRUE|FALSE,
#'       CrossAccountClone = TRUE|FALSE,
#'       DomainMemberships = list(
#'         list(
#'           Domain = "string",
#'           Status = "string",
#'           FQDN = "string",
#'           IAMRoleName = "string"
#'         )
#'       ),
#'       TagList = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       ),
#'       GlobalWriteForwardingStatus = "enabled"|"disabled"|"enabling"|"disabling"|"unknown",
#'       GlobalWriteForwardingRequested = TRUE|FALSE,
#'       PendingModifiedValues = list(
#'         PendingCloudwatchLogsExports = list(
#'           LogTypesToEnable = list(
#'             "string"
#'           ),
#'           LogTypesToDisable = list(
#'             "string"
#'           )
#'         ),
#'         DBClusterIdentifier = "string",
#'         MasterUserPassword = "string",
#'         IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'         EngineVersion = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_clusters(
#'   DBClusterIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string",
#'   IncludeShared = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_clusters
rds_describe_db_clusters <- function(DBClusterIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL, IncludeShared = NULL) {
  op <- new_operation(
    name = "DescribeDBClusters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_clusters_input(DBClusterIdentifier = DBClusterIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker, IncludeShared = IncludeShared)
  output <- .rds$describe_db_clusters_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_clusters <- rds_describe_db_clusters

#' Returns a list of the available DB engines
#'
#' @description
#' Returns a list of the available DB engines.
#'
#' @usage
#' rds_describe_db_engine_versions(Engine, EngineVersion,
#'   DBParameterGroupFamily, Filters, MaxRecords, Marker, DefaultOnly,
#'   ListSupportedCharacterSets, ListSupportedTimezones, IncludeAll)
#'
#' @param Engine The database engine to return.
#' @param EngineVersion The database engine version to return.
#' 
#' Example: `5.1.49`
#' @param DBParameterGroupFamily The name of a specific DB parameter group family to return details for.
#' 
#' Constraints:
#' 
#' -   If supplied, must match an existing DBParameterGroupFamily.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more than
#' the `MaxRecords` value is available, a pagination token called a marker
#' is included in the response so you can retrieve the remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param DefaultOnly A value that indicates whether only the default version of the specified
#' engine or engine and major version combination is returned.
#' @param ListSupportedCharacterSets A value that indicates whether to list the supported character sets for
#' each engine version.
#' 
#' If this parameter is enabled and the requested engine supports the
#' `CharacterSetName` parameter for
#' [`create_db_instance`][rds_create_db_instance], the response includes a
#' list of supported character sets for each engine version.
#' @param ListSupportedTimezones A value that indicates whether to list the supported time zones for each
#' engine version.
#' 
#' If this parameter is enabled and the requested engine supports the
#' `TimeZone` parameter for [`create_db_instance`][rds_create_db_instance],
#' the response includes a list of supported time zones for each engine
#' version.
#' @param IncludeAll A value that indicates whether to include engine versions that aren't
#' available in the list. The default is to list only available engine
#' versions.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBEngineVersions = list(
#'     list(
#'       Engine = "string",
#'       EngineVersion = "string",
#'       DBParameterGroupFamily = "string",
#'       DBEngineDescription = "string",
#'       DBEngineVersionDescription = "string",
#'       DefaultCharacterSet = list(
#'         CharacterSetName = "string",
#'         CharacterSetDescription = "string"
#'       ),
#'       SupportedCharacterSets = list(
#'         list(
#'           CharacterSetName = "string",
#'           CharacterSetDescription = "string"
#'         )
#'       ),
#'       SupportedNcharCharacterSets = list(
#'         list(
#'           CharacterSetName = "string",
#'           CharacterSetDescription = "string"
#'         )
#'       ),
#'       ValidUpgradeTarget = list(
#'         list(
#'           Engine = "string",
#'           EngineVersion = "string",
#'           Description = "string",
#'           AutoUpgrade = TRUE|FALSE,
#'           IsMajorVersionUpgrade = TRUE|FALSE
#'         )
#'       ),
#'       SupportedTimezones = list(
#'         list(
#'           TimezoneName = "string"
#'         )
#'       ),
#'       ExportableLogTypes = list(
#'         "string"
#'       ),
#'       SupportsLogExportsToCloudwatchLogs = TRUE|FALSE,
#'       SupportsReadReplica = TRUE|FALSE,
#'       SupportedEngineModes = list(
#'         "string"
#'       ),
#'       SupportedFeatureNames = list(
#'         "string"
#'       ),
#'       Status = "string",
#'       SupportsParallelQuery = TRUE|FALSE,
#'       SupportsGlobalDatabases = TRUE|FALSE
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_engine_versions(
#'   Engine = "string",
#'   EngineVersion = "string",
#'   DBParameterGroupFamily = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string",
#'   DefaultOnly = TRUE|FALSE,
#'   ListSupportedCharacterSets = TRUE|FALSE,
#'   ListSupportedTimezones = TRUE|FALSE,
#'   IncludeAll = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_engine_versions
rds_describe_db_engine_versions <- function(Engine = NULL, EngineVersion = NULL, DBParameterGroupFamily = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL, DefaultOnly = NULL, ListSupportedCharacterSets = NULL, ListSupportedTimezones = NULL, IncludeAll = NULL) {
  op <- new_operation(
    name = "DescribeDBEngineVersions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_engine_versions_input(Engine = Engine, EngineVersion = EngineVersion, DBParameterGroupFamily = DBParameterGroupFamily, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker, DefaultOnly = DefaultOnly, ListSupportedCharacterSets = ListSupportedCharacterSets, ListSupportedTimezones = ListSupportedTimezones, IncludeAll = IncludeAll)
  output <- .rds$describe_db_engine_versions_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_engine_versions <- rds_describe_db_engine_versions

#' Displays backups for both current and deleted instances
#'
#' @description
#' Displays backups for both current and deleted instances. For example,
#' use this operation to find details about automated backups for
#' previously deleted instances. Current instances with retention periods
#' greater than zero (0) are returned for both the
#' [`describe_db_instance_automated_backups`][rds_describe_db_instance_automated_backups]
#' and [`describe_db_instances`][rds_describe_db_instances] operations.
#' 
#' All parameters are optional.
#'
#' @usage
#' rds_describe_db_instance_automated_backups(DbiResourceId,
#'   DBInstanceIdentifier, Filters, MaxRecords, Marker,
#'   DBInstanceAutomatedBackupsArn)
#'
#' @param DbiResourceId The resource ID of the DB instance that is the source of the automated
#' backup. This parameter isn't case-sensitive.
#' @param DBInstanceIdentifier (Optional) The user-supplied instance identifier. If this parameter is
#' specified, it must match the identifier of an existing DB instance. It
#' returns information from the specific DB instance' automated backup.
#' This parameter isn't case-sensitive.
#' @param Filters A filter that specifies which resources to return based on status.
#' 
#' Supported filters are the following:
#' 
#' -   `status`
#' 
#'     -   `active` - automated backups for current instances
#' 
#'     -   `retained` - automated backups for deleted instances and after
#'         backup replication is stopped
#' 
#'     -   `creating` - automated backups that are waiting for the first
#'         automated snapshot to be available
#' 
#' -   `db-instance-id` - Accepts DB instance identifiers and Amazon
#'     Resource Names (ARNs). The results list includes only information
#'     about the DB instance automated backups identified by these ARNs.
#' 
#' -   `dbi-resource-id` - Accepts DB resource identifiers and Amazon
#'     Resource Names (ARNs). The results list includes only information
#'     about the DB instance resources identified by these ARNs.
#' 
#' Returns all resources by default. The status for each resource is
#' specified in the response.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' @param Marker The pagination token provided in the previous request. If this parameter
#' is specified the response includes only records beyond the marker, up to
#' `MaxRecords`.
#' @param DBInstanceAutomatedBackupsArn The Amazon Resource Name (ARN) of the replicated automated backups, for
#' example,
#' `arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBInstanceAutomatedBackups = list(
#'     list(
#'       DBInstanceArn = "string",
#'       DbiResourceId = "string",
#'       Region = "string",
#'       DBInstanceIdentifier = "string",
#'       RestoreWindow = list(
#'         EarliestTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         LatestTime = as.POSIXct(
#'           "2015-01-01"
#'         )
#'       ),
#'       AllocatedStorage = 123,
#'       Status = "string",
#'       Port = 123,
#'       AvailabilityZone = "string",
#'       VpcId = "string",
#'       InstanceCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       MasterUsername = "string",
#'       Engine = "string",
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       Iops = 123,
#'       OptionGroupName = "string",
#'       TdeCredentialArn = "string",
#'       Encrypted = TRUE|FALSE,
#'       StorageType = "string",
#'       KmsKeyId = "string",
#'       Timezone = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       BackupRetentionPeriod = 123,
#'       DBInstanceAutomatedBackupsArn = "string",
#'       DBInstanceAutomatedBackupsReplications = list(
#'         list(
#'           DBInstanceAutomatedBackupsArn = "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_instance_automated_backups(
#'   DbiResourceId = "string",
#'   DBInstanceIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string",
#'   DBInstanceAutomatedBackupsArn = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_instance_automated_backups
rds_describe_db_instance_automated_backups <- function(DbiResourceId = NULL, DBInstanceIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL, DBInstanceAutomatedBackupsArn = NULL) {
  op <- new_operation(
    name = "DescribeDBInstanceAutomatedBackups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_instance_automated_backups_input(DbiResourceId = DbiResourceId, DBInstanceIdentifier = DBInstanceIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker, DBInstanceAutomatedBackupsArn = DBInstanceAutomatedBackupsArn)
  output <- .rds$describe_db_instance_automated_backups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_instance_automated_backups <- rds_describe_db_instance_automated_backups

#' Returns information about provisioned RDS instances
#'
#' @description
#' Returns information about provisioned RDS instances. This API supports
#' pagination.
#' 
#' This operation can also return information for Amazon Neptune DB
#' instances and Amazon DocumentDB instances.
#'
#' @usage
#' rds_describe_db_instances(DBInstanceIdentifier, Filters, MaxRecords,
#'   Marker)
#'
#' @param DBInstanceIdentifier The user-supplied instance identifier. If this parameter is specified,
#' information from only the specific DB instance is returned. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the identifier of an existing DBInstance.
#' @param Filters A filter that specifies one or more DB instances to describe.
#' 
#' Supported filters:
#' 
#' -   `db-cluster-id` - Accepts DB cluster identifiers and DB cluster
#'     Amazon Resource Names (ARNs). The results list will only include
#'     information about the DB instances associated with the DB clusters
#'     identified by these ARNs.
#' 
#' -   `db-instance-id` - Accepts DB instance identifiers and DB instance
#'     Amazon Resource Names (ARNs). The results list will only include
#'     information about the DB instances identified by these ARNs.
#' 
#' -   `dbi-resource-id` - Accepts DB instance resource identifiers. The
#'     results list will only include information about the DB instances
#'     identified by these DB instance resource identifiers.
#' 
#' -   `domain` - Accepts Active Directory directory IDs. The results list
#'     will only include information about the DB instances associated with
#'     these domains.
#' 
#' -   `engine` - Accepts engine names. The results list will only include
#'     information about the DB instances for these engines.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_instances`][rds_describe_db_instances] request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBInstances = list(
#'     list(
#'       DBInstanceIdentifier = "string",
#'       DBInstanceClass = "string",
#'       Engine = "string",
#'       DBInstanceStatus = "string",
#'       MasterUsername = "string",
#'       DBName = "string",
#'       Endpoint = list(
#'         Address = "string",
#'         Port = 123,
#'         HostedZoneId = "string"
#'       ),
#'       AllocatedStorage = 123,
#'       InstanceCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       PreferredBackupWindow = "string",
#'       BackupRetentionPeriod = 123,
#'       DBSecurityGroups = list(
#'         list(
#'           DBSecurityGroupName = "string",
#'           Status = "string"
#'         )
#'       ),
#'       VpcSecurityGroups = list(
#'         list(
#'           VpcSecurityGroupId = "string",
#'           Status = "string"
#'         )
#'       ),
#'       DBParameterGroups = list(
#'         list(
#'           DBParameterGroupName = "string",
#'           ParameterApplyStatus = "string"
#'         )
#'       ),
#'       AvailabilityZone = "string",
#'       DBSubnetGroup = list(
#'         DBSubnetGroupName = "string",
#'         DBSubnetGroupDescription = "string",
#'         VpcId = "string",
#'         SubnetGroupStatus = "string",
#'         Subnets = list(
#'           list(
#'             SubnetIdentifier = "string",
#'             SubnetAvailabilityZone = list(
#'               Name = "string"
#'             ),
#'             SubnetOutpost = list(
#'               Arn = "string"
#'             ),
#'             SubnetStatus = "string"
#'           )
#'         ),
#'         DBSubnetGroupArn = "string"
#'       ),
#'       PreferredMaintenanceWindow = "string",
#'       PendingModifiedValues = list(
#'         DBInstanceClass = "string",
#'         AllocatedStorage = 123,
#'         MasterUserPassword = "string",
#'         Port = 123,
#'         BackupRetentionPeriod = 123,
#'         MultiAZ = TRUE|FALSE,
#'         EngineVersion = "string",
#'         LicenseModel = "string",
#'         Iops = 123,
#'         DBInstanceIdentifier = "string",
#'         StorageType = "string",
#'         CACertificateIdentifier = "string",
#'         DBSubnetGroupName = "string",
#'         PendingCloudwatchLogsExports = list(
#'           LogTypesToEnable = list(
#'             "string"
#'           ),
#'           LogTypesToDisable = list(
#'             "string"
#'           )
#'         ),
#'         ProcessorFeatures = list(
#'           list(
#'             Name = "string",
#'             Value = "string"
#'           )
#'         ),
#'         IAMDatabaseAuthenticationEnabled = TRUE|FALSE
#'       ),
#'       LatestRestorableTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       MultiAZ = TRUE|FALSE,
#'       EngineVersion = "string",
#'       AutoMinorVersionUpgrade = TRUE|FALSE,
#'       ReadReplicaSourceDBInstanceIdentifier = "string",
#'       ReadReplicaDBInstanceIdentifiers = list(
#'         "string"
#'       ),
#'       ReadReplicaDBClusterIdentifiers = list(
#'         "string"
#'       ),
#'       ReplicaMode = "open-read-only"|"mounted",
#'       LicenseModel = "string",
#'       Iops = 123,
#'       OptionGroupMemberships = list(
#'         list(
#'           OptionGroupName = "string",
#'           Status = "string"
#'         )
#'       ),
#'       CharacterSetName = "string",
#'       NcharCharacterSetName = "string",
#'       SecondaryAvailabilityZone = "string",
#'       PubliclyAccessible = TRUE|FALSE,
#'       StatusInfos = list(
#'         list(
#'           StatusType = "string",
#'           Normal = TRUE|FALSE,
#'           Status = "string",
#'           Message = "string"
#'         )
#'       ),
#'       StorageType = "string",
#'       TdeCredentialArn = "string",
#'       DbInstancePort = 123,
#'       DBClusterIdentifier = "string",
#'       StorageEncrypted = TRUE|FALSE,
#'       KmsKeyId = "string",
#'       DbiResourceId = "string",
#'       CACertificateIdentifier = "string",
#'       DomainMemberships = list(
#'         list(
#'           Domain = "string",
#'           Status = "string",
#'           FQDN = "string",
#'           IAMRoleName = "string"
#'         )
#'       ),
#'       CopyTagsToSnapshot = TRUE|FALSE,
#'       MonitoringInterval = 123,
#'       EnhancedMonitoringResourceArn = "string",
#'       MonitoringRoleArn = "string",
#'       PromotionTier = 123,
#'       DBInstanceArn = "string",
#'       Timezone = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       PerformanceInsightsEnabled = TRUE|FALSE,
#'       PerformanceInsightsKMSKeyId = "string",
#'       PerformanceInsightsRetentionPeriod = 123,
#'       EnabledCloudwatchLogsExports = list(
#'         "string"
#'       ),
#'       ProcessorFeatures = list(
#'         list(
#'           Name = "string",
#'           Value = "string"
#'         )
#'       ),
#'       DeletionProtection = TRUE|FALSE,
#'       AssociatedRoles = list(
#'         list(
#'           RoleArn = "string",
#'           FeatureName = "string",
#'           Status = "string"
#'         )
#'       ),
#'       ListenerEndpoint = list(
#'         Address = "string",
#'         Port = 123,
#'         HostedZoneId = "string"
#'       ),
#'       MaxAllocatedStorage = 123,
#'       TagList = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       ),
#'       DBInstanceAutomatedBackupsReplications = list(
#'         list(
#'           DBInstanceAutomatedBackupsArn = "string"
#'         )
#'       ),
#'       CustomerOwnedIpEnabled = TRUE|FALSE
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_instances(
#'   DBInstanceIdentifier = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_instances
rds_describe_db_instances <- function(DBInstanceIdentifier = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBInstances",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_instances_input(DBInstanceIdentifier = DBInstanceIdentifier, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_instances_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_instances <- rds_describe_db_instances

#' Returns a list of DB log files for the DB instance
#'
#' @description
#' Returns a list of DB log files for the DB instance.
#'
#' @usage
#' rds_describe_db_log_files(DBInstanceIdentifier, FilenameContains,
#'   FileLastWritten, FileSize, Filters, MaxRecords, Marker)
#'
#' @param DBInstanceIdentifier &#91;required&#93; The customer-assigned name of the DB instance that contains the log
#' files you want to list.
#' 
#' Constraints:
#' 
#' -   Must match the identifier of an existing DBInstance.
#' @param FilenameContains Filters the available log files for log file names that contain the
#' specified string.
#' @param FileLastWritten Filters the available log files for files written since the specified
#' date, in POSIX timestamp format with milliseconds.
#' @param FileSize Filters the available log files for files larger than the specified
#' size.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified MaxRecords value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' @param Marker The pagination token provided in the previous request. If this parameter
#' is specified the response includes only records beyond the marker, up to
#' MaxRecords.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DescribeDBLogFiles = list(
#'     list(
#'       LogFileName = "string",
#'       LastWritten = 123,
#'       Size = 123
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_log_files(
#'   DBInstanceIdentifier = "string",
#'   FilenameContains = "string",
#'   FileLastWritten = 123,
#'   FileSize = 123,
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_log_files
rds_describe_db_log_files <- function(DBInstanceIdentifier, FilenameContains = NULL, FileLastWritten = NULL, FileSize = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBLogFiles",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_log_files_input(DBInstanceIdentifier = DBInstanceIdentifier, FilenameContains = FilenameContains, FileLastWritten = FileLastWritten, FileSize = FileSize, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_log_files_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_log_files <- rds_describe_db_log_files

#' Returns a list of DBParameterGroup descriptions
#'
#' @description
#' Returns a list of `DBParameterGroup` descriptions. If a
#' `DBParameterGroupName` is specified, the list will contain only the
#' description of the specified DB parameter group.
#'
#' @usage
#' rds_describe_db_parameter_groups(DBParameterGroupName, Filters,
#'   MaxRecords, Marker)
#'
#' @param DBParameterGroupName The name of a specific DB parameter group to return details for.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the name of an existing
#'     DBClusterParameterGroup.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_parameter_groups`][rds_describe_db_parameter_groups]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBParameterGroups = list(
#'     list(
#'       DBParameterGroupName = "string",
#'       DBParameterGroupFamily = "string",
#'       Description = "string",
#'       DBParameterGroupArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_parameter_groups(
#'   DBParameterGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_parameter_groups
rds_describe_db_parameter_groups <- function(DBParameterGroupName = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBParameterGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_parameter_groups_input(DBParameterGroupName = DBParameterGroupName, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_parameter_groups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_parameter_groups <- rds_describe_db_parameter_groups

#' Returns the detailed parameter list for a particular DB parameter group
#'
#' @description
#' Returns the detailed parameter list for a particular DB parameter group.
#'
#' @usage
#' rds_describe_db_parameters(DBParameterGroupName, Source, Filters,
#'   MaxRecords, Marker)
#'
#' @param DBParameterGroupName &#91;required&#93; The name of a specific DB parameter group to return details for.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the name of an existing DBParameterGroup.
#' @param Source The parameter types to return.
#' 
#' Default: All parameter types returned
#' 
#' Valid Values: `user | system | engine-default`
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_parameters`][rds_describe_db_parameters] request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       ParameterName = "string",
#'       ParameterValue = "string",
#'       Description = "string",
#'       Source = "string",
#'       ApplyType = "string",
#'       DataType = "string",
#'       AllowedValues = "string",
#'       IsModifiable = TRUE|FALSE,
#'       MinimumEngineVersion = "string",
#'       ApplyMethod = "immediate"|"pending-reboot",
#'       SupportedEngineModes = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_parameters(
#'   DBParameterGroupName = "string",
#'   Source = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_parameters
rds_describe_db_parameters <- function(DBParameterGroupName, Source = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_parameters_input(DBParameterGroupName = DBParameterGroupName, Source = Source, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_parameters_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_parameters <- rds_describe_db_parameters

#' Returns information about DB proxies
#'
#' @description
#' Returns information about DB proxies.
#'
#' @usage
#' rds_describe_db_proxies(DBProxyName, Filters, Marker, MaxRecords)
#'
#' @param DBProxyName The name of the DB proxy.
#' @param Filters This parameter is not currently supported.
#' @param Marker An optional pagination token provided by a previous request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that the remaining
#' results can be retrieved.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBProxies = list(
#'     list(
#'       DBProxyName = "string",
#'       DBProxyArn = "string",
#'       Status = "available"|"modifying"|"incompatible-network"|"insufficient-resource-limits"|"creating"|"deleting"|"suspended"|"suspending"|"reactivating",
#'       EngineFamily = "string",
#'       VpcSecurityGroupIds = list(
#'         "string"
#'       ),
#'       VpcSubnetIds = list(
#'         "string"
#'       ),
#'       Auth = list(
#'         list(
#'           Description = "string",
#'           UserName = "string",
#'           AuthScheme = "SECRETS",
#'           SecretArn = "string",
#'           IAMAuth = "DISABLED"|"REQUIRED"
#'         )
#'       ),
#'       RoleArn = "string",
#'       Endpoint = "string",
#'       RequireTLS = TRUE|FALSE,
#'       IdleClientTimeout = 123,
#'       DebugLogging = TRUE|FALSE,
#'       CreatedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       UpdatedDate = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_proxies(
#'   DBProxyName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Marker = "string",
#'   MaxRecords = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_proxies
rds_describe_db_proxies <- function(DBProxyName = NULL, Filters = NULL, Marker = NULL, MaxRecords = NULL) {
  op <- new_operation(
    name = "DescribeDBProxies",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_proxies_input(DBProxyName = DBProxyName, Filters = Filters, Marker = Marker, MaxRecords = MaxRecords)
  output <- .rds$describe_db_proxies_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_proxies <- rds_describe_db_proxies

#' Returns information about DB proxy target groups, represented by
#' DBProxyTargetGroup data structures
#'
#' @description
#' Returns information about DB proxy target groups, represented by
#' `DBProxyTargetGroup` data structures.
#'
#' @usage
#' rds_describe_db_proxy_target_groups(DBProxyName, TargetGroupName,
#'   Filters, Marker, MaxRecords)
#'
#' @param DBProxyName &#91;required&#93; The identifier of the `DBProxy` associated with the target group.
#' @param TargetGroupName The identifier of the `DBProxyTargetGroup` to describe.
#' @param Filters This parameter is not currently supported.
#' @param Marker An optional pagination token provided by a previous request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that the remaining
#' results can be retrieved.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   TargetGroups = list(
#'     list(
#'       DBProxyName = "string",
#'       TargetGroupName = "string",
#'       TargetGroupArn = "string",
#'       IsDefault = TRUE|FALSE,
#'       Status = "string",
#'       ConnectionPoolConfig = list(
#'         MaxConnectionsPercent = 123,
#'         MaxIdleConnectionsPercent = 123,
#'         ConnectionBorrowTimeout = 123,
#'         SessionPinningFilters = list(
#'           "string"
#'         ),
#'         InitQuery = "string"
#'       ),
#'       CreatedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       UpdatedDate = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_proxy_target_groups(
#'   DBProxyName = "string",
#'   TargetGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Marker = "string",
#'   MaxRecords = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_proxy_target_groups
rds_describe_db_proxy_target_groups <- function(DBProxyName, TargetGroupName = NULL, Filters = NULL, Marker = NULL, MaxRecords = NULL) {
  op <- new_operation(
    name = "DescribeDBProxyTargetGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_proxy_target_groups_input(DBProxyName = DBProxyName, TargetGroupName = TargetGroupName, Filters = Filters, Marker = Marker, MaxRecords = MaxRecords)
  output <- .rds$describe_db_proxy_target_groups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_proxy_target_groups <- rds_describe_db_proxy_target_groups

#' Returns information about DBProxyTarget objects
#'
#' @description
#' Returns information about `DBProxyTarget` objects. This API supports
#' pagination.
#'
#' @usage
#' rds_describe_db_proxy_targets(DBProxyName, TargetGroupName, Filters,
#'   Marker, MaxRecords)
#'
#' @param DBProxyName &#91;required&#93; The identifier of the `DBProxyTarget` to describe.
#' @param TargetGroupName The identifier of the `DBProxyTargetGroup` to describe.
#' @param Filters This parameter is not currently supported.
#' @param Marker An optional pagination token provided by a previous request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that the remaining
#' results can be retrieved.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Targets = list(
#'     list(
#'       TargetArn = "string",
#'       Endpoint = "string",
#'       TrackedClusterId = "string",
#'       RdsResourceId = "string",
#'       Port = 123,
#'       Type = "RDS_INSTANCE"|"RDS_SERVERLESS_ENDPOINT"|"TRACKED_CLUSTER",
#'       TargetHealth = list(
#'         State = "REGISTERING"|"AVAILABLE"|"UNAVAILABLE",
#'         Reason = "UNREACHABLE"|"CONNECTION_FAILED"|"AUTH_FAILURE"|"PENDING_PROXY_CAPACITY",
#'         Description = "string"
#'       )
#'     )
#'   ),
#'   Marker = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_proxy_targets(
#'   DBProxyName = "string",
#'   TargetGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Marker = "string",
#'   MaxRecords = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_proxy_targets
rds_describe_db_proxy_targets <- function(DBProxyName, TargetGroupName = NULL, Filters = NULL, Marker = NULL, MaxRecords = NULL) {
  op <- new_operation(
    name = "DescribeDBProxyTargets",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_proxy_targets_input(DBProxyName = DBProxyName, TargetGroupName = TargetGroupName, Filters = Filters, Marker = Marker, MaxRecords = MaxRecords)
  output <- .rds$describe_db_proxy_targets_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_proxy_targets <- rds_describe_db_proxy_targets

#' Returns a list of DBSecurityGroup descriptions
#'
#' @description
#' Returns a list of `DBSecurityGroup` descriptions. If a
#' `DBSecurityGroupName` is specified, the list will contain only the
#' descriptions of the specified DB security group.
#'
#' @usage
#' rds_describe_db_security_groups(DBSecurityGroupName, Filters,
#'   MaxRecords, Marker)
#'
#' @param DBSecurityGroupName The name of the DB security group to return details for.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_security_groups`][rds_describe_db_security_groups]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBSecurityGroups = list(
#'     list(
#'       OwnerId = "string",
#'       DBSecurityGroupName = "string",
#'       DBSecurityGroupDescription = "string",
#'       VpcId = "string",
#'       EC2SecurityGroups = list(
#'         list(
#'           Status = "string",
#'           EC2SecurityGroupName = "string",
#'           EC2SecurityGroupId = "string",
#'           EC2SecurityGroupOwnerId = "string"
#'         )
#'       ),
#'       IPRanges = list(
#'         list(
#'           Status = "string",
#'           CIDRIP = "string"
#'         )
#'       ),
#'       DBSecurityGroupArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_security_groups(
#'   DBSecurityGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_security_groups
rds_describe_db_security_groups <- function(DBSecurityGroupName = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBSecurityGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_security_groups_input(DBSecurityGroupName = DBSecurityGroupName, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_security_groups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_security_groups <- rds_describe_db_security_groups

#' Returns a list of DB snapshot attribute names and values for a manual DB
#' snapshot
#'
#' @description
#' Returns a list of DB snapshot attribute names and values for a manual DB
#' snapshot.
#' 
#' When sharing snapshots with other AWS accounts,
#' [`describe_db_snapshot_attributes`][rds_describe_db_snapshot_attributes]
#' returns the `restore` attribute and a list of IDs for the AWS accounts
#' that are authorized to copy or restore the manual DB snapshot. If `all`
#' is included in the list of values for the `restore` attribute, then the
#' manual DB snapshot is public and can be copied or restored by all AWS
#' accounts.
#' 
#' To add or remove access for an AWS account to copy or restore a manual
#' DB snapshot, or to make the manual DB snapshot public or private, use
#' the [`modify_db_snapshot_attribute`][rds_modify_db_snapshot_attribute]
#' API action.
#'
#' @usage
#' rds_describe_db_snapshot_attributes(DBSnapshotIdentifier)
#'
#' @param DBSnapshotIdentifier &#91;required&#93; The identifier for the DB snapshot to describe the attributes for.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DBSnapshotAttributesResult = list(
#'     DBSnapshotIdentifier = "string",
#'     DBSnapshotAttributes = list(
#'       list(
#'         AttributeName = "string",
#'         AttributeValues = list(
#'           "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_snapshot_attributes(
#'   DBSnapshotIdentifier = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_snapshot_attributes
rds_describe_db_snapshot_attributes <- function(DBSnapshotIdentifier) {
  op <- new_operation(
    name = "DescribeDBSnapshotAttributes",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_snapshot_attributes_input(DBSnapshotIdentifier = DBSnapshotIdentifier)
  output <- .rds$describe_db_snapshot_attributes_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_snapshot_attributes <- rds_describe_db_snapshot_attributes

#' Returns information about DB snapshots
#'
#' @description
#' Returns information about DB snapshots. This API action supports
#' pagination.
#'
#' @usage
#' rds_describe_db_snapshots(DBInstanceIdentifier, DBSnapshotIdentifier,
#'   SnapshotType, Filters, MaxRecords, Marker, IncludeShared, IncludePublic,
#'   DbiResourceId)
#'
#' @param DBInstanceIdentifier The ID of the DB instance to retrieve the list of DB snapshots for. This
#' parameter can't be used in conjunction with `DBSnapshotIdentifier`. This
#' parameter isn't case-sensitive.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the identifier of an existing DBInstance.
#' @param DBSnapshotIdentifier A specific DB snapshot identifier to describe. This parameter can't be
#' used in conjunction with `DBInstanceIdentifier`. This value is stored as
#' a lowercase string.
#' 
#' Constraints:
#' 
#' -   If supplied, must match the identifier of an existing DBSnapshot.
#' 
#' -   If this identifier is for an automated snapshot, the `SnapshotType`
#'     parameter must also be specified.
#' @param SnapshotType The type of snapshots to be returned. You can specify one of the
#' following values:
#' 
#' -   `automated` - Return all DB snapshots that have been automatically
#'     taken by Amazon RDS for my AWS account.
#' 
#' -   `manual` - Return all DB snapshots that have been taken by my AWS
#'     account.
#' 
#' -   `shared` - Return all manual DB snapshots that have been shared to
#'     my AWS account.
#' 
#' -   `public` - Return all DB snapshots that have been marked as public.
#' 
#' -   `awsbackup` - Return the DB snapshots managed by the AWS Backup
#'     service.
#' 
#'     For information about AWS Backup, see the [*AWS Backup Developer
#'     Guide.*](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)
#' 
#'     The `awsbackup` type does not apply to Aurora.
#' 
#' If you don't specify a `SnapshotType` value, then both automated and
#' manual snapshots are returned. Shared and public DB snapshots are not
#' included in the returned results by default. You can include shared
#' snapshots with these results by enabling the `IncludeShared` parameter.
#' You can include public snapshots with these results by enabling the
#' `IncludePublic` parameter.
#' 
#' The `IncludeShared` and `IncludePublic` parameters don't apply for
#' `SnapshotType` values of `manual` or `automated`. The `IncludePublic`
#' parameter doesn't apply when `SnapshotType` is set to `shared`. The
#' `IncludeShared` parameter doesn't apply when `SnapshotType` is set to
#' `public`.
#' @param Filters A filter that specifies one or more DB snapshots to describe.
#' 
#' Supported filters:
#' 
#' -   `db-instance-id` - Accepts DB instance identifiers and DB instance
#'     Amazon Resource Names (ARNs).
#' 
#' -   `db-snapshot-id` - Accepts DB snapshot identifiers.
#' 
#' -   `dbi-resource-id` - Accepts identifiers of source DB instances.
#' 
#' -   `snapshot-type` - Accepts types of DB snapshots.
#' 
#' -   `engine` - Accepts names of database engines.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_db_snapshots`][rds_describe_db_snapshots] request. If this
#' parameter is specified, the response includes only records beyond the
#' marker, up to the value specified by `MaxRecords`.
#' @param IncludeShared A value that indicates whether to include shared manual DB cluster
#' snapshots from other AWS accounts that this AWS account has been given
#' permission to copy or restore. By default, these snapshots are not
#' included.
#' 
#' You can give an AWS account permission to restore a manual DB snapshot
#' from another AWS account by using the
#' [`modify_db_snapshot_attribute`][rds_modify_db_snapshot_attribute] API
#' action.
#' @param IncludePublic A value that indicates whether to include manual DB cluster snapshots
#' that are public and can be copied or restored by any AWS account. By
#' default, the public snapshots are not included.
#' 
#' You can share a manual DB snapshot as public by using the
#' [`modify_db_snapshot_attribute`][rds_modify_db_snapshot_attribute] API.
#' @param DbiResourceId A specific DB resource ID to describe.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBSnapshots = list(
#'     list(
#'       DBSnapshotIdentifier = "string",
#'       DBInstanceIdentifier = "string",
#'       SnapshotCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Engine = "string",
#'       AllocatedStorage = 123,
#'       Status = "string",
#'       Port = 123,
#'       AvailabilityZone = "string",
#'       VpcId = "string",
#'       InstanceCreateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       MasterUsername = "string",
#'       EngineVersion = "string",
#'       LicenseModel = "string",
#'       SnapshotType = "string",
#'       Iops = 123,
#'       OptionGroupName = "string",
#'       PercentProgress = 123,
#'       SourceRegion = "string",
#'       SourceDBSnapshotIdentifier = "string",
#'       StorageType = "string",
#'       TdeCredentialArn = "string",
#'       Encrypted = TRUE|FALSE,
#'       KmsKeyId = "string",
#'       DBSnapshotArn = "string",
#'       Timezone = "string",
#'       IAMDatabaseAuthenticationEnabled = TRUE|FALSE,
#'       ProcessorFeatures = list(
#'         list(
#'           Name = "string",
#'           Value = "string"
#'         )
#'       ),
#'       DbiResourceId = "string",
#'       TagList = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_snapshots(
#'   DBInstanceIdentifier = "string",
#'   DBSnapshotIdentifier = "string",
#'   SnapshotType = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string",
#'   IncludeShared = TRUE|FALSE,
#'   IncludePublic = TRUE|FALSE,
#'   DbiResourceId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_snapshots
rds_describe_db_snapshots <- function(DBInstanceIdentifier = NULL, DBSnapshotIdentifier = NULL, SnapshotType = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL, IncludeShared = NULL, IncludePublic = NULL, DbiResourceId = NULL) {
  op <- new_operation(
    name = "DescribeDBSnapshots",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_snapshots_input(DBInstanceIdentifier = DBInstanceIdentifier, DBSnapshotIdentifier = DBSnapshotIdentifier, SnapshotType = SnapshotType, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker, IncludeShared = IncludeShared, IncludePublic = IncludePublic, DbiResourceId = DbiResourceId)
  output <- .rds$describe_db_snapshots_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_snapshots <- rds_describe_db_snapshots

#' Returns a list of DBSubnetGroup descriptions
#'
#' @description
#' Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is
#' specified, the list will contain only the descriptions of the specified
#' DBSubnetGroup.
#' 
#' For an overview of CIDR ranges, go to the [Wikipedia
#' Tutorial](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
#'
#' @usage
#' rds_describe_db_subnet_groups(DBSubnetGroupName, Filters, MaxRecords,
#'   Marker)
#'
#' @param DBSubnetGroupName The name of the DB subnet group to return details for.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' DescribeDBSubnetGroups request. If this parameter is specified, the
#' response includes only records beyond the marker, up to the value
#' specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   DBSubnetGroups = list(
#'     list(
#'       DBSubnetGroupName = "string",
#'       DBSubnetGroupDescription = "string",
#'       VpcId = "string",
#'       SubnetGroupStatus = "string",
#'       Subnets = list(
#'         list(
#'           SubnetIdentifier = "string",
#'           SubnetAvailabilityZone = list(
#'             Name = "string"
#'           ),
#'           SubnetOutpost = list(
#'             Arn = "string"
#'           ),
#'           SubnetStatus = "string"
#'         )
#'       ),
#'       DBSubnetGroupArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_db_subnet_groups(
#'   DBSubnetGroupName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_db_subnet_groups
rds_describe_db_subnet_groups <- function(DBSubnetGroupName = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeDBSubnetGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_db_subnet_groups_input(DBSubnetGroupName = DBSubnetGroupName, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_db_subnet_groups_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_db_subnet_groups <- rds_describe_db_subnet_groups

#' Returns the default engine and system parameter information for the
#' cluster database engine
#'
#' @description
#' Returns the default engine and system parameter information for the
#' cluster database engine.
#' 
#' For more information on Amazon Aurora, see [What Is Amazon
#' Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
#' in the *Amazon Aurora User Guide.*
#'
#' @usage
#' rds_describe_engine_default_cluster_parameters(DBParameterGroupFamily,
#'   Filters, MaxRecords, Marker)
#'
#' @param DBParameterGroupFamily &#91;required&#93; The name of the DB cluster parameter group family to return engine
#' parameter information for.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_engine_default_cluster_parameters`][rds_describe_engine_default_cluster_parameters]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EngineDefaults = list(
#'     DBParameterGroupFamily = "string",
#'     Marker = "string",
#'     Parameters = list(
#'       list(
#'         ParameterName = "string",
#'         ParameterValue = "string",
#'         Description = "string",
#'         Source = "string",
#'         ApplyType = "string",
#'         DataType = "string",
#'         AllowedValues = "string",
#'         IsModifiable = TRUE|FALSE,
#'         MinimumEngineVersion = "string",
#'         ApplyMethod = "immediate"|"pending-reboot",
#'         SupportedEngineModes = list(
#'           "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_engine_default_cluster_parameters(
#'   DBParameterGroupFamily = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_engine_default_cluster_parameters
rds_describe_engine_default_cluster_parameters <- function(DBParameterGroupFamily, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeEngineDefaultClusterParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_engine_default_cluster_parameters_input(DBParameterGroupFamily = DBParameterGroupFamily, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_engine_default_cluster_parameters_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_engine_default_cluster_parameters <- rds_describe_engine_default_cluster_parameters

#' Returns the default engine and system parameter information for the
#' specified database engine
#'
#' @description
#' Returns the default engine and system parameter information for the
#' specified database engine.
#'
#' @usage
#' rds_describe_engine_default_parameters(DBParameterGroupFamily, Filters,
#'   MaxRecords, Marker)
#'
#' @param DBParameterGroupFamily &#91;required&#93; The name of the DB parameter group family.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' [`describe_engine_default_parameters`][rds_describe_engine_default_parameters]
#' request. If this parameter is specified, the response includes only
#' records beyond the marker, up to the value specified by `MaxRecords`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EngineDefaults = list(
#'     DBParameterGroupFamily = "string",
#'     Marker = "string",
#'     Parameters = list(
#'       list(
#'         ParameterName = "string",
#'         ParameterValue = "string",
#'         Description = "string",
#'         Source = "string",
#'         ApplyType = "string",
#'         DataType = "string",
#'         AllowedValues = "string",
#'         IsModifiable = TRUE|FALSE,
#'         MinimumEngineVersion = "string",
#'         ApplyMethod = "immediate"|"pending-reboot",
#'         SupportedEngineModes = list(
#'           "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_engine_default_parameters(
#'   DBParameterGroupFamily = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_engine_default_parameters
rds_describe_engine_default_parameters <- function(DBParameterGroupFamily, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeEngineDefaultParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_engine_default_parameters_input(DBParameterGroupFamily = DBParameterGroupFamily, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_engine_default_parameters_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_engine_default_parameters <- rds_describe_engine_default_parameters

#' Displays a list of categories for all event source types, or, if
#' specified, for a specified source type
#'
#' @description
#' Displays a list of categories for all event source types, or, if
#' specified, for a specified source type. You can see a list of the event
#' categories and source types in
#' [Events](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html)
#' in the *Amazon RDS User Guide.*
#'
#' @usage
#' rds_describe_event_categories(SourceType, Filters)
#'
#' @param SourceType The type of source that is generating the events.
#' 
#' Valid values: `db-instance` | `db-cluster` | `db-parameter-group` |
#' `db-security-group` | `db-snapshot` | `db-cluster-snapshot`
#' @param Filters This parameter isn't currently supported.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EventCategoriesMapList = list(
#'     list(
#'       SourceType = "string",
#'       EventCategories = list(
#'         "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_event_categories(
#'   SourceType = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_event_categories
rds_describe_event_categories <- function(SourceType = NULL, Filters = NULL) {
  op <- new_operation(
    name = "DescribeEventCategories",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_event_categories_input(SourceType = SourceType, Filters = Filters)
  output <- .rds$describe_event_categories_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_event_categories <- rds_describe_event_categories

#' Lists all the subscription descriptions for a customer account
#'
#' @description
#' Lists all the subscription descriptions for a customer account. The
#' description for a subscription includes `SubscriptionName`,
#' `SNSTopicARN`, `CustomerID`, `SourceType`, `SourceID`, `CreationTime`,
#' and `Status`.
#' 
#' If you specify a `SubscriptionName`, lists the description for that
#' subscription.
#'
#' @usage
#' rds_describe_event_subscriptions(SubscriptionName, Filters, MaxRecords,
#'   Marker)
#'
#' @param SubscriptionName The name of the RDS event notification subscription you want to
#' describe.
#' @param Filters This parameter isn't currently supported.
#' @param MaxRecords The maximum number of records to include in the response. If more
#' records exist than the specified `MaxRecords` value, a pagination token
#' called a marker is included in the response so that you can retrieve the
#' remaining results.
#' 
#' Default: 100
#' 
#' Constraints: Minimum 20, maximum 100.
#' @param Marker An optional pagination token provided by a previous
#' DescribeOrderableDBInstanceOptions request. If this parameter is
#' specified, the response includes only records beyond the marker, up to
#' the value specified by `MaxRecords` .
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Marker = "string",
#'   EventSubscriptionsList = list(
#'     list(
#'       CustomerAwsId = "string",
#'       CustSubscriptionId = "string",
#'       SnsTopicArn = "string",
#'       Status = "string",
#'       SubscriptionCreationTime = "string",
#'       SourceType = "string",
#'       SourceIdsList = list(
#'         "string"
#'       ),
#'       EventCategoriesList = list(
#'         "string"
#'       ),
#'       Enabled = TRUE|FALSE,
#'       EventSubscriptionArn = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_event_subscriptions(
#'   SubscriptionName = "string",
#'   Filters = list(
#'     list(
#'       Name = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxRecords = 123,
#'   Marker = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname rds_describe_event_subscriptions
rds_describe_event_subscriptions <- function(SubscriptionName = NULL, Filters = NULL, MaxRecords = NULL, Marker = NULL) {
  op <- new_operation(
    name = "DescribeEventSubscriptions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .rds$describe_event_subscriptions_input(SubscriptionName = SubscriptionName, Filters = Filters, MaxRecords = MaxRecords, Marker = Marker)
  output <- .rds$describe_event_subscriptions_output()
  config <- get_config()
  svc <- .rds$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.rds$operations$describe_event_subscriptions <-