Migrating from RDS v1 to RDS v2 — boto v2.27.0

### Navigation

- index
- modules |
- next |
- previous |
- boto v2.27.0 »

# Migrating from RDS v1 to RDS v2

The original `boto.rds` module has historically lagged quite far behind the service (at time of writing, almost 50% of the API calls are missing/out-of-date). To address this, the Boto core team has switched to a generated client for RDS (`boto.rds2.layer1.RDSConnection`).

However, this generated variant is not backward-compatible with the older `boto.rds.RDSConnection`. This document is to help you update your code (as desired) to take advantage of the latest API calls.

For the duration of the document, RDS2Connection refers to `boto.rds2.layer1.RDSConnection`, where RDSConnection refers to `boto.rds.RDSConnection`.

## Prominent Differences

- The new RDS2Connection maps very closely to the official API operations, where the old RDSConnection had non-standard & inconsistent method names.
- RDS2Connection almost always returns a Python dictionary that maps closely to the API output. RDSConnection returned Python objects.
- RDS2Connection is much more verbose in terms of output. Tools like jmespath or jsonq can make handling these sometimes complex dictionaries more manageable.

## Method Renames

Format is `old_method_name` -> `new_method_name`:

- `authorize_dbsecurity_group` -> `authorize_db_security_group_ingress`
- `create_dbinstance` -> `create_db_instance`
- `create_dbinstance_read_replica` -> `create_db_instance_read_replica`
- `create_parameter_group` -> `create_db_parameter_group`
- `get_all_dbsnapshots` -> `describe_db_snapshots`
- `get_all_events` -> `describe_events`
- `modify_dbinstance` -> `modify_db_instance`
- `reboot_dbinstance` -> `reboot_db_instance`
- `restore_dbinstance_from_dbsnapshot` -> `restore_db_instance_from_db_snapshot`
- `restore_dbinstance_from_point_in_time` -> `restore_db_instance_to_point_in_time`
- `revoke_dbsecurity_group` -> `revoke_db_security_group_ingress`

## Parameter Changes

Many parameter names have changed between RDSConnection & RDS2Connection. For instance, the old name for the instance identifier was `id`, where the new name is `db_instance_identifier`. These changes are to ensure things map more closely to the API.

In addition, in some cases, ordering & required-ness of parameters has changed as well. For instance, in `create_db_instance`, the `engine` parameter is now required (previously defaulted to `MySQL5.1`) & its position in the call has change to be before `master_username`.

As such, when updating your API calls, you should check the API Reference documentation to ensure you’re passing the correct parameters.

## Return Values

RDSConnection frequently returned higher-level Python objects. In contrast, RDS2Connection returns Python dictionaries of the data. This will require a bit more work to extract the necessary values. For example:

    # Old
    >>> instances = rds1_conn.get_all_dbinstances()
    >>> inst = instances[0]
    >>> inst.name
    'test-db'

    # New
    >>> instances = rds2_conn.describe_db_instances()
    >>> inst = instances['DescribeDBInstancesResponse']\
    ...                 ['DescribeDBInstancesResult']['DBInstances'][0]
    >>> inst['DBName']
    'test-db'

### Navigation

- index
- modules |
- next |
- previous |
- boto v2.27.0 »