func (c *RDS) AddRoleToDBInstance(input *AddRoleToDBInstanceInput) (*AddRoleToDBInstanceOutput, error) {
	req, out := c.AddRoleToDBInstanceRequest(input)
	return out, req.Send()
}
AddRoleToDBInstance API operation for Amazon Relational Database Service.

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.

Returns awserr.Error for service API and SDK errors. Use runtime type assertions
with awserr.Error's Code and Message methods to get detailed information about
the error.

See the AWS API reference guide for Amazon Relational Database Service's
API operation AddRoleToDBInstance for usage and error information.

Returned Error Codes:
* ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
DBInstanceIdentifier doesn't refer to an existing DB instance.

* ErrCodeDBInstanceRoleAlreadyExistsFault "DBInstanceRoleAlreadyExists"
The specified RoleArn or FeatureName value is already associated with the
DB instance.

* ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
The DB instance isn't in a valid state.

* ErrCodeDBInstanceRoleQuotaExceededFault "DBInstanceRoleQuotaExceeded"
You can't associate any more AWS Identity and Access Management (IAM) roles
with the DB instance because the quota has been reached.

See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddRoleToDBInstance
package rds
import (
	"fmt"
	"time"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
	"github.com/aws/aws-sdk-go/private/protocol"
	"github.com/aws/aws-sdk-go/private/protocol/query"
)
const opAddRoleToDBCluster = "AddRoleToDBCluster"
func (c *RDS) AddRoleToDBClusterRequest(input *AddRoleToDBClusterInput) (req *request.Request, output *AddRoleToDBClusterOutput) {
	op := &request.Operation{
		Name:       opAddRoleToDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}
	if input == nil {
		input = &AddRoleToDBClusterInput{}
	}
	output = &AddRoleToDBClusterOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}
func (c *RDS) AddRoleToDBCluster(input *AddRoleToDBClusterInput) (*AddRoleToDBClusterOutput, error) {
	req, out := c.AddRoleToDBClusterRequest(input)
	return out, req.Send()
}
func (c *RDS) AddRoleToDBClusterWithContext(ctx aws.Context, input *AddRoleToDBClusterInput, opts ...request.Option) (*AddRoleToDBClusterOutput, error) {
	req, out := c.AddRoleToDBClusterRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}
const opAddRoleToDBInstance = "AddRoleToDBInstance"
func (c *RDS) AddRoleToDBInstanceRequest(input *AddRoleToDBInstanceInput) (req *request.Request, output *AddRoleToDBInstanceOutput) {
	op := &request.Operation{
		Name:       opAddRoleToDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}
	if input == nil {
		input = &AddRoleToDBInstanceInput{}
	}
	output = &AddRoleToDBInstanceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}