想要使用 CF 创建 Redis 全局数据存储,遵循指南 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html
但运气不好,我可以创建 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
如果有人可以提供帮助,我收到此错误:
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]
最佳答案
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
这将添加主节点并创建新的全局数据存储,然后需要在新创建的全局数据存储中添加辅助节点,您可以在此处看到前缀 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
关于amazon-web-services - AWS::ElastiCache::Global Replication Group 的 Cloudformation 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70498779/