Ошибка создания CacheSecurityGroup: InvalidParameterValue - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь использовать Terraform для запуска экземпляра Redis на Elasticache и сталкиваюсь со следующей ошибкой.

* 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.

Ничего из того, что я нашел в вопросах ГР, не помогло. Вот как выглядит мой 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 для aws_elasticache_replication_group.

Это может показаться очевидным для того, кто уже имел дело с этим раньше, и теперь для меня это тоже так. Но входить в этот новый не было. Так что это не решение той проблемы с разрешениями, которую я получал. Но, как и во многих других вещах, я сделал шаг назад и спросил, действительно ли мне это нужно, и этот ответ был отрицательным.

1 Ответ

0 голосов
/ 11 мая 2018

Похоже, вы уже поняли, что aws_elasticache_security_group используется только в классических учетных записях EC2, когда вы не используете VPC. Недавно созданные учетные записи не позволяют создавать ресурсы сетевого уровня (экземпляры, балансировщики нагрузки, экземпляры RDS, экземпляры Elasticache и т. Д.) Вне VPC.

Это упоминается в документации Terraform для ресурса aws_elasticache_security_group :

ПРИМЕЧАНИЕ : Группы безопасности ElastiCache предназначены для использования только при работе с кластером ElastiCache вне VPC. Если вы используете VPC, обратитесь к ресурсу ElastiCache Subnet Group.

Документы AWS для групп безопасности Elasticache более подробно описаны:

Важно

Группы безопасности Amazon ElastiCache применимы только к кластерам, которые не работают в среде виртуального частного облака Amazon (VPC). Если вы работаете в виртуальном частном облаке Amazon, группы безопасности недоступны на панели навигации консоли.

Если вы используете узлы ElastiCache в Amazon VPC, вы контролируете доступ к своим кластерам с помощью групп безопасности Amazon VPC, которые отличаются от групп безопасности ElastiCache. Для получения дополнительной информации об использовании ElastiCache в Amazon VPC см. Amazon VPCs и ElastiCache Security

...