Configuring Redis Services with flightcontrol.json
In addition to the Service Configuration attributes that are common to all services, the following attributes are specific to Redis/ElastiCache services.
Overview of Redis Service Type
This service will create a Redis instance using AWS Elasticache with AUTH and Encryption in transit (TLS) enabled by default.
The password and the connection URL(s) will be stored in the SSM Parameter Store in your AWS Account - Flightcontrol does not store it. The connection URL can also be made available to the other services in the same environment by setting up connectionStringEnvVarName
(see the docs below for an example).
Besides the AWS Elasticache resource and the SSM Parameter, there are a couple of other AWS resources needed for the architecture which we abstract away, like Subnets and Security Group.
Limitations for the Redis Service Type
We do not currently support:
-
Changing the cluster configuration after creation, i.e.: the engine version or the instance size. This means if you need to make changes after deployment, you will need to delete the service and add a new one with a different ID.
-
AWS Cluster Mode, which includes sharding and multiple clusters under the same service
Redis Service Attributes
The type for all database services is elasticache
, and should be specified like the following:
type: 'elasticache'
In addition, there are several other attributes that are specific to Redis services:
Required Properties
engine: string
The cache engine to be created. Supported values: "redis"
- Example:
"engine": "redis"
instanceSize: string
- The AWS instance size
- Example:
"instanceSize": "cache.t4g.small"
- Support values: See the AWS documentation
- Changing this after creation will not currently work.
engineVersion: string
- Cannot be changed after initial deployment
- Supported values:
- Redis:
"7.1", "7.0", "6.2", "6.0", "5.0.6", "5.0.5", "5.0.4", "5.0.3", "5.0.0", "4.0.10", "3.2.10", "3.2.6", "3.2.4", "2.8.24", "2.8.23", "2.8.22", "2.8.21", "2.8.19", "2.8.6", "2.6.13"
- Redis:
- Default:
7.1
- Example:
"engineVersion": "6.2"
Optionals Properties
numberOfReplicas: number
- The number of replicas you want in your Redis service
- Optional with default:
1
connectionStringEnvVarName: string
- The name of the environment variable that will contain the URL for connecting to Redis.
- When this is set, Flightcontrol automatically injects the environment variable to other services in the same environment.
- Optional with NO default
- Example:
"connectionStringEnvVarName": "REDIS_URL"
(In this case, REDIS_URL will be available as an env var for any other service in the same environment)
autoUpgradeMinorVersions: boolean
- Example:
āautoUpgradeMinorVersions": true
- Optional with default:
true
port: int
- Example:
"port": 6379
- Optional with default:
- Redis:
6379
- Redis:
encryptionAtRest: boolean
- Enable or disable encryption of Redis at rest.
- Example:
"encryptionAtRest": true
- Optional with default:
true
Configuration Example
Note:
name
is what will be displayed in your FC dashboardid
should be unique and is used by FC as the source of truth for your service, changing this will create a new service under the same environment
{
"id": "redis",
"type": "elasticache",
"engine": "redis",
"name": "My Redis Service",
"engineVersion": "7.0",
"instanceSize": "cache.t4g.small"
}