强制 Terraform 在 AWS Elasticache Redis 集群上应用挂起的更改

Force Terraform to apply pending changes on AWS Elasticache Redis cluster

我正在尝试使用 Terraform 将 Elasticache 的节点类型从老一代 (cache.t2.) 更改为新一代 (cache.t3.)。

能够通过 terraform apply 成功修改所有 Memcached 实例的节点类型,但不幸的是,当我尝试使用 terraform apply 更改 Redis 的节点类型时,命令仅在 ~30 秒内完成并且未应用任何更改。

要应用节点类型更改,我必须登录到 Web 控制台并单击单个 Redis 实例并单击修改并应用未决更改并等待它完成。这对我来说是手动工作,我必须为 100 个 Redis 实例执行此操作。

是否可以强制 Terraform 在 Elasticache 上应用 Redis 的未决更改?

你试过争论 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elasticache_cluster#apply_immediately 吗?

也许另一个解决方案是 运行 带有 aws-cli --apply-immediately 选项的 bash 脚本 https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html

对我来说,Terraform 的立即应用不起作用,所以我使用 aws-cli 来立即应用更改。

下面的 shell 命令将识别所有集群上的待定更改并立即在每个集群实例上提交应用。

PRFIL="profile1"
RGN="eu-west-1"

for cls in `aws-okta exec $PRFIL -- aws --region $RGN elasticache describe-cache-clusters | jq '.CacheClusters | .[] | select((.PendingModifiedValues | length ) > 0 and (.CacheClusterStatus!="modifying")) | .ReplicationGroupId ' | sort | uniq `  
  do
  echo $cls
  echo "aws-okta exec $PRFIL -- aws --region $RGN elasticache modify-replication-group --replication-group-id $cls --apply-immediately" | bash -vx | jq '.ReplicationGroup.Status'
done