我尝试为redis实例创建以下云形式堆栈(redis被排除在外,所以只有子网和缓存子网组)。正如标题所说,TestRedisSubnetGroup
的创建确实失败了。我可以使用控制台手动创建子网组,当我使用子网ID而不是ref
函数时,也可以创建子网组。我已经有子网已经到位了,因为堆栈仅是使用子网创建的,现在我想更新堆栈并添加子网组。(第一种方法是同时创建子网,组和REDIS,但失败了相同的错误。)
tl; tr: ref
函数无法正常工作,我错了什么?
vpc-1743447c
是带有CIDR 172.31.0.0/16
---
AWSTemplateFormatVersion: '2010-09-09'
Description: RedisStack
Resources:
TestRedisSubnetAZ1:
Type: AWS::EC2::Subnet
Properties:
VpcId: vpc-1743447c
AvailabilityZone: eu-central-1a
CidrBlock: 172.31.64.0/24
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: TestDeletionPolicyStack-AZ1
TestRedisSubnetAZ2:
Type: AWS::EC2::Subnet
Properties:
VpcId: vpc-1743447c
AvailabilityZone: eu-central-1b
CidrBlock: 172.31.65.0/24
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: TestDeletionPolicyStack-AZ2
TestRedisSubnetGroup:
Type: AWS::ElastiCache::SubnetGroup
Properties:
Description: Test Redis Subnet Group
SubnetIds:
- "!Ref TestRedisSubnetAZ1"
- "!Ref TestRedisSubnetAZ2"
原因是 - "!Ref TestRedisSubnetAZ2"
无效,因为云形式模板,而 - !Ref TestRedisSubnetAZ2
无效。因此,使用参考的替代方法是- Ref: TestRedisSubnetAZ2
。但是- Ref: TestRedisSubnetAZ2
和- "Ref: TestRedisSubnetAZ2"
并不相同。
- Ref: TestRedisSubnetAZ2
是数组中的嵌套键值。
{
'SubnetIds' => [
{ 'Ref' => 'TestRedisSubnetAZ1' },
{ 'Ref' => 'TestRedisSubnetAZ2' }
]
}
ps:DependsOn
也需要一个GO创建堆栈。