skip to Main Content

This template is used to create a ElastiCache- Redis cluster.
Its showing me errors like – 1 validation error detected: Value ‘[AWS::ElastiCache::CacheCluster, AWS::EC2::SecurityGroup::Id]’ at ‘typeNameList’ failed to satisfy constraint: Member must satisfy constraint: [Member must have length less than or equal to 204, Member must have length greater than or equal to 10, Member must satisfy regular expression pattern: [A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}].
Wanted to know if the parameters are declared rightly or not.

AWSTemplateFormatVersion: 2010-09-09

Description: Create ElastiCache and related resources

Parameters:
  VPC:
    Description: VPC 
    Type: AWS::EC2::VPC::Id
  Subnet:
    Description: Subnet
    Type: AWS::EC2::Subnet::Id
  ClusterName:
    Description: Custom name of the cluster. Auto generated if you 
    don't supply your own.
    Type: String
  CacheNodeType:
    Description: Cache node instance class, e.g. cache.t2.micro. 
    Type: String
    Default: cache.t2.micro
    ConstraintDescription: Node instance class not supported
    AllowedValues:
      - cache.t2.micro
      - cache.t2.small
      - cache.t2.medium
      - cache.m4.large
      - cache.m4.xlarge
      - cache.m4.2xlarge
      - cache.m4.4xlarge
      - cache.m4.10xlarge
      - cache.r4.large
      - cache.r4.xlarge
      - cache.r4.2xlarge
      - cache.r4.4xlarge
      - cache.r4.8xlarge
      - cache.r4.16xlarge
  CacheEngine:
    Description: The underlying cache engine, either Redis or 
    Memcached
    Type: String
    Default: redis
    ConstraintDescription: Node instance class not supported
    AllowedValues:
      - redis
      - memcached
  CacheNodeCount:
    Description: Number of nodes in the cluster. Only used with 
    memcached engine, for redis this value will be set to 1.
    Type: Number
    MinValue: 1
    MaxValue: 15
    ConstraintDescription: Node count must be between 1 and 15
    Default: 1
  AutoMinorVersionUpgrade:
    Description: Whether or not minor version upgrades to the cache 
    engine should be applied automatically during the maintenance 
    window.
    Type: String
    Default: true
    AllowedValues:
      - true
      - false

Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup::Id
    Properties:
      GroupDescription: ElastiCache Security Group
      VpcId: !Ref VPC
      SecurityGroupIngress:
          - IpProtocol: tcp
            FromPort: 6379
            ToPort: 6379
          - IpProtocol: tcp
            FromPort: 11211
            ToPort: 11211
      Tags:
        -
          Key: Name
          Value: "App-SG"
  ElastiCacheCluster:
    Type: AWS::ElastiCache::CacheCluster
    Properties:
      AutoMinorVersionUpgrade: !Ref AutoMinorVersionUpgrade
      Engine: !Ref CacheEngine
      CacheNodeType: !Ref CacheNodeType
      ClusterName : !Ref ClusterName
      NumCacheNodes: !Ref CacheNodeCount
      CacheSubnetGroupName: !Ref Subnet 
      VpcSecurityGroupIds: !Ref SecurityGroup
      Tags:
        - Key: Name
          Value: ElastiCache-Redis

Also it will be helpful to review the entire template to avoid more errors.Main issues seem to appear from resource section.

2

Answers


  1. This question is old and I’m sure OP found the resolution but for anyone else who may come across this question – I believe the issue is that ElastiCacheCluster.VpcSecurityGroupIds must be a list, whereas !Ref SecurityGroup will simply return the ID of the security group as a string.

    In addition, since both resources are created by the same template, we should make sure that the security group will be created first, otherwise referencing it will cause an error when the Elasticache cluster is created.

    Here’s the ElastiCache::CacheCluster resource with a list as the value of VpcSecurityGroupIds and a dependency on the security group.

    ElastiCacheCluster:
     Type: AWS::ElastiCache::CacheCluster
     Properties:
      AutoMinorVersionUpgrade: !Ref AutoMinorVersionUpgrade
      Engine: !Ref CacheEngine
      CacheNodeType: !Ref CacheNodeType
      ClusterName : !Ref ClusterName
      NumCacheNodes: !Ref CacheNodeCount
      CacheSubnetGroupName: !Ref Subnet 
      VpcSecurityGroupIds: 
       - !Ref SecurityGroup
      Tags:
       - Key: Name
         Value: ElastiCache-Redis
     DependsOn: SecurityGroup
    
    Login or Signup to reply.
  2. I had the same error messages and landed here.
    Turns out that in my case, the problem was an incorrect type.

    I had AWS::IAM:Role instead of AWS::IAM::Role (1 : vs 2)

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search