Skip to content

[Bug]: AWS elasticache - Redis to Valkey migration  #41181

@bhargavtheertham-cb

Description

@bhargavtheertham-cb

Terraform Core Version

v1.7.3

AWS Provider Version

5.84.0

Affected Resource(s)

We are working on converting AWS elasticache engine type from Redis to Valkey. AWS console allows us to update the engine to valkey and choose a new parameter group , it is a fully online operation with may be a few seconds of down. Th endpoint also remains the same so fully transparent to the application. When using terraform it seems to destroy and recreate the resource which would make us lose data and take downtime.

Expected Behavior

It should update it in place without losing data as it is done via AWS Console

Actual Behavior

-/+ destroy and then create replacement

Terraform will perform the following actions:

  # aws_elasticache_cluster.cache_infra_datastores_resources_staging_redis_stage_redis_1 must be replaced <---
-/+ resource "aws_elasticache_cluster" "cache_infra_datastores_resources_staging_redis_stage_redis_1" {
      ~ arn                        = "arn:aws:elasticache:us-east-1:038351868345:cluster:datastores-resources" -> (known after apply)
      ~ availability_zone          = "us-east-1f" -> (known after apply)
      ~ az_mode                    = "single-az" -> (known after apply)
      ~ cache_nodes                = [
          - {
              - address           = "datastores-resources.pwf76b.0001.use1.cache.amazonaws.com"
              - availability_zone = "us-east-1f"
              - id                = "0001"
              - port              = 6379
                # (1 unchanged attribute hidden)
            },
        ] -> (known after apply)
      + cluster_address            = (known after apply)
      + configuration_endpoint     = (known after apply)
      ~ engine                     = "redis" -> "valkey" # forces replacement <---------
      ~ engine_version             = "6.x" -> "8.0"
      ~ engine_version_actual      = "6.2.6" -> (known after apply)
      ~ id                         = "datastores-resources" -> (known after apply)
      ~ ip_discovery               = "ipv4" -> (known after apply)
      ~ maintenance_window         = "fri:09:30-fri:10:30" -> (known after apply)
      ~ network_type               = "ipv4" -> (known after apply)
      ~ parameter_group_name       = "infra-datastores-resources-staging-redis-pg" -> "infra-datastores-resources-staging-valkey-pg"
      + preferred_outpost_arn      = (known after apply)
      + replication_group_id       = (known after apply)
      - snapshot_retention_limit   = 0 -> null
      ~ snapshot_window            = "05:00-06:00" -> (known after apply)
 

### Relevant Error/Panic Output Snippet

```shell

Terraform Configuration Files

NA

Steps to Reproduce

NA

Debug Output

No response

Panic Output

No response

Important Factoids

No response

References

No response

Would you like to implement a fix?

None

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugAddresses a defect in current functionality.service/elasticacheIssues and PRs that pertain to the elasticache service.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions