#amazon-web-services #amazon-cloudformation
#amazon-web-services #aws-cloudformation
Вопрос:
Я пытаюсь создать следующий стек CloudFormation для экземпляра Redis (Redis не указан, поэтому просто подсеть и группа подсетей кэша). Как следует из названия, создание TestRedisSubnetGroup
завершается неудачей. Я могу создать группу подсети вручную с помощью консоли, и я также могу создать группу подсети, когда я использую идентификатор подсети вместо ref
функции. У меня уже есть подсети, потому что сначала стек был создан только с подсетями, и теперь я хочу обновить стек и добавить группу подсетей. (Первый подход состоял в том, чтобы создать подсеть, группу и redis одновременно, но это не удалось с той же ошибкой.)
TL; TR: ref
функция работает не так, как ожидалось, в чем я ошибся?
vpc-1743447c
является ли VPC по умолчанию с 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"
Ответ №1:
Причина в том, что - "!Ref TestRedisSubnetAZ2"
недопустимо в качестве шаблона CloudFormation и - !Ref TestRedisSubnetAZ2
недопустимо YAML. Таким образом, альтернативный способ использования ссылки - Ref: TestRedisSubnetAZ2
. Но не очевидно, что - Ref: TestRedisSubnetAZ2
и - "Ref: TestRedisSubnetAZ2"
это не одно и то же.
- Ref: TestRedisSubnetAZ2
является вложенным ключом-значением в массиве.
{
'SubnetIds' => [
{ 'Ref' => 'TestRedisSubnetAZ1' },
{ 'Ref' => 'TestRedisSubnetAZ2' }
]
}
PS: DependsOn
также требуется для создания стека за один раз.