#amazon-ec2 #amazon-cloudformation #amazon-rds
Вопрос:
Я пытаюсь создать сервер RDS, на котором работает база данных MySQL, и получаю следующую ошибку:
1 validation error detected: Value '[AWS:RDS::DBInstance]' 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}]
AWSTemplateFormatVersion: 2010-09-09
Parameters:
DBName:
Type: String
AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'
MUser:
Type: String
AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'
MPass:
Type: String
AllowedPattern: '[a-zA-Z0-9]*'
Description: "It shouldn't be less than 8 characters"
Resources:
MyDBInstance:
Type: AWS:RDS::DBInstance
Properties:
DBName: !Ref DBName
MasterUserPassword: !Ref MUser
MasterUserPassword: !Ref MPass
Engine: MySQL
DBInstanceClass: db.t2.micro
StorageType: gp2
PubliclyAccessible: True
AllocatedStorage: "20"
DBInstanceIdentifier: !Join ["-", [ "MyDBInstance", !Ref "AWS::Region" ]]
AvailabilityZone: !Select [1, !GetAZs ""]
Комментарии:
1. Привет. Я заметил, что на все ваши вопросы были даны ответы, и ни один из них так и не был принят. Принятие хороших ответов является хорошей практикой и уменьшает количество дубликатов. @PatMyron хорошо, что ты даже написал «Это сработало. спасибо», так почему бы не принять это?
Ответ №1:
Отсутствует двоеточие. Должно быть AWS::RDS::DBInstance
Рекомендуем попробовать линтер CloudFormation в VSCode, чтобы увидеть некоторые из этих ошибок встраиваемыми при создании шаблонов вместе со ссылками на автозаполнение и документацию
Комментарии:
1. существуют ли какие-либо компоновщики, которые отображали бы ошибки при вводе, а не при запуске из командной строки?
2. Спасибо, это решило мою проблему. Поддержал ваш ответ, конечно 🙂 В моем случае это было AWS::IAM:Роль — отсутствует двоеточие перед ролью.
3. Удивительно, сколько проблем создает эта небольшая опечатка в CF и сколько времени требуется, чтобы получить (довольно расплывчатое) сообщение об ошибке. Мне обязательно нужно будет схватить линтер!
4. Это должно быть отмечено как правильный ответ.