Verify that you have permission to create service linked role

I had an error when attempting to create a new rds-postgres resource:
Verify that you have permission to create service linked role.

To resolve the issue I had to manually update the “api-rds-provisioner” inline policy on the “{RACK NAME}-api” IAM role to include this:

{
			"Effect": "Allow",
			"Action": "iam:CreateServiceLinkedRole",
			"Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
			"Condition": {
				"StringLike": {
					"iam:AWSServiceName": "rds.amazonaws.com"
				}
			}
		}

Hey @rhysawilliams2010

What rack version are you currently running on?
You can find this in the output of convox rack or convox rack params

I believe AWS made some changes along these lines, but we’ve applied rack updates which should solve any issues.

I just reran our unit testing for v3 RDS postgres and there were no errors.

I first installed client: 3.19.6 then upgraded to client: 3.19.7 and it still didn’t work

@rhysawilliams2010

Can you please provide me with the convox.yml (redacted if needed) you’re deploying with so I can take a look. Feel free to DM it if you prefer.

Hi Nick, this is my convox.yml:

version: '3'
resources:
  database:
    type: rds-postgres
    options:
      version: 16
      encrypted: true
      class: db.t3.micro
      deletionProtection: true
      durable: true
      backupRetentionPeriod: 7
services:
  app:
    build: .
    port: 8080
    health: /actuator/health
    scale:
      cpu: 256
      memory: 1024
    resources:
      - database

Hey @rhysawilliams2010,

I just took your exact convox.yml sans healthcheck path and deployed with no issues.

I believe what you may be confusing is the difference between CLI and rack versions.

Even if your client (CLI) is updated to a later version, you must also update your rack.

  • You can check your rack’s current version with the commands convox rack -r <rack-name> or convox rack params -r <rack-name>.
  • The command convox version will show your client (CLI) and server (actively addressed rack convox switch <rack-name>) version. Once actively addressed, the -r <rack-name> flag no longer needs to be appended to commands if you desire.


  • The command convox rack update <version> -r <rack-name> will update your rack to the desired version. Please be sure to read up on the documentation regarding v3 versioning, as it requires step-wise updates through the minor versions to support Kubernetes update paths.
  • The command convox update will only update your CLI.

@Nick-Convox I am aware of the difference between the cli version and the rack version. This was definitely an issue for me until I changed the IAM role. I have created a PR that I believe fixes the issue here: Enable CreateServiceLinkedRole for rds-provisioner by rhys-lastmyle · Pull Request #864 · convox/convox · GitHub