简体   繁体   English

AWS::ElastiCache::GlobalReplicationGroup 的 Cloud Formation 模板

[英]Cloud Formation template for AWS::ElastiCache::GlobalReplicationGroup

wanted to create Redis global datastore using CF, following the guidelines https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html想要使用 CF 创建 Redis 全局数据存储,遵循指南https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.79D698FDC7A8D5FC6C

but no luck, I can create Redis cluster but not the global data store: My code:但没有运气,我可以创建 Redis 集群但不能创建全局数据存储:我的代码:

AWSTemplateFormatVersion: '2010-09-09'
Description: redis deployment.
Parameters:
    RedisSubnets:
        Description: PRIVATE Subnets for subnet group
        Type: "List<String>"
    VpcId:
        Description: The VPC that the Postgres DB  is deployed to
        Type: AWS::EC2::VPC::Id
    NodeType:
        Description: Node type for redis service
        Type: String
    ClusterName:
        Description: Cluster name for redis service
        Type: String
    AvailabilityZones:
        Description: Availability zones for redis service
        Type: "List<String>"
    CidrIp1:
        Description: Ingress CIDr
        Type: String
        Default: 0.0.0.0/0
    CidrIp2:
        Description: Ingress CIDr
        Type: String
        Default: 0.0.0.0/0

Resources:
  RedisSubnetGroup:
    Type: AWS::ElastiCache::SubnetGroup
    Properties:
      CacheSubnetGroupName: !Sub ${AWS::StackName}-subnetgroup
      Description: "Subnet group for redis server"
      SubnetIds: !Ref RedisSubnets
  RedisSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      VpcId: !Ref VpcId
      GroupDescription: "A component security group allowing access only to redis"
  ElasticacheComponentSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Elasticache security group"
      SecurityGroupIngress:
        -
          IpProtocol: "tcp"
          FromPort: 6379
          ToPort: 6379
          CidrIp: !Ref CidrIp1
        -
          IpProtocol: "tcp"
          FromPort: 6379
          ToPort: 6379
          CidrIp: !Ref CidrIp2
      VpcId: !Ref VpcId
  RedisService:
    Type: AWS::ElastiCache::ReplicationGroup
    Properties:
      AutoMinorVersionUpgrade: false
      CacheNodeType: cache.r5.large
      CacheParameterGroupName: default.redis6.x
      CacheSubnetGroupName: !Ref RedisSubnetGroup
      ReplicationGroupId: !Ref ClusterName
      SecurityGroupIds:
        - !Ref ElasticacheComponentSecurityGroup
      Engine: "Redis"
      EngineVersion: "6.2"
      NumNodeGroups: 1
      AutomaticFailoverEnabled: false
      ReplicationGroupDescription: Sample Redis group for scaling
      Port: 6379
  globalreplication:
    Type: AWS::ElastiCache::GlobalReplicationGroup
    Properties:
      AutomaticFailoverEnabled: false
      GlobalReplicationGroupDescription: description example
      GlobalReplicationGroupIdSuffix: test
      Members:
        - ReplicationGroupId: !Ref ClusterName
          ReplicationGroupRegion: eu-west-1
          Role: primary
      RegionalConfigurations:
        - ReplicationGroupId: test-redis-eu-west-2
          ReplicationGroupRegion: eu-west-2

Outputs:
  redisUrl:
    Description: URL for newly created redis service
    Value: !Ref RedisService

if any one can help, I am getting This error:如果有人可以提供帮助,我会收到此错误:

Properties validation failed for resource globalreplication with message: #/Members/0/Role: #: only 1 subschema matches out of 2 #/Members/0/Role: failed validation constraint for keyword [enum]资源全局复制的属性验证失败,消息为:#/Members/0/Role:#: 2 个子模式中只有 1 个匹配 #/Members/0/Role: 关键字 [enum] 的验证约束失败

globalreplication:
Type: AWS::ElastiCache::GlobalReplicationGroup
DependsOn: RedisService
Properties:
  AutomaticFailoverEnabled: false
  GlobalReplicationGroupDescription: description example
  GlobalReplicationGroupIdSuffix: test
  Members:
    - ReplicationGroupId: !Ref ClusterName
      ReplicationGroupRegion: eu-west-1
      Role: PRIMARY

This will add the primary node and create new global data store and then need to add the secondary node in the newly created global data store, you can see the prefixes here https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastores-CLI.html :这将添加主节点并创建新的全局数据存储,然后需要在新创建的全局数据存储中添加辅助节点,您可以在此处查看前缀https://docs.aws.amazon.com/AmazonElastiCache/latest/ red-ug/Redis-Global-Datastores-CLI.html

RedisService:
Type: AWS::ElastiCache::ReplicationGroup
Properties:
  CacheSubnetGroupName: !Ref RedisSubnetGroup
  ReplicationGroupId: !Ref ClusterName
  SecurityGroupIds:
    - !Ref ElasticacheComponentSecurityGroup
  GlobalReplicationGroupId: gxeiz-test
  ReplicationGroupDescription: Sample Redis group for scaling
  Port: 6379

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM