我正在尝试使用 Terraform 在 Elasticache 上启动 Redis 实例并遇到以下错误。
* module.main.module.redis.aws_elasticache_security_group.redis: 1 error(s) occurred:
* aws_elasticache_security_group.redis: Error creating CacheSecurityGroup: InvalidParameterValue: Use of cache security groups is not permitted in this API version for your account.
我在 GH 问题中发现的任何内容都没有帮助。这是我的 Terraform 的样子(我已确认变量已正确传递):
resource "aws_elasticache_subnet_group" "redis" {
name = "vpc-public-subnet"
description = "subnet where redis will live"
subnet_ids = ["${var.subnet}"]
}
resource "aws_elasticache_security_group" "redis" {
name = "redis-security-group"
security_group_names = ["${var.redis_sec_group}"]
}
resource "aws_elasticache_replication_group" "redis" {
automatic_failover_enabled = true
availability_zones = ["us-east-2a"]
replication_group_id = "${var.environment}-myapp-rep-group-1"
replication_group_description = "redis rep group - ${var.environment} env"
node_type = "cache.t2.micro"
number_cache_clusters = 2
parameter_group_name = "default.redis3.2"
port = 6379
at_rest_encryption_enabled = true
transit_encryption_enabled = true
subnet_group_name = "${aws_elasticache_subnet_group.redis.name}"
security_group_ids = ["${aws_elasticache_security_group.redis.id}"]
lifecycle {
ignore_changes = ["number_cache_clusters"]
}
}
resource "aws_elasticache_cluster" "redis" {
cluster_id = "${var.environment}-myapp"
count = 1
replication_group_id = "${aws_elasticache_replication_group.redis.id}"
}
我认为问题可能出在我的 IAM 用户上,所以我添加了AmazonElastiCacheFullAccess
策略,但它仍然说不允许这样做。在阅读 AWS 文档上关于API_CreateCacheSecurityGroup的帖子并确认这三个策略包含在AmazonElastiCacheFullAccess
.
这些资源周围似乎有一些错误的行为
https://github.com/hashicorp/terraform/issues/10127
我的解决方案
抱歉,请在此忍耐一下。发布这个并完全写出来确实帮助我处理我的想法。我发现这aws_elasticache_security_group
是不必要的,只是决定["${var.redis_sec_group}"]
直接传递给security_group_ids
for aws_elasticache_replication_group
。
对于之前已经处理过这个问题的人来说,这似乎很明显,现在对我来说也是如此。但是进入这个全新的它不是。所以这不是我遇到的那个权限问题的解决方案。但是,就像很多事情一样,我退后一步,质疑我是否真的需要它,答案是否定的。