创建CacheSecurityGroup时出错:InvalidParameterValue

时间:2018-05-08 20:53:31

标签: terraform amazon-elasticache terraform-provider-aws

我正在尝试使用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政策,但它仍然说不允许这样做。我在阅读有关API_CreateCacheSecurityGroup的AWS文档的帖子后做到了这一点,并确认这三项政策已包含在AmazonElastiCacheFullAccess中。

围绕这些资源似乎存在一些错误行为

https://github.com/hashicorp/terraform/issues/10127

我的解决方案

对不起,请在这里忍受我。发布这个并完全写出来确实帮助我处理了我的想法。我发现aws_elasticache_security_group是不必要的,只是决定将["${var.redis_sec_group}"]直接传递给security_group_ids aws_elasticache_replication_group

对于之前已经处理过此问题的人来说,这似乎是显而易见的,现在对我来说也是如此。但进入这个全新的事实并非如此。所以这不是我得到的权限问题的解决方案。但是,和许多事情一样,我退后一步,质疑我是否真的需要它,答案是否定的。

0 个答案:

没有答案